Exim 地址重写不起作用

Exim 地址重写不起作用

在我无法让我的 Postfix 服务器进行正确的重写后,我尝试使用 Exim 服务器,但在简单的重写中再次失败。

我使用了默认配置,在其中添加了变量,并创建了一个新的路由器,用于将邮件发送到我的私有网络上的两个本地邮件服务器。此路由器是处理线中的第一个,配置如下:

manualroute_domains:
  driver = manualroute
  domains = lsearch;/etc/exim/relay_hosts
  route_data = ${lookup{$domain}lsearch{/etc/exim/relay_hosts}}
  transport = remote_smtp
  verify_recipient = false
  verify_sender    = false

从域1到域2的测试邮件已成功传递。

现在我开始在“开始重写”块创建我的第一个重写规则:

[email protected] [email protected] SFfrs

测试结果与我想要的域名重写方式完全一致,但是当我尝试从 domain1 发送邮件时,使用网关作为我的智能主机,收到的邮件总是以 domain1.com 结尾,并且在邮件头中找不到新地址。exim -brw [email protected]

我是否需要在路由器的某个地方声明重写的使用?我想在重写中添加条件,因此header_rewrite在路由器上使用对我来说不是选项。

提前感谢大家对我的配置提出的想法或意见!

谨致问候 TooCloudy

答案1

您在错误的时间进行重写。S重写选项指定在收到传入地址时对其进行重写。模式必须与命令中收到的整个地址匹配MAIL FROM。您可能希望在数据处理期间读取标题时进行重写。

请注意,重写的地址可能会触发垃圾邮件规避措施。特别是,该域的 SPF 记录可能不会将您的主机列为允许的发件人。

尝试使用类似的重写规则:

*@example.com      [email protected]       Ffrs

如果您想要重写单个地址,/etc/email-aliases请使用其中一条重写规则。

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

您可能需要创建/etc/email-addresses。虽然它通常受支持,但很少使用。如果您的发件人都在本地域中,则上述规则将起作用,并且应该为所有本地域重写。

如果您需要根据域以及 local_part 进行重写,则需要为虚拟域进行配置。如果您已定义域列表,则virtual_domains以下重写规则应根据电子邮件别名格式的文件进行重写,/etc/exim4/virtual其名称类似于email-example.com

*@+virtual_domains "${lookup{${local_part}}lsearch{/etc/exim4/virtual/email-${domain}}\
               {$value}fail}" Ffrs

或者,您可以使用如下规则匹配文件[email protected]中的域限定地址:/etc/aliases

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

您可以按照 E 中的说明测试重写规则xim4 规范重写章节使用如下命令:

exim -brw [email protected]

别名和 etc-aliases 都应该包含如下行:

local_user:  [email protected]

相关内容