![sendmail:为什么 error:nouser 和 no user 的错误代码不同?](https://linux22.com/image/654832/sendmail%EF%BC%9A%E4%B8%BA%E4%BB%80%E4%B9%88%20error%3Anouser%20%E5%92%8C%20no%20user%20%E7%9A%84%E9%94%99%E8%AF%AF%E4%BB%A3%E7%A0%81%E4%B8%8D%E5%90%8C%EF%BC%9F.png)
使用 sendmail 8.14 时,当给定域中没有用户时,sendmail 似乎会产生如下错误:
550 5.1.1 <[email protected]>... User unknown
但是,如果使用error:nouser
within virtusertable
,则消息如下:
553 5.3.0 <[email protected]>... >info<@example.su.
使用最推荐的error:nouser No such user
,virtusertable
按照https://www.sendmail.com/sm/open_source/tips/virtual_hosting/,结果如下:
553 5.3.0 <[email protected]>... No such user
为什么状态代码不同?
它们有什么区别吗?
为什么停止向用户交付的推荐方式与完全没有用户时的默认行为不同?
答案1
发送服务器应将 550 和 553 错误代码视为与 500 系列代码相同的错误代码。这些错误代码均表示永久性错误情况。
550 表示请求的操作(添加收件人)未完成。553 错误表示邮箱名称无效。无论是哪种情况,收件人都没有被接受。
答案2
使用error:nouser 550 ...
或error:5.1.1:550 ...
作为 virtusertable 值,如 virtusertable 部分所建议的cf/自述文件。
[email protected] error:nouser 550 No such user here
[email protected] error:5.1.1:550 No such user here
RFC5321描述两个错误代码之间的(细微的)区别。
550 Requested action not taken: mailbox unavailable (e.g., mailbox
not found, no access, or command rejected for policy reasons)
553 Requested action not taken: mailbox name not allowed (e.g.,
mailbox syntax incorrect)
在大多数情况下,550
和之间的差异553
不会对你造成伤害但当您发现它时,请修复它以获得内心的平静:-)
尾随文字的解释是为人类提供的,因此它不应该产生差异。
解释 1
553 5.3.0 <[email protected]>... >info<@example.su.
Sendmail 似乎无法预测地处理error:WORD
没有 virtusertable 返回的消息。[我已检查过 sendmail-8.15.1 和 sendmail-8.14.4]
sendmaill-8.15.1/cf/m4/proto.m4
1128 R< error : $-.$-.$- : $+ > $* $#error $@ $1.$2.$3 $: $4
1129 R< error : $- $+ > $* $#error $@ $(dequote $1 $) $: $
解释 2
553 5.3.0 <[email protected]>... No such user
error:nouser No such user here
因为 virtusertable 值(缺少 smtp 回复代码)似乎产生了 553 回复代码
恕我直言,你可以向 sendmail 网站报告错误虚拟主机页。