Email
如果無法將電子郵件發送到某個地址,使用 mail 命令的 postfix 是否會報告?
我正在編寫一個程序,該程序將使用
postfix
該mail -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'