我对此非常好奇。问题(以粗体突出显示):
有人能说出一个很好的理由来让他们的电子邮件服务器永久设置为在 4xx 代码上自动失败/立即失败吗?
因为坦率地说,这听起来就像“他们的”设置开箱即坏了。 SMTP 不是即时通讯。 不要把它当成 IRC 或 Jabber 或 MSN 或在此处插入IM 技术我不知道是什么让人们在设置 SMTP 时有“立即交付或失败”的想法,但他们必须停止这样做。这只会破坏一切。每隔两三年,我就会遇到这种情况。某个地方的某个人凭借他们无穷的智慧认为 4xx 代码是立即失败,突然间它OMGWTFBBQ INTARNETZ 被破坏了,天塌下来了而不是“哦,大约 30 分钟后会重新尝试发送”。令我惊讶的是,邮件无法发送突然变成了“我”的问题,因为其他人错误配置了“他们的” SMTP 服务。
如果有正当理由以这种方式永久设置您的服务器,那么第一个好的答案将得到检查。
如果有不有充分的理由(但我怀疑没有),那么第一个听起来不错但逻辑上有缺陷的答案将得到检查。
答案1
来自RFC:
4.X.X Persistent Transient Failure
A persistent transient failure is one in which the message as
sent is valid, but some temporary event prevents the successful
sending of the message. Sending in the future may be successful.
很明显,4xx 应该只在响应临时(瞬态是错误的措辞)问题时发送。因此,没有正当理由将其视为即时错误。应响应为例行重试。
话虽如此,过度使用粗体和斜体表明你不仅认真对待此事,而且将其视为个人问题。我能给出的最好建议是放松,不要因为别人的愚蠢行为而感到如此沮丧和紧张。
当有人抱怨时,只需指出 RFC 的那部分(忽略 RFC 是不是标准)并提醒他们,你无法控制其他人如何设置他们的系统。
答案2
我曾经这样设置过一次,因为老板想知道电子邮件何时会被延迟,如果是这样,他想更改电子邮件的文本。这是为一家贸易公司设计的,所以我能理解及时性的必要性。除了这样的事情,我无法想象为什么(我认为那是千载难逢的设置)
答案3
仔细想想,我可能认为如果从内部发起,客户端会向已知无效的 smtp 服务器发送大量电子邮件,那么可能会发生某种 DoS 攻击。这会导致邮件服务器开始给自己增加负载,因为它会不断尝试重新发送。
我不会称其为一个很好的理由,但也许它至少“听起来不错”?:-)
也许另一个原因可能是“如果第一次没有成功,那么以后可能就不会成功了,所以让我们立即让用户知道。我不知道如何让它提醒用户它将继续重试”。不过,这个理由对我来说听起来更无趣……