【问题标题】:SMTP dot stuffing - who does it and who removes itSMTP 点填充 - 谁执行它以及谁删除它
【发布时间】:2012-02-16 19:21:33
【问题描述】:

我编写了一个电子邮件客户端,并且不时注意到一些收到的邮件中的链接失败,因为 URL 中有两个点,而应该有一个点。

通过调查,我发现在所有这些情况下,两个点都位于一行可引用的可打印 HTML 的开头。

在阅读 RFC 2821 时,我发现这可能是由于点填充而发生的。我的问题基本上是,谁应该做点填充,谁应该删除它?

如果我们采用一个简单的序列,我们有如下:

  A ----> B ----> C ----> D

其中 A 是发送客户端,B 是 A 向其发送邮件的 SMTP 服务器,C 是收件人的 SMTP 服务器,D 是接收客户端。

RFC 2821 似乎说如果一行以点开头,A 应该添加一个额外的点,而 B 应该删除它(这对我来说很有意义)。但是,我在实践中观察到的是,如果 A 忘记了,B 会添加一个点,否则什么也不做。到达 D 的邮件没有删除多余的点。我是否误解了 RFC,因此删除多余的点是 D 的工作吗?

【问题讨论】:

    标签: smtp smtpclient


    【解决方案1】:

    请参考 SMTP 标准 RFC2821 第 4.5.2 节:

    https://www.rfc-editor.org/rfc/rfc2821#section-4.5.2

    允许所有用户撰写的文本透明传输, 使用以下程序:

    • 在发送一行邮件文本之前,SMTP 客户端会检查 行的第一个字符。如果是句号,则增加一个 在行首插入句点。

    • 当 SMTP 服务器收到一行邮件文本时,它会检查 线。如果该行由单个句点组成,则为 视为邮件结束指示符。如果第一个字符是 句号和该行还有其他字符,第一个 字符被删除。

    【讨论】:

    • A 在发送时添加一个点。 B 删除接收时的点。然后 B 应添加要发送的点。 C 应该已经删除了接收时的多余点,而 D 可能使用 POP3 或 IMAP 从 C 收集?
    • POP 和 IMAP 也会进行点填充,因此如果您在从 C 到 D 的最后一站有这些协议之一,那么您也需要审核这些协议的错误来源。跨度>
    猜你喜欢
    • 2014-03-07
    • 2017-12-29
    • 2014-12-13
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 2011-12-31
    相关资源
    最近更新 更多