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服务器,我不知道如果中继电子邮件是一个要求可选

客户端可以这样做(通常会这样做),但行为是不能保证的(当在RFC中解释时,您可能会发现这个词)。 无论它是否完全实现定义。

251和551之间的区别是,如果SMTP服务器返回251,那么它将把邮件作为中继发送到正确的地方,客户端不应该(但仍然可能)自己发送消息,但是如果返回551 ,客户有望。 这不是协议要求。

如果您在操作SMTP服务器时的目标是确保邮件已经发送,您应该发送251并转发邮件。

另外,最新的SMTP RFC是RFC5321 ; 一般来说你应该根据这个实现SMTP,因为引入了大量的特性,而RFC821的很大一部分已经从协议中删除了。

我对服务器pipe理员来说比较新,但是我会尽力回答。 中继是可选的。 这是为了控制stream量的smtpstream量(如出于安全的原因与反垃圾邮件等)。 如果你在互联网上的smtp上转发,并且如果攻击面没有得到很好的保护,那么你可能会得到垃圾信息,欺骗你的系统中一个看起来合法的域名和账号。