Exim邮件列表与远程收件人

前提(虚构的名字)

  • foo是一个外部域,其中MTA不在我的控制之下;
  • @foo SPF设置,使mine服务器不能发送电子邮件作为@foo ;
  • bar另一个外部领域,其中的MTA也是我无法控制的;
  • barSPF检查传入的邮件拒绝明确的失败(RFCbuild议和惯例);
  • mine是一个本地域 ,其中MTA是我正在configuration的exim,它已经工作了好几年了,但是现在我们才注意到了一个不正常的行为。
  • List <list@mine>Bob <bob@foo>是其成员的邮件列表 (注意:这也可能是一个“转发地址”,但用列表来思考它更简单)。
  • list@mine成员存储在一个mysql 数据库中 ,这个数据库是在别处pipe理的(这意味着它不是一个静态列表)。
  • Alice <alice@bar>想要发送一封电子邮件 List <list@mine>

我需要的

简洁版本

如何configuration(无需重新编译)exim,以便Alice可以发送电子邮件到List将被redirect到Bob

长版

对于发件人是@mine或所有接收者都是@mine的情况,这种configuration已经工作了好几年了。 有了这样的configuration:

 open_lists: driver = redirect data = ${lookup mysql{...}}} forbid_pipe forbid_file no_more 

什么不起作用 :发送者和接收者都是外部的情况。

为什么 :出于某种原因(这是我所说的不当行为),exim保留了原始的信封发件人 (又名邮件来自每个RFC),这是由于SPF失败而拒绝的。

我意识到SRS及其在exim上的实验性实施 。 然而,除了实验,它需要重新编译启用。 如果有一个更新的Ubuntu编译包准备好了,但是我还没有find一个。

我也知道exim的重写有一个标志F来改变信封发送者(From),但是这个标志不能和headers_rewrite一起使用。 它只在重写部分可用。

基本上我正在寻找一种方法来解决在这种情况下,希望是list@mine信封发件人 ,通过重写或SRS,它只能维护。

您可能要尝试签署返回path地址。 我的实现假定本地域,但我已经看到类似的方法用于转发地址。 处理退回消息有点难度,因为您需要从签名地址重build目标地址。

如果您正在转发外部地址,则可能需要添加发件人或重新发件人标题。 这可能会解决收件人系统validation发件人地址的问题。

我正在使用Ubuntu的重型生成的Exim,在某些情况下,它会添加一些resent标头。