非ascii电子邮件地址和SMTP

时间:2013-02-08 17:11:43

标签: email unicode smtp quoted-printable percent-encoding

这封电子邮件有什么办法可以运作吗? łōręmıpśum@łōręmıpśum.com 这不是一个完全无聊的追求。我们的波兰用户在我们的应用中输入了非ascii电子邮件。

gmail验证程序将其标记为无效,但可能只是这种罕见的情况,他们没有允许它。 “łōręmıpśum.com”的punycode是“xn--rmpum-j0a3o6e4dtg.com”,info@xn--rmpum-j0a3o6e4dtg.com似乎工作正常。用户部分让我很头疼。

我原以为我可以将utf8 +%编码,就像我在网址中所说的那样(“%C5%82%C5%8Dr%C4%99m%C4%B1p%C5%9Bum”),但是SMTP服务器返回我的邮件时出错:

The mail system

<%C5%82%C5%8Dr%C4%99m%C4%B1p%C5%9Bum@xn--rmpum-j0a3o6e4dtg.com>: host
    eforward3.registrar-servers.com[38.101.213.199] said: 554 5.7.1
    <%C5%82%C5%8Dr%C4%99m%C4%B1p%C5%9Bum@xn--rmpum-j0a3o6e4dtg.com>: Relay
    access denied (in reply to RCPT TO command)

Final-Recipient: rfc822; %C5%82%C5%8Dr%C4%99m%C4%B1p%C5%9Bum@xn--rmpum-j0a3o6e4dtg.com
Original-Recipient: rfc822;%C5%82%C5%8Dr%C4%99m%C4%B1p%C5%9Bum@xn--rmpum-j0a3o6e4dtg.com
Action: failed
Status: 5.7.1
Remote-MTA: dns; eforward3.registrar-servers.com
Diagnostic-Code: smtp; 554 5.7.1
    <%C5%82%C5%8Dr%C4%99m%C4%B1p%C5%9Bum@xn--rmpum-j0a3o6e4dtg.com>: Relay
    access denied

似乎电子邮件通过本地SMTP服务器正常,但在远程端失败。可能是以ASCII为中心的方式配置了namecheap邮件服务器。

我的主要问题:我已经向自己证明,电子邮件的服务器部分可以是波兰语,但用户可以部分吗?如果没有,为什么?在我看来,上面的电子邮件虽然令人难以置信地丑陋,但它只是ASCII,不应该被不能识别unicode的电子邮件系统专门处理。

2 个答案:

答案 0 :(得分:2)

Unicode是一个完整的红鲱鱼;这与奇怪的角色或编码无关,与%无关。

“中继访问被拒绝”是来自Postfix的错误消息,当您要求它将邮件转发到其他服务器时生成。 (“开放式中继”过去,现在可能仍然是垃圾邮件问题的主要原因,就像开放代理使得难以禁止恶意攻击一样。)

那么,为什么Postfix认为你要求它转发这封邮件?我们来查看docs

  

2.3.3.1。打开中继预防

     

不要将邮件从远程主机中继到远程地址! (除非发件人已通过身份验证)。

     

对我们大多数人来说这似乎是显而易见的,但显然这是一个经常被忽视的考虑因素。此外,并非所有人都可以完全掌握与电子邮件地址和传递路径相关的各种互联网标准(考虑“百分比黑客域”,“爆炸(!)路径”等)。

坚持下去,什么?我不认为完全掌握了最后两件事。

谷歌搜索explains

  

多年以后,在创建CSNET期间,开发了另一种中继符号。 CSNET的第一个实例在RAND和特拉华大学建立了计算机,为没有连接到ARPANET的站点提供电子邮件连接。为了表明所需的中继,创建了一个称为“百分比黑客”的符号,以便可以使用以下格式指定电子邮件地址:

     
    

玛丽%compsci @ UDEL

  
     

上述电子邮件地址指定用户“mary”在计算机“compsci”上拥有一个帐户,并且可以通过特拉华大学的中继主机联系。选择%符号是因为它没有被任何其他流行的电子邮件系统使用,并且因为它在视觉上类似于用于指定“照顾”用邮件发送的信件的“C / O”符号。尽管百分比黑客启用了多级中继,但其实际使用仅限于一个中继 - 一个%和一个@。

同一页面也解释了!

的hacky用法

我认为这些行为都没有被推测(因此,“黑客”......); %!都应该是本地部分的普通字符。但Postfix默认支持这两种黑客攻击,所以它们实际上是保留的。


至于Unicode:百分比编码是一个只有 的URI事物,并且没有理由期望它可以在电子邮件地址的任何地方使用。

RFC6531将SMTP扩展为“国际”字符。它与任何其他与电子邮件相关的RFC一样清晰,但听起来您可以在本地部分使用UTF-8,并且接收服务器将通过SMTPUTF8扩展来理解它,或者......它不会。 (据推测,任何拥有Unicode本地部分的人都已经在使用了解Unicode的电子邮件服务器。)

答案 1 :(得分:0)

用户部分只需要进行utf8编码,不需要%编码。这封电子邮件完全有效“łōręmıpśum@xn--rmpum-j0a3o6e4dtg.com”,左边是utf8,右边是punycode(又名IDNA)。