postfix/cleanup 糟糕的简单重写

postfix/cleanup 糟糕的简单重写

我使用监控程序 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]
    

相关内容