我正在编写一个程序,该程序将postfix
与mail -s
命令一起使用来发送外部电子邮件,并且我需要验证电子邮件是否已发送到指定的地址。
在这种情况下,我很想知道是否postfix
立即报告了一个错误,如果发送电子邮件失败,我将返回错误,或者postfix
只要输入了有效的电子邮件([email protected]),它就会说成功了然后稍后在日志文件中报告还是无法发送电子邮件?
另外,如果网络中断,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=<[email protected]>, 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=<[email protected]>, 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'
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句