运行后,postqueue -p
我有时会发现拼写错误的电子邮件地址,
有没有办法更改邮件的接收地址(信封地址),
以便可以投递。
例如:
postqueue -p
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
A78C42189B1 2523 Thu Jul 25 14:53:57 [email protected]
(connect to tellia.com[141.8.224.25]:25: Connection timed out)
[email protected]
-- 2 Kbytes in 1 Request.
我想取货A78C42189B1
,并将地址更改[email protected]
为[email protected]
答案1
到目前为止我发现我可以:
- 使用
postcat -q A78C42189B1
我可以获得排队项目的副本 从元数据中清除消息,postcat 消息可能看起来像:
*** ENVELOPE RECORDS deferred/A/A78C42189B1 *** message_size: 2523 248 2 0 2523 message_arrival_time: Thu Jul 25 14:53:57 2013 create_time: Thu Jul 25 14:53:57 2013 named_attribute: rewrite_context=local sender_fullname: nobody sender: FROM:[email protected] original_recipient: [email protected] recipient: [email protected] *** MESSAGE CONTENTS deferred/A/A78C42189B1 *** mail headers... mail body... *** HEADER EXTRACTED deferred/A/A78C42189B1 *** named_attribute: notify_flags=1 original_recipient: [email protected] done_recipient: [email protected] *** MESSAGE FILE END deferred/A/A78C42189B1 ***
使用文本编辑器或 sed 清除后缀页眉和页脚,以便文件中只留下邮件头和邮件正文。
使用 sendmail 将邮件发送到新收件人
sendmail [email protected] < edited_mail_file
从队列中删除原始邮件
postsuper -d mailID
如果有人有 sed 技能,可以剪切邮件头和正文,那么前 3 个步骤应该能够结合在一起
答案2
是的,您描述的方法可以处理滞留在邮件队列中的邮件。
虽然这并不是您具体问题的真正答案,但我想分享我使用您的提示来(重新)解决一些常见拼写错误的域名的方法:
在 postfix/main.cf 中:
recipient_canonical_maps = regexp:/etc/postfix/maps/recipient_canonical
文件 /etc/postfix/maps/recipient_canonical:
/^(.*@)htomail.com$/ ${1}hotmail.com
/^(.*@)homail.com$/ ${1}hotmail.com
/^(.*@)hotmai.com$/ ${1}hotmail.com
/^(.*@)hotmai.co$/ ${1}hotmail.com
/^(.*@)hotma.com$/ ${1}hotmail.com
/^(.*@)gmial.com$/ ${1}gmail.com
/^(.*@)gmail.co$/ ${1}gmail.com
/^(.*@)gmail.nl$/ ${1}gmail.com