根据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 上进行中继,并且其攻击面没有得到很好的保护,那么您可能会收到垃圾邮件流量,这些垃圾邮件流量会欺骗您系统中看似合法的域和帐户。