如何防止当远程主机无法访问时 sendmail 丢失邮件

如何防止当远程主机无法访问时 sendmail 丢失邮件

我有一个包含多台主机的小域。Sendmail 设置为将所有本地生成的邮件(大部分root@localhost由 cron 作业生成的邮件)转发到中央“邮件中心”,使用

define(`MAIL_HUB', `somehost.mydomain.org')

sendmail.mc。最近,我的远程端邮件服务器出现了问题,因此它无法接受来自此主机的邮件。这导致 sendmail 丢弃了所有邮件。发件人/var/log/maillog

sendmail[3133]: n4461S5s003133: n4461S5t003133: return to sender: Service unavailable
sendmail[3133]: n4461S5t003133: to=root, delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=34772, relay=XXXXX.org.  [91.184.38.153], dsn=5.0.0, stat=Service unavailable
sendmail[3133]: n4461S5s003133: Losing ./qfn4461S5s003133: savemail panic

在此期间生成的所有邮件均被删除并永远丢失。

我该如何防止这种情况发生?理想情况下,我希望 sendmail 稍后再试一次,或者最终将邮件保存到本地文件作为最后的手段。

答案1

您的服务器在这里几乎做了“正确”的事情。

远端返回“5xx”类错误消息,表明消息传递永久失败,因此您的一端完全中止了传递。

为了让您的服务器继续对消息进行排队,它必须收到“4xx”类消息,表示发生了暂时故障。

为了防止邮件永远丢失,您需要确定导致“savemail panic”错误的原因 - 这些邮件应该被退回给发件人。

答案2

通常,sendmail应将任何失败的发送尝试保存在本地假脱机文件中,并在最多五天内重试,因此可能存在一些配置错误。根据这些参考资料:

您需要确保您没有(来自以上参考):

  • 缺少邮政局长别名/etc/aliases
  • 硬盘已满
  • 邮政局长的邮件线轴拥有错误的所有权
  • 邮件管理员的文件mbox超过 2GB,procmail无法发送电子邮件

此外,请确保您没有遇到问题selinux。可能是selinux阻止sendmail保存文件的原因。电子邮件绝不会完全丢失——最坏的情况是它会被退回给原始发件人和邮件管理员。如果电子邮件完全丢失,则可能是配置错误或 sendmail 中的错误。

这个错误的含义是,sendmail尝试在假脱机文件中传递消息./qfn4461S5s003133,但远程邮件服务器返回错误响应“服务不可用”。因此,本地sendmail尝试退回电子邮件。尝试这样做时出现问题,因此电子邮件被放弃。

这是电子邮件中 ​​CPU 双总线故障的等价物。即,响应致命错误(远程服务器不可用时间过长,导致 sendmail 放弃重试)而发生的致命错误(无法保存或退回电子邮件)。

相关内容