Postfix:改变排队消息中的发件人

完成重新安装后,我们得到了一个configuration问题:发件人地址错了,一些收件人(邮件服务器)拒绝了他们。

所以在Postfix队列中有一堆邮件卡住了。

理想情况下,直接在排队邮件中更改发件人地址,然后清空队列将是最佳select。

我试过这个解决这个问题的答案 。 但消息似乎并不容易在我有(2.11.0)的版本中修改。

例如,没有/var/spool/mqueue目录,而是/var/spool/postfix/...

 active bounce corrupt defer deferred dev etc flush hold incoming lib maildrop pid private public saved trace usr 

而利息则deferred 。 我试图修改一些文件,在那里用正确的域名更改错误的域名(并小心确保只有这些域名被更改)。

但是,那些邮件被转移到了corrupt ,这意味着一个简单的文本变化似乎不起作用(用vi完成)。

任何其他更清洁的方式来改变排队的邮件中的发件人?

我试过这个解决这个问题的答案 。 但消息似乎并不容易在我有(2.11.0)的版本中修改。

例如,没有/ var / spool / mqueue目录,而是/ var / spool / postfix / …

我想澄清两件事情。

  • 首先,这个答案适用于sendmail不是后缀。
  • 其次,直接操纵原始队列文件根本不被支持。

所以,你在这里有几个select

1. smtp_generic_maps参数

这个答案启发了这个优秀的答案 。 它会自动将旧地址改写为新地址。 您可以定义文件来将旧地址映射到新地址。

 /etc/postfix/main.cf: smtp_generic_maps = hash:/etc/postfix/generic /etc/postfix/generic: [email protected] [email protected] 

不要忘记postmap /etc/postfix/generic并运行postfix reload

  • 上行:您不需要重新发送消息
  • 下行: Postfix将重写与[email protected]匹配的发件人和收件人地址。

2. sender_canonical_address

为了克服第一个选项的缺点,你可以使用sender_canonical_maps 。 这个解决scheme基于Postfix作者build议 。 与第一个选项相同,您可以定义将旧地址映射到新地址的文件。

 /etc/postfix/main.cf: sender_canonical_maps = hash:/etc/postfix/sender_canonical /etc/postfix/sender_canonical: [email protected] [email protected] 

运行postmap /etc/postfix/sender_canonical然后运行postfix reload 。 由于后缀队列的stream向,必须使用命令postsuper -r queueid重新排列受影响的队列

  • 上行: Postfix不重写收件人地址。
  • 下行:您必须重新安排所有受影响的信息。 但是,您可以使用单个命令postsuper -r ALL deferred所有延迟postsuper -r ALL deferred

3.直接操作postfix队列

这是手动旧的方式来修改队列进行高级处理。 这个答案来自postfix-users邮件列表

简而言之

  • 提取队列

     # postsuper -h queueid # postcat -qbh queueid > tempfile.eml # vi tempfile.eml 
  • 重新提交队列并删除旧的队列

     # sendmail -f $sender $recipient < tempfile.eml # postsuper -d queueid 

有关上述命令的文档,请参阅此页面

注意:
来自postfix-users邮件列表的原始解决scheme,使用postcat -q queueid >tempfile来提取队列。 该命令将提取队列的标题,正文和元信息。 正如下面的Azendale所指出的 , sendmail会因为元信息而拒绝发送这个格式不正确的邮件。

使用-bh参数以及q参数将使postcatfilter仅将输出过滤到头部和主体,不包括元信息。 这样做的一个好处是tempfile是大多数电子邮件客户端识别为.eml格式的格式,允许您查看生成(编辑)的消息。