SMTP:如何处理未知收件人?

SMTP:如何处理未知收件人?

根据RFC821命令RCPT可以返回以下内容:

  • 250 OK
  • 251 User not local; will forward to <forward-path>
  • 551 User not local; please try <forward-path>

当 SMTP 返回 551 时究竟发生了什么。客户端会尝试将其发送到正确的邮件服务器吗?

我正在实现一个简单的 SMTP 服务器,不确定转发电子邮件是否要求或者选修的

答案1

客户端可能会这样做(并且通常会这样做),但行为并不能得到保证(MAY当 RFC 对此进行解释时,您可能会找到这个词)。无论是否这样做,都完全由实现定义。

251 和 551 之间的区别在于,如果 SMTP 服务器返回 251,那么它将把邮件发送到正确的位置作为中继,而客户端不应该(但仍可以)自己以这种方式发送消息,但如果返回 551,则客户端应该这样做。这不是协议要求。

如果您操作 SMTP 服务器的目标是确保邮件被送达,那么您应该发送 251 并转发邮件。

此外,最新的 SMTP RFC 是RFC5321;通常您应该根据此要求来实现 SMTP,因为引入了大量的功能,并且 RFC821 的很大一部分已经从协议中删除。

答案2

我对服务器管理还比较陌生,但我会尽力回答。中继是可选的。这是为了控制 smtp 流量(例如出于反垃圾邮件等安全原因)。如果您在互联网上的 smtp 上进行中继,并且其攻击面没有得到很好的保护,那么您可能会收到垃圾邮件流量,这些垃圾邮件流量会欺骗您系统中看似合法的域和帐户。

相关内容