邮件与完整标题一起存储在文本文件中。(该文件是来自 Thunderbird 邮件客户端的 INBOX。文件格式是mboxrd变体。)
如何列出每封邮件的第一个服务器,即电子邮件在到达收件箱之前经过的服务器?“已接收”行列出了电子邮件经过的服务器。您从下到上阅读“已收到”行。最底下的一行是发起人。
一种选择是通过sed
、grep
、awk
等进行文本处理的自定义脚本。还搜索了邮件分析器并找到了E-Mail Header Analyzer (MHA)、maildir-utils和nmh - Message Handling System。使用这些工具之一查询我的文件以完成首先中继电子邮件的服务器列表是否更容易?
我会根据From(不带冒号)的出现将 mbox 文件拆分为其组成消息的近似值。然后我会遍历整个集合,为每个选择最后一个Received标头。
阅读原始 mbox 文件并不难
awk
,但当我开始创建解决方案时,我只处理了一条消息。使用 shell 循环扩展该解决方案似乎比扩展awk
.鉴于
awk
脚本确实一次处理一条消息,可以使用诸如formail
(最初在评论中提到来自套件procmail
)之类的实用程序来遍历 mbox 格式文件中的消息:(未测试)。
这将提取第一个匹配行。那是否是第一跳是另一回事。内容的结构可能会有所不同。