第三方电子邮件网关中继拒绝处理我们发送给我们的电子邮件地址的消息。 地址格式为firstname.lastname @ recipientdomain.com (注意两个句点)。 RFC准则允许吗?
RFC 2822似乎在第3.4.1节中反对这一点:
本地解释的string是引用string或点primefaces。 如果string可以表示为一个点primefaces(也就是说,它不包含除文本字符之外的字符,或者包含文本字符的“。”),那么应该使用点primefacesforms,并且引用的stringforms应该是SHOULD NOT使用。 注释和折叠空白区域不应该在addr-spec中的“@”处使用。
此外,在同一部分,它引用了这一点:
addr-spec =本地部分“@”域
local-part = dot-atom / quoted-string / obs-local-part
我认为这意味着本地部分可以有点分离的内容,但不能有两个连续的点,它不能以点开始或结束。 这就是说,我不熟悉点primefaces语法,所以也许我在这里弄错了。
有人可以确认和解释吗?
是的,你是对的。 你引用的部分说,它必须是一个引用的string或点primefaces。 由于它明显不是一个被引用的string(没有包含"明确表示),它必须是一个点primefaces…
这导致我们定义点primefaces:
除了从RFC 5322(3.2.3 – 第13页) (RFC 2822包含一个类似的部分)看,这个提示是1* dot-atom-text = 1*atext *("." 1*atext) in dot-atom-text = 1*atext *("." 1*atext) 。 这实际上意味着一个点primefaces由一个或多个由点分隔的“atext”string组成。 一个0字符的string不计数,所以你不能有两个连续的点(由0个字符分隔)或一个前导或尾随点。
RFC 5322 Internet Message Format October 2008 atext = ALPHA / DIGIT / ; Printable US-ASCII "!" / "#" / ; characters not including "$" / "%" / ; specials. Used for atoms. "&" / "'" / "*" / "+" / "-" / "/" / "=" / "?" / "^" / "_" / "`" / "{" / "|" / "}" / "~" atom = [CFWS] 1*atext [CFWS] dot-atom-text = 1*atext *("." 1*atext) dot-atom = [CFWS] dot-atom-text [CFWS] specials = "(" / ")" / ; Special characters that do "<" / ">" / ; not appear in atext "[" / "]" / ":" / ";" / "@" / "\" / "," / "." / DQUOTE
你的解释是正确的。 本地部分可能包含按句点分隔的文本组,但不允许多个连续句点。
根据您在问题中引用的RFC 5322第3.4.1节 ,点primefaces“不包含除文本字符之外的其他字符,或者包含文本字符的”。 “。 因此,根据定义,点primefaces可能不包含两个或更多个连续的周期。
作为参考,这里是RFC 5322第3.2.3节的atext定义:
atext = ALPHA / DIGIT / ; Any character except controls, "!" / "#" / ; SP, and specials. "$" / "%" / ; Used for atoms "&" / "'" / "*" / "+" / "-" / "/" / "=" / "?" / "^" / "_" / "`" / "{" / "|" / "}" / "~"
当然,没有两个MTA以同样的方式实施RFC,所以你会发现一些MTA会接受其他人不会的双重期限。 例如,Exchange将拒绝提供包含双重句点的地址,但是对随机select的3个邮件服务器进行快速testing,所有这三个邮件服务器都支持双重句点。
因此,严格按照RFC 5322的规定,托pipe接力问题的组织有权拒绝包含双重时段的地址。