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

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

 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再试一次,或者最终将邮件保存到本地文件作为最后的手段。

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

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

为了让服务器继续对消息进行排队,它必须收到“4xx”类消息,表示暂时失败。

为了防止消息永远丢失,你需要确定是什么导致了“savemail恐慌”错误 – 他们应该刚刚被反弹回发件人。

一般来说, sendmail应该保存失败的发送尝试本地在假脱机文件,并重试长达五天,所以可能有一些configuration错误。 根据这些参考文献:

  • sendmail中的savemail恐慌
  • sendmail:savemail恐慌

你需要确保你没有(从上面的参考):

  • /etc/aliases缺lesspostmaster /etc/aliases
  • 硬盘已满
  • 邮局主pipe的邮件服务器拥有错误的所有权
  • postmaster的mbox文件超过2GB, procmail无法发送电子邮件

此外,请确保您没有遇到selinux问题。 selinux可能会阻止sendmail保存文件。 电子邮件不应该完全丢失 – 最坏的情况下,它应该被反弹到原来的发件人和邮政局长。 如果EMail完全丢失,则可能是configuration错误或sendmail中的错误。

在这种情况下,这个错误意味着sendmail试图在假脱机文件./qfn4461S5s003133发送消息,但远程邮件服务器返回错误响应“服务不可用”。 因此,本地sendmail试图反弹电子邮件。 试图这样做时出了点问题,所以电子邮件被放弃了。

这是一个CPU的双重总线故障相当于电子邮件。 也就是说,响应致命错误(远程服务器不可用足够长的时间,导致sendmail放弃重试),发生致命错误(无法保存或popup电子邮件消息)。