Email

如果無法將電子郵件發送到某個地址,使用 mail 命令的 postfix 是否會報告?

  • March 28, 2016

我正在編寫一個程序,該程序將使用postfixmail -s命令發送外部電子郵件,我需要驗證電子郵件是否已發送到指定地址。

在這種情況下,我很好奇是否postfix會立即報告一個錯誤,如果電子郵件發送失敗,我可以作為返回碼獲得,或者postfix只要輸入有效的電子郵件(example@example.com)就會說它是成功的然後在日誌文件中報告或導致電子郵件無法發送?

另外,如果網路不通,postfix只要使用有效的電子郵件地址,仍然會返回成功,還是會立即報告失敗?

如果您為日誌設置了 postfix 配置,您可以檢查日誌以了解消息的狀態。

它將包含以下資訊:

Mar 25 16:07:40 serverName postfix/smtp[3113]: B169ZZZ24F: host foo.net.mx1.name.foo.net[1.2.3.4] refused to talk to me: 421 Offline: HELO/FDNS

Mar 25 16:07:40 serverName postfix/smtp[3036]: 7ZZZFC2440: to=<customer@yahoo.com>, relay=mtaz.amz.yahoodns.net[66.196.118.35]:25, delay=11, delays=0.35/0/0.6/9.9, dsn=2.0.0, status=sent (250 ok dirdel)

Mar 25 16:07:36 serverName postfix/smtp[3073]: ZZZZ3C623E: to=<user@customer.com>, relay=none, delay=0.55, delays=0.35/0/0.2/0, dsn=5.4.4, status=bounced (Host or domain name not found. Name service error for name=customer.com type=A: Host not found)

可以通過腳本檢索此資訊,例如:(不是我的工作。感謝誰,每天都在使用。)

grep 'status=sent' /var/log/mail.log | awk '{print $7}' | sed 's/to=<//g' | sed 's/>,//g'

grep 'status=deferred' /var/log/mail.log | awk '{print $7}' | sed 's/to=<//g' | sed 's/>,//g'

grep 'status=bounced' /var/log/mail.log | awk '{print $7}' | sed 's/to=<//g' | sed 's/>,//g'

引用自:https://unix.stackexchange.com/questions/272617