mail() 发送/未发送异常

mail() 发送/未发送异常

我的服务器上通过 mail() 发送的一些电子邮件没有到达目的地。我检查了邮件日志,自 8 月 5 日起没有日志条目。我不确定从哪里开始查找可能的问题。我已确认一些邮件正在发送/接收。

答案1

验证您的邮件日志

使用您喜欢的编辑器打开/var/log/mail.log/var/log/mail如果您只想查看最后的条目,您可以使用tail -f /var/log/mail,您也可以发送电子邮件并运行 tail 命令来跟踪它。

验证 sendmail 是否已启动并正在运行

ps -auxf |grep sendmail

停止并重新启动 sendmail,以确保其中没有错误,并刷新数据库

/etc/init.d/sendmail stop
/etc/init.d/sendmail start

笔记:此命令可能因操作系统而异;


验证地址解析和别名

/usr/sbin/sendmail  -bv  -v  -oL10  address [address...]

(验证模式)选项-bv使 sendmail 验证地址而不收集或发送消息。

(详细)标志-v导致 sendmail 报告别名扩展和重复抑制。

(日志级别)选项-oL10将日志级别设置为 10。在日志级别 10 及以上,sendmail-bv将报告它解析收件人地址的邮件程序和主机。

对于解析为 IPC 邮件程序的主机,使用验证模式时不会报告 MX 主机,因为直到实际尝试投递时才会收集 MX 记录。

如果地址没有按预期解析,则可能需要修改以下一项或多项内容:

  • sendmail 配置文件。
  • 生成文件类的文件或程序。
  • 名称服务器配置。
  • UUCP 配置。

有关配置文件如何重写收件人地址的更多详细信息由地址测试模式提供:

/usr/sbin/sendmail -bt


联系 sendmail 守护进程来验证连接

可以使用以下命令直接与 sendmail 守护程序和其他 SMTP 服务器通信:

telnet  host  25

这可用于确定主机上是否正在运行 SMTP 服务器。如果没有,您的连接尝试将返回“连接被拒绝”。

一旦与 sendmail 守护程序建立连接,就可以使用 SMTP VRFY 命令来确定服务器是否可以路由到特定地址。例如,

telnet yourdomain.com 25
220 yourdomain.com SMTP server ready
vrfy webnet
250 Webnet <[email protected]>
vrfy [email protected]
554 [email protected]: unable to route to domain anotherdomain.com
quit
221 yourdomain.com SMTP server shutting down

并非所有 SMTP 服务器都支持 VRFY 和 EXPN 命令。

答案2

您可能希望使用 tshark 之类的工具来确认数据是否已离开您的设备并被传送。如果您有可用的智能主机,请尝试使用智能主机,最好是您的 ISP 的智能主机,同时查看 SRV 记录

相关内容