我正在编写一个脚本来从邮件日志中提取统计信息。对于某些 SMTP 服务器,提取 SMTP 错误代码可能很困难,即使有错误代码,相关文本也可能包含有用的数据。为此,我正在寻找 SMTP 响应的示例,但我在谷歌上找到的所有内容都只是标准意义3 位数的 SMTP 代码。
互联网上是否有发布真实的 SMTP 响应(归因于特定 MTA)列表?
答案1
问题在于,该标准没有提供 SMTP 响应代码的确凿列表,并且明确允许变化:
RFC 5321:
... 一个SMTP 回复由三位数字组成(以三个数字字符传输)接下来是一些文字除非本文档另有规定。
数字是供自动机使用来确定下一步要进入什么状态;
文本是供人类用户使用的。
这三位数字包含足够的编码信息,SMTP 客户端无需检查文本,可以根据需要丢弃它或将其传递给用户。例外情况如本文档其他地方所述。特别是,220、221、251、421 和 551 回复代码与必须由机器解析和解释的消息文本相关联。 一般情况下,文本可能依赖于接收者和上下文,因此每个回复代码可能会有不同的文本。
...
你可以粗略地解释一下“文本是为人类用户而写的”和 “接收者依赖和上下文依赖”意味着开发人员几乎可以完全自由地让他们的应用程序返回他们认为有用/合适的任何文本,并且这些文本可能包含收件人和发件人的电子邮件地址以及服务器/域名。后者是大多数人不会在网上公开发布的内容。
SMTP 客户端必须仅通过回复代码而不是文本来确定其操作
...
下面显示的代码列表不得被视为永久的。虽然添加新代码应该是一种罕见且重要的活动,最好在响应的文本部分添加补充信息,但新代码可能会因新标准或标准跟踪规范而添加。因此,发件人 SMTP 必须准备好处理本文档中未指定的代码,并且必须仅通过解释第一位数字来处理。
您的脚本必须基本上执行相同的操作,只需从 MTA 生成的特定日志格式中提取 3 位 SMTP 回复代码并从那里继续。