如何验证邮件是否通过 postfix 成功发送?

squ*_*elx 6 postfix

我每天都被要求验证我们的服务器是否成功发送了邮件(因为客户端抱怨他将其发送给 xy 而他的收件人从未收到过)。这很可能不是我们的错,而是收件人邮件服务器丢弃/标记邮件为垃圾邮件。所以我的问题是如何验证(如果可能的话)邮件是从我们这边通过 postfix 发出的?

如果我搜索 mail.log.* 文件,我会得到如下条目:

Sep 14 06:27:10 mailhost postfix/qmgr[21603]: 14B40C65A1: from=<user@domain.com>, size=1372, nrcpt=1 (queue active)
Sep 14 06:27:10 mailhost postfix/qmgr[21603]: 11673C5FDA: from=<user@domain.com>, size=1469, nrcpt=1 (queue active)
Run Code Online (Sandbox Code Playgroud)

这些信息是完全无价的。通过这个,我看到的是 user@domain.com 在 6:27 向某人发送了一封电子邮件,并且它被邮件系统排队(不是它被发送出去之后发生了什么)。

是否可以使用 postfix 记录这些事件?即使需要增加错误日志,我也需要这些信息。

谢谢

Sve*_*ven 7

默认情况下,Postfix 为它处理的一封外发邮件创建至少两个日志行:用于接收部分和发送部分。

Sep 15 10:30:51 mail postfix/qmgr[1499]: F1FBEC0666: from=<localuser@local.domain>, size=251, nrcpt=1 (queue active)
Sep 15 10:30:51 mail postfix/smtp[25011]: F1FBEC0666: to=<remoteuser@remotedomain>, relay=xxxxxx[yyyyyyy]:25, delay=0.83, delays=0.15/0.01/0.27/0.39, dsn=2.0.0, status=sent (250 Requested mail action okay, completed: id=xxxxxxxxxxx) 
Sep 15 10:30:51 mail postfix/qmgr[1499]: F1FBEC0666: removed
Run Code Online (Sandbox Code Playgroud)

我的猜测是您搜索的是本地用户,而不是远程用户,因此没有看到第二行。grep如果您真的不知道您在寻找什么,more或者less在那里更有用,请不要使用。