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

Esa*_*emo 9 email exim

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

问题是:

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

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

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

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

Bil*_*hor 12

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

尝试一行/etc/email-addresses喜欢:

 myapp:   donotreply@example.com
Run Code Online (Sandbox Code Playgroud)

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

 donotreply:    :blackhole:
Run Code Online (Sandbox Code Playgroud)

使用Reply-to:标题允许收件人回复邮件。

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

*@+local_domains "${lookup{${local_part}}lsearch{/etc/email-addresses}\
                  {$value}fail}" Ffrs
Run Code Online (Sandbox Code Playgroud)


Kon*_*bas 11

begin rewrite
myapp@myserver.mydomain   legal.user@myserver.mydomain   SFfrs
Run Code Online (Sandbox Code Playgroud)

这些标志具有以下含义:

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

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

  • 这就是我让它工作的方式,除了:在规则的开头必须有一个 `^`,因为 `S` 除了一个正则表达式 (3认同)