TLDR:我需要一个实用程序来读取电子邮件并查看收件人:和抄送:字段以从已知地址列表中查找电子邮件地址。如果它找到一个,我希望它输出带有额外deliver_to: <address>
信封行的电子邮件。
背景
我的 ISP 将所有公司邮件发送到“域邮箱”/“全部捕获”邮箱,但不在任何地方记录信封收件人。我们有一个交换服务器从该邮箱接收(使用所谓的“POP3 连接器”)并将它们分发到用户邮箱。密件抄送的邮件和来自邮件列表的邮件被传送到默认邮箱。我正在更换 exchange,这是唯一剩下的部分。我可以使用 getmail 检索邮件,MultidropPOP3Retriever
但 getmail 希望找到包含收件人电子邮件地址的信封行(例如 delivered_to: [email protected]),而我的 ISP 没有提供。所以我必须尽我最大的努力从 To:/CC: 中恢复它。
事实证明,我的答案在广泛的 getmail 文档中。我需要使用 getmail 调用的内容
MultiGuesser
。但是,因为在我的情况下,我的 ISP 在信封标题中添加了这样一行:
由于 MultiGuesser 并不完美(例如,如果收件人是密件抄送,它无法猜对)我最终实现了添加
delivered_to
行的最初想法。我保留了 MultiGuesser 以防万一我的 ISP 停止添加这条有用的线路。该实用程序是一个使用的 bash 脚本formail
(由 dirkt 在他的回答中建议)。它并不快,因为它会为它处理的每封邮件创建临时文件,但它工作正常。我的
getmailrc
包含一个像这样的过滤器,它调用上面的脚本:如果“实用程序”的意思是“发送者/接收者的 shell 脚本”,请查看formail。要以每个用户为基础自动处理收到的邮件,请查看procmail。
如果您要用 Linux 邮件服务器替换交换服务器,您可能希望以某种方式在服务器内执行此操作。