【问题标题】:non-ascii email addresses and SMTP非 ascii 电子邮件地址和 SMTP
【发布时间】:2013-01-24 12:39:07
【问题描述】:

这封电子邮件有什么办法可以正常工作吗? łō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 似乎工作正常。不过,用户部分让我很头疼。

我曾假设我可以像在 url 中那样对其进行 utf8+percent 编码(结果为“%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 服务器正常,但在远程端失败。可能 namecheap 邮件服务器是以 ASCII 为中心的方式配置的。

我的主要问题:我已经向自己证明了电子邮件的服务器部分可以是波兰语,但用户部分可以吗?如果不是,为什么?在我看来,上面的电子邮件虽然非常丑陋,但只是 ASCII,不应该被不支持 unicode 的电子邮件系统特别对待。

【问题讨论】:

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


    【解决方案1】:

    Unicode 是一个完全的红鲱鱼;这与奇怪的字符或编码无关,与% 有关。

    “中继访问被拒绝”是来自 Postfix 的错误消息,当您要求它将您的邮件转发到其他服务器时产生。 (“开放中继”曾经并且很可能仍然是垃圾邮件问题的主要贡献者,其方式与开放代理难以禁止不法分子的方式大致相同。)

    那么,为什么 Postfix 会认为你要求它来中继这封邮件?让我们检查一下docs

    2.3.3.1。开放中继预防

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

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

    等等,什么?我不认为 完全掌握最后两件事。

    谷歌搜索explains

    多年后,在创建 CSNET 期间,开发了另一种中继符号。 CSNET 的第一个实例在 RAND 和特拉华大学建立了计算机,为未连接到 ARPANET 的站点提供电子邮件连接。为了指示所需的中继,创建了一个称为“percent hack”的符号,以便可以按以下形式指定电子邮件地址:

    mary%compsci@udel

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

    同一页面还解释了 ! 的黑客用法。

    我认为这两种行为都不是特定的(因此,“hack”...); %! 都应该是本地部分中的普通字符。但是 Postfix 默认支持这两种 hack,因此它们实际上是保留的。


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

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

    【讨论】:

      【解决方案2】:

      用户部分只需 utf8 编码,无需 % 编码。此电子邮件完全适用于“łōręmıpśum@xn--rmpum-j0a3o6e4dtg.com”,左侧为 utf8,右侧为 punycode(又名 IDNA)。

      【讨论】:

        猜你喜欢
        • 2017-03-01
        • 1970-01-01
        • 2011-03-11
        • 1970-01-01
        • 2023-03-18
        • 2020-09-06
        • 2018-04-30
        • 2011-12-08
        • 1970-01-01
        相关资源
        最近更新 更多