我使用监控程序 munin,当我的服务器出现问题时,它会通过电子邮件提醒我。它以 的形式发送电子邮件munin
。
通常情况下,当这样的电子邮件要在互联网上传递时,当postfix/cleanup
被调用时,它会要求trivial-rewrite
执行改写,应附加realdomain.tld
到不完整的发件人地址。
似乎不行,因为我的 Postfix SMTP 客户端随后尝试发送包含From: munin@thehostname
标头的电子邮件,而 Google 并不喜欢这样:
Jul 22 10:00:15 thehostname postfix/pickup[3167]: 979BD1E447E: uid=110 from=<munin@thehostname>
Jul 22 10:00:15 thehostname postfix/cleanup[9609]: 979BD1E447E: message-id=<[email protected]>
Jul 22 10:00:15 thehostname postfix/qmgr[3276]: 979BD1E447E: from=<munin@thehostname>, size=454, nrcpt=1 (queue active)
Jul 22 10:00:16 thehostname postfix/smtp[9611]: 979BD1E447E: to=<[email protected]>, relay=ASPMX.L.GOOGLE.COM[173.194.67.27]:25, delay=0.49, delays=0.07/0/0.12/0.3, dsn=5.7.1, status=bounced (host ASPMX.L.GOOGLE.COM[173.194.67.27] said: 550-5.7.1 [9.8.7.6 1] Our system has detected an unusual rate of 550-5.7.1 unsolicited mail originating from your IP address. To protect our 550-5.7.1 users from spam, mail sent from your IP address has been blocked. 550-5.7.1 Please visit http://www.google.com/mail/help/bulk_mail.html to review 550 5.7.1 our Bulk Email Senders Guidelines. x12si10440172wia.27 - gsmtp (in reply to end of DATA command))
Jul 22 10:00:16 thehostname postfix/cleanup[9609]: 372F91E4483: message-id=<[email protected]>
Jul 22 10:00:16 thehostname postfix/qmgr[3276]: 372F91E4483: from=<>, size=3167, nrcpt=1 (queue active)
Jul 22 10:00:16 thehostname postfix/bounce[9614]: 979BD1E447E: sender non-delivery notification: 372F91E4483
Jul 22 10:00:16 thehostname postfix/qmgr[3276]: 979BD1E447E: removed
Jul 22 10:00:16 thehostname postfix/local[9617]: 372F91E4483: to=<munin@thehostname>, relay=local, delay=0.13, delays=0.05/0.01/0/0.06, dsn=2.0.0, status=sent (delivered to command: procmail -a "$EXTENSION")
Jul 22 10:00:16 thehostname postfix/qmgr[3276]: 372F91E4483: removed
我不知道为什么简单重写对于用户来说,它没有按预期工作munin
,为什么在互联网上发送电子邮件之前没有获得正确的发件人地址。
其他程序如fail2ban
成功发送电子邮件并被重写为[email protected]
......
这是我的配置中有趣的部分:
myhostname = realdomain.tld
mydomain = thehostname
mydestination = localhost.localdomain, localhost, $mydomain, $myhostname
myorigin = $myhostname
mynetworks =
relayhost =
我想重写过程中一定有一些我不明白的地方!
编辑
我发现这个一篇文章谈论后缀地址重写。
改写用户到用户@$myorigin
此功能由布尔值控制追加到 myorigin参数(默认值:yes)。目的是使 $myorigin 中每台机器上的用户得到一致的处理。
我没有改变追加到 myorigin参数,应该设置为“yes”。$myorigin 设置为 realdomain.tld,但是重写出错,选择了 $mydomain。
答案1
从第一行日志开始
Jul 22 10:00:15 thehostname postfix/pickup[3167]: 979BD1E447E: uid=110 from=<munin@thehostname>
我们可以得出结论,munin 守护进程将发送方设置为munin@thehostname
不仅仅是munin
(没有域部分)正如您所假设的那样。
作为证明,我通过 sendmail CLI 发送电子邮件
$ mail [email protected]
Subject: test
test
上述命令将在/maildrop中添加队列queue_directory
。运行postcat命令查看队列内容
$ sudo postcat -q 5A1AD347819
*** ENVELOPE RECORDS maildrop/5A1AD347819 ***
message_arrival_time: Thu Oct 9 23:02:43 2014
named_attribute: rewrite_context=local
sender_fullname: User
sender: myuser
recipient: [email protected]
*** MESSAGE CONTENTS maildrop/5A1AD347819 ***
To: [email protected]
Subject: test
test
*** HEADER EXTRACTED maildrop/5A1AD347819 ***
*** MESSAGE FILE END maildrop/5A1AD347819 ***
在这种情况下,发件人只有myuser
域部分。这里是发送时的邮件日志条目。
Oct 9 23:05:11 web postfix/pickup[79682]: 9808834784D: uid=1010 from=<zagalo>
Oct 9 23:05:11 web postfix/cleanup[79684]: 9808834784D: message-id=<[email protected]>
Oct 9 23:05:11 web postfix/qmgr[79683]: 9808834784D: from=<[email protected]>, size=318, nrcpt=1 (queue active)
因此,简单重写与您的情况无关。您的电子邮件有正确的发件人地址,因此没有被重写。
解决方案?
- 告诉 munin 更改发件人地址(我快速谷歌搜索没有提供有用的结果)。
或者,设置 smtp_generic_maps 来为您的 munin 提供重写。
/etc/postfix/main.cf: smtp_generic_maps = hash:/etc/postfix/generic /etc/postfix/generic: munin@thehostname [email protected]