我们的系统管理员团队编辑 exim4 头文件中的 Message-ID 字段(以 -H 结尾)并替换“<”后的第一个字符。
例如:
077I 消息 ID:<[电子邮件保护]>
-->
077I 消息 ID:<[电子邮件保护]>
我想编写一个脚本来发布邮件。我更改了 Message-ID 字段中“<”和“@”之间的部分,并替换了一个哈希值,因此 Message-ID 如下所示:
077I 消息 ID:<[电子邮件保护]>
现在 exim 在日志中显示“格式错误”,邮件未发送。除了这个字段外,没有任何变化。
为什么不能这样替换 ID?它需要完全相同的长度吗?它是 exim4 版本 4.69-2ubuntu0.3。
答案1
看到行首的“077I”了吗?“I”是标头标志,您不应该更改它。但“077”是该标头中的字节数。由于您更改了字符数而不更改计数,因此 Exim 将其视为格式错误。
从http://exim.org/exim-html-current/doc/html/spec_html/ch55.html:
一个文件头可能占据文件的几行,为了节省读取时的工作量,每个文件头前面都有一个数字和一个标识字符。该数字是文件头中的字符数,包括任何嵌入的换行符和终止换行符。
更新数字以反映新的字符数,这样就没问题了。
答案2
如果您的系统管理团队正在破坏消息 ID,我会感到惊讶。
要释放冻结的电子邮件,您只需使用exim
该选项运行。这将获取命令所示的消息 ID-M
列表。您还可以通过从头文件名中删除来获取消息 ID。exim
mailq
-H