前提(虚构名称)
foo
是一个外部的域,其中 MTA 不受我的控制;foo
有防晒指数设置使得mine
服务器无法发送电子邮件@foo
;bar
是另一个外部域,其中 MTA 也不在我的控制范围内;bar
做SPF 检查对收到的邮件进行明确拒绝失败(RFC 建议和常见做法);mine
是本地域名其中 MTA 是我正在配置的 exim,它已经运行了好几年,但直到现在我们才注意到异常行为;List <list@mine>
是邮件列表其中一个Bob <bob@foo>
是成员(注意:实际上这也可以是一个“转发地址”,但用列表来思考会更简单);list@mine
成员存储在mysql上数据库在其他地方进行管理(这意味着它不是一个静态列表);Alice <alice@bar>
想要发送一封电邮到List <list@mine>
。
我需要的
简洁版本
如何配置(无需重新编译)exim,以便Alice
可以发送一封电子邮件到,List
该电子邮件将被重定向到Bob
。
长版本
@mine
这种配置已经工作了好几年,适用于发送方或所有接收方都是的情况@mine
。配置如下:
open_lists:
driver = redirect
data = ${lookup mysql{...}}}
forbid_pipe
forbid_file
no_more
什么不起作用:发送者和接收者都是外部的情况。
为什么:出于某种原因(这就是我所说的不当行为),exim 保留了原始的信封发件人(又名 RFC 中的 MAIL FROM),bar
由于 SPF 失败而被拒绝。
我知道脊髓灰质炎病毒和它的在exim上的实验实现。然而,除了实验性之外,它需要重新编译才能启用。如果有更新的 ubuntu,那就不会很糟糕了苯甲酸已经准备好编译好的包,但我还没有找到。
我也知道进出口银行的改写它有一个用于更改信封发件人 (From) 的标志F
,但该标志不能与 一起使用headers_rewrite
。它仅在重写部分可用。
基本上我正在寻找一种方法来修复信封发件人在这种情况下list@mine
,无论是通过重写还是 SRS,它都必须是可维护的。
答案1
你可能想尝试签署返回路径地址。 我的实现假设本地域,但我见过类似的方法用于转发地址。处理退回邮件稍微困难一些,因为您需要从签名地址重建目标地址。
如果您要转发外部地址,您可能需要添加发件人或重新发送标头。这可能会解决收件人系统验证发件人地址的问题。
我正在使用 Ubuntu 的 Exim 重型版本,在某些情况下它会添加一些重新发送的标头。