在为我们的应用程序编写MSA (各种类型)的上下文中,我目前正在编写一些代码,以测试是否可以连接到给定的地址发送邮件,包括是否需要身份验证。
为了对后者进行测试,我假装从(虚构的)地址发送了一封电子邮件,地址与收件人使用的地址相同。
我使用这种方法,尽管我不想这样做,因为我需要能够同时向服务器发送一个MAIL谓词和一个RCPT谓词。据我所知,原因是在寄出邮件之前没有动词(如EHLO,STARTTLS,AUTH等)。如果缺少身份验证,将导致错误。有些服务器,如Gmail,在发送未经授权的邮件时会出现错误,但其他服务器只在我尝试添加收件人时才会做出反应,因此需要这两个动词。
我之所以在虚构的邮件中使用IP地址而不是域名,是因为当时我不一定能够访问域名。我知道这不漂亮,但这是合法的。只要IP地址是根据RFC 5321指定的。
有趣的是,Gmail将使用虚构的邮件地址接受MAIL谓词,但是当收件人抱怨它不是有效的RFC 5321地址时,会抛出一个553错误。
SEND: "MAIL FROM:<test@[IPv6:fe80::105e:c040:c56c:b8bc]>"
RECV: "250 2.1.0 OK s82sm4688131lja.26 - gsmtp"
SEND: "RCPT TO:<test@[IPv6:fe80::105e:c040:c56c:b8bc]>"
RECV: "553-5.1.2 The recipient address <test@[ipv6:fe80::105e:c040:c56c:b8bc]> is not a"
"553 5.1.2 valid RFC-5321 address. s82sm4688131lja.26 - gsmtp"
我应该注意,我已经尝试过这一点,无论是使用还是不使用IPv6前缀。如果没有它,在Postfix上运行的另一个SMTP服务器会出现故障。基于后缀的服务器恰好是那些在未经身份验证的情况下发送邮件谓词时没有抛出错误的服务器之一。
顺便说一下,Gmail的这个问题并不局限于IPv6地址。切换到IPv4地址会产生相同的结果。这一问题似乎也与当地地址无关。邮件动词被接受,RCPT动词失败。
据我所知,我提供的是一个合适的RFC 5321兼容地址。到底怎么回事?我哪里出问题了?乍一看,这个问题似乎与GMail/GSMTP有关。
发布于 2016-09-15 04:36:16
是的,Gmail/SMTP的“问题”是一个松散的词;“问题”是指他们拒绝接受发送给address-literal
的电子邮件,如RFC 5321所述。
尽管RFC 5321允许RCPT TO
中的地址文字,但是Gmail显然选择不支持它,不管他们使用什么原因。我相信Gmail并不是世界上唯一一个出于某种原因不支持SMTP协议中某些神秘部分的邮件提供商。
差不多就是这样了。这里的答案是,“事情就是这样”。您要发送的命令符合RFC 5321。Gmail拒绝它。结束了。
如果你想对此发牢骚,RFC 5321第3.3节也指出:
同样,服务器可能拒绝接受发送给其他主机或系统的邮件。
因此,从技术上讲,Gmail的邮件服务器不需要为Gmail以外的任何人接受邮件。就是这样。
你的选择是:
https://stackoverflow.com/questions/39510992
复制