我收到一些类似这样的错误消息:
Jan 28 17:20:47 halk postfix/smtpd[29413]: NOQUEUE:
reject: RCPT from mail.m2osw.com[138.197.205.139]:
504 5.5.2 <SRS1=R3xB=m2osw.com==hj4N=ZL=lime.ocn.ne.jp=@com>:
Sender address rejected: need fully-qualified address;
from=<SRS1=R3xB=m2osw.com==hj4N=ZL=lime.ocn.ne.jp=@com>
to=<[email protected]> proto=ESMTP helo=<m2osw.com>
我不太确定我是否理解尖括号之间的“电子邮件”地址:
SRS1=R3xB=m2osw.com==hj4N=ZL=lime.ocn.ne.jp=@com
在我看来这看起来像是垃圾,但也许它是一种信封?
原始发件人如下:
From: western union <"westernunion1."@lime.ocn.ne.jp>
(这显然是垃圾邮件,但非垃圾邮件也会发生这种情况。)
据我所知,我的设置之前运行良好,但我将我的一个邮件服务器升级到了最新的 postfix(Ubuntu 16.04 而不是 14.04)。存档服务器不久前也升级了。
当我从 Gmail 向自己发送电子邮件时,会发生此错误。然后 Gmail 收到退回邮件。
设置如下:
+------------------+ +------------------+
| | | |
| Client |--->| Main Server |
| | | |
+------------------+ +------------------+
|
v
+------------------+
| |
| Archive Server |
| |
+------------------+
在主服务器,电子邮件将按预期工作。当电子邮件到达存档服务器。
当从一个 Postfix MTA 转发到另一个 Postfix MTA 时,是否存在某些东西可能发生了改变,从而“破坏”了电子邮件地址?
答案1
我不这么认为,您分享的日志显示一切正常,并且 Postfix 运行良好。如果您需要了解有关正在发生的事情的更多信息,请将以下内容添加到 main.cf:
error_notice_recipient = [email protected]
delay_notice_recipient = $error_notice_recipient
bounce_notice_recipient = $error_notice_recipient
2bounce_notice_recipient = $error_notice_recipient
#The list of error classes that are reported to the postmaster
notify_classes = bounce, delay, policy, protocol, resource, software
拒绝的原因是以下其中一行:
reject_non_fqdn_helo_hostname,
reject_non_fqdn_recipient
我希望这会有所帮助
答案2
好吧,我找到了罪魁祸首。这些“奇怪”的电子邮件地址以 SRS 开头,这指向postfix
可以通过 使用的SPIF 支持postsrsd
。postsrsd
守护程序作者建议在您的postfix/main.cf
文件:
sender_canonical_maps = tcp:localhost:10001
sender_canonical_classes = envelope_sender
recipient_canonical_maps = tcp:localhost:10002
recipient_canonical_classes= envelope_recipient,header_recipient
显然,这会生成电子邮件地址的信封。该信封的规格为:
[email protected]
在我的案例中,问题在于后面的域名@
是动态生成的。这意味着要获取完整的计算机主机名并删除名字。因此,如果我使用m2osw.com
主机名,postsrsd
最终会使用com
域名。换句话说,我最终会得到如下所示的电子邮件地址:
...@com
显然,@com
不是一个有效的域名。
守护进程postsrsd
使用在文件中找到的一些定义:
/etc/default/postsrsd
我们在那里找到一个名为的变量SRS_DOMAIN
。通过使用正确的域名设置该变量:
SRS_DOMAIN=m2osw.com
电子邮件如预期般收到信封,错误也消失了。(即,我们在旧的“主服务器”上已正确设置。我们在传输时错过了这一点。)