完成重新安装后,我们得到了一个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 / …
我想澄清两件事情。
所以,你在这里有几个select
这个答案启发了这个优秀的答案 。 它会自动将旧地址改写为新地址。 您可以定义文件来将旧地址映射到新地址。
/etc/postfix/main.cf: smtp_generic_maps = hash:/etc/postfix/generic /etc/postfix/generic: [email protected] [email protected]
不要忘记postmap /etc/postfix/generic
并运行postfix reload
[email protected]
匹配的发件人和收件人地址。 为了克服第一个选项的缺点,你可以使用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
重新排列受影响的队列
postsuper -r ALL deferred
所有延迟postsuper -r ALL deferred
这是手动旧的方式来修改队列进行高级处理。 这个答案来自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格式的格式,允许您查看生成(编辑)的消息。