验证:从本地网络发送邮件时更改发件人地址


8

我们在网站上有一个有效的exim设置,用户可以在其中发送和接收邮件。我们正在尝试将服务器设置为使用电子邮件将一些警告和错误发送到本地网络之外的地址。

问题是:

发送邮件的程序使用运行时使用的用户名和服务器的本地主机名发送邮件。这将导致邮件的发件人格式为:myapp@myserver.mydomain。Exim将这些邮件发送到ISP的SMTP服务器,由于这些邮件具有非法或不可验证的发件人(内部地址),该服务器将拒绝这些邮件。

我想在以下情况下应该配置exim以重写发送方:

  • 发件人的域在本地网络上
  • 接收者的域在本地网络之外

我尝试在exim配置中设置某种重写,但没有设法使其生效。我会展示我尝试过的内容,但是上次访问该网站时我没时间了,不得不恢复到原始版本,丢失了所有尝试的更改。

Answers:


9
begin rewrite
myapp@myserver.mydomain   legal.user@myserver.mydomain   SFfrs

这些标志具有以下含义:

  1. S-在SMTP时进行所有重写。这意味着,随后的所有标志都会随着它们所应用的数据的传入而立即完成,而不会延迟到以后。
  2. F-从字段重写信封。
  3. f-重写From:标头字段。
  4. r-重写Reply-To:标头字段。
  5. s-重写Sender-To:标头字段。

阅读Exim规范的第31章,以获取有关消息重写的更多详细信息


1
这就是我如何开始工作,除了:必须有一个^在规则的开始,作为S节选一个正则表达式
埃萨Varemo

1
s应该是“ Sender:”标题,而不是“ Sender-To:”(并且对帖子进行编辑的改动太小了)
Gert van den Berg

11

该文件/etc/email-addresses应处理该问题。这是Exim分发的标准部分。您将需要为每个发送电子邮件的本地用户配置一条记录。

尝试以下一行/etc/email-addresses

 myapp:   donotreply@example.com

在MX服务器上,添加一个别名,例如:

 donotreply:    :blackhole:

使用Reply-to:标题使收件人可以回复邮件。

该文件/etc/email-addresses使用以下重写代码,该代码应位于rewrite配置文件部分的开头。

*@+local_domains "${lookup{${local_part}}lsearch{/etc/email-addresses}\
                  {$value}fail}" Ffrs

/etc/email-addresses我的服务器上不存在。我可以直接创建它,还是表明它丢失了?
Esa Varemo

@EsaVaremo Grep您的配置文件email-addresses,或检查您的配置文件的重写部分。这可能是您的发行版中未配置的。
BillThor

我尝试了greplocate并寻找了几man页,但没有找到任何东西。应该在中定义文件exim.conf吗?
Esa Varemo

@EsaVaremo我的回复末尾的行应位于的重写部分exim.conf。如果缺少,请添加它。确保变量local_domains包含您的域。
BillThor

我上次发表评论后不久便注意到您的编辑。无论出于什么原因,我都没有使它起作用,所以我用了另一个答案,因为我时间已不多了。我毫不怀疑这是对的,我大概只是​​输错了一些/配置了某些内容……
Esa Varemo

1

/etc/email-addresses当您只需要为每个用户名关联一个电子邮件地址时,该方法非常方便。但是,如果您的用户需要发送具有多个地址的电子邮件,则/etc/email-addresses每次都必须进行修改,并且不可避免地会使用错误的地址。

另一种方法是使用exim4命令及其-f选项发送电子邮件:

$ cat email|/usr/sbin/exim4 -f myapp@example.com recipient@example.com

请注意,要使该-f选项起作用,您需要您的用户成为exim的受信任用户,或者需要exim接受他作为允许的不受信任发件人。

在我的情况下,由于使用了通配符,后者是默认的/etc/exim4/conf.d/main/02_exim4-config_options :

untrusted_set_sender = *

另一种解决方案是在以下行中添加/etc/exim4/conf.d/main/00_local_settings(假设exim的拆分配置,如果尚不存在,则创建它):

MAIN_TRUSTED_USERS = yourusername

这两个选项都需要重新加载exim的配置。在Debian下:

# dpkg-reconfigure exim4-config
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.