我们为几个客户运行一个电子邮件服务器,最近我们遇到了一个难题。
我们有一位用户向一个不正确的电子邮件地址发送了一封电子邮件。 错误地指定的域名不幸存在。 它没有MXlogging,并且域的Alogging到了一个不会说SMTP的服务器。 因此,电子邮件服务器试图传递,并没有成功,因为没有电子邮件服务器正在运行。
出于这个原因,我们的电子邮件服务器完全按照SMTP RFC的规定,在五天的时间内尝试重新投递,最终放弃并在发送失败5天后发送通知给发件人。
RFC5321(简单邮件传输协议)的4.5.4.1节说:
重试继续,直到消息被传送或发送者放弃; 放弃时间一般至less需要4-5天。
因此,在这种情况下,邮件服务器的默认configuration已经按照RFC进行操作,这意味着在这种情况下指定错误的电子邮件地址的用户在五天之后将不会收到通知。
在这一点上,我的老板曾经问过,是否有可能把放弃时间缩短到一些短的时间,比如1天。 他的推理是,最好先通知用户未交付,并且用户可以尝试在以后重新交付,或通过备用渠道交付。 这听起来像是一个合理的事情,但是总的来说,我对执行任何与RFC中的内容相矛盾的configuration更改保持警惕。
有什么非明显的原因,为什么把放弃时间缩短到24小时是一个不好的主意,而不仅仅是说“RFC另有说明”?
另外,在这种情况下,更大的电子邮件提供商(谷歌,微软,美国在线和雅虎)做了什么?
为什么不能放弃一天后发送邮件? 一个很好的理由是周末 。
电子邮件不是现在,从来没有,特别可靠 。 在互联网的早期,20世纪80年代,电子邮件完全有可能需要几天的时间才能到达目的地,某些networking链接不是24×7,而是昂贵的长途拨号电话分钟打电话给两个城市,不要花费从悉尼到洛杉矶的电话费),甚至超过业余无线电。 因此,传送电子邮件可能需要一段时间,协议必须处理不可靠和兼职的连接。 他们做得很好,但即使如此,邮件可能会延迟或丢失。
当然,今天电子邮件有一个可靠性错觉,如果只是因为底层的传输更可靠,许多不知情的人(像我们大多数用户)有一个可靠的期望 ,但这个期望不符合实际。 如果没有对电子邮件传递协议进行重大改变,邮件传输协议可能永远不会发生,但电子邮件与人类构build的任何内容一样,始终不会超过100%。
有时候,我们系统pipe理员会利用这一点。
例如,在周一到周五只有一个办公室的办公室里,如有必要,我可以在整个周末rest一下。 当然,实际上从来没有必要这么长时间,但是在罕见的情况下,我不得不把电子邮件停留24小时以上。
在这种情况下,如果您在24小时后放弃,则周五下午发送的电子邮件可能无法送达收件人。 发件人直到星期一上午才会发现,但是如果你一直在尝试,收件人会在星期一早上收到。
此外,适当地设置用户期望是非常重要的。 互联网电子邮件并非永远都不会100%可靠的事实需要被清楚地理解,即使我们认为这是事实。
RFC说,你应该继续尝试,正是因为事情出错了,而且如果可能的话,它的目的是最终交付邮件,但在某些时候你不得不放弃。 把这个减less到三天也许是可以的。 我一直认为五天的时间太长,无法等待24×7互联网上大部分邮件的发送。
至于你给定的邮件服务器:
Postfix可以在电子邮件延迟时通知发件人,但是此function默认是closures的。 这个警告应该足以让你的用户知道可能出现错误的地方,比如input错误的电子邮件地址,并且会比你的老板提出的24小时更早到达。
要启用它,请在main.cf中将delayed_warning_time设置为所需的值。
delayed_warning_time=4h
从版本3.0开始,Postfix可以在最终传递延迟的消息时通知这些发件人。 这也是默认情况下,因为它可能会导致大量的通知。 但是如果你想要这个,在main.cf启用confirm_delay_cleared 。
confirm_delay_cleared=yes
我build议不要改变放弃时间。 说收件人的办公室(现场电子邮件)在周末被“龙卷风”摧毁。 如果公司使用非现场磁带备份作为灾难恢复计划,那么最好相信从龙卷风到再次接受电子邮件需要超过24小时的时间。 在这种情况下5天将会太长,但这不是问题的根源。
无论是5天,48小时还是24小时,所有这些时间都过长,以致未能及时发送电子邮件,而且所有这些时间都太短,无法满足服务器故障的各种可能原因。 如果不使用sendmail,也许像MadHatterbuild议的那样查看sendmail。 至less,你应该为你自己(和/或其他人)configuration一些警报,如果任何事情在队列中超过几个小时。
我将要采取比这里的大多数答案的另一面。
我所服务的ISP为大约3000个客户提供服务,并使用Qmail作为我们的客户邮箱的MTA。
我们已经运行了我们的系统,连续两天的排队时间为两个月,没有收到任何投诉,也没有发送邮件的问题。 它已经降低了队列大小,这使得更容易发现被盗用的帐户(很less,但确实发生)并清理它们。