使用新的 FROM/TO 字段自动重定向电子邮件

Automatically redirect email with new FROM/TO fields

我收到来自 sub-contractor 的电子邮件。我需要将这些电子邮件的内容从我公司的电子邮件地址自动重新发送到通讯组列表。我们目前使用 Outlook Exchange 作为我们的主要邮件服务器,但我愿意(实际上更喜欢)使用 Linux 到 parse/redirect。我不太关心清理 headers,只是更新 FROM/SENDER 和 TO/RECIPIENT 字段。可能还有附件需要随身携带

我在 SuperUser 上看到过类似的 post here,它在其中一个答案中引用了 'procmail',但含糊不清。

到目前为止,我最好的方法是在 Linux 上设置邮件客户端以获取 Outlook 流量,然后使用 procmail 进行解析并重新发送。有没有人见过这样的例子?有更好的主意吗?

谢谢。

Procmail 不是这样工作的。 Procmail 是一个自主代理,通常 运行 在您的邮件服务器上,并在收到的每封邮件到达时对其进行处理。

您请求的转发功能不是 Procmail 本身的一部分,但 Procmail 分发版附带一个实用程序 formail,它可以为您重写 header。

给定标准输入的消息,它可以用这样的新值替换 "From:" 和 "To:" header:

formail -I"From: Important Account <corporation@example.com>" \
 -I"To: Little Peon <person@example.org>" -ICc:

(空 -ICc: 确保删除任何 Cc: header 如果有的话。您可能还想删除旧的 Received: header s.)

然后可以将输出通过管道传输到例如sendmail -oi -t 将其提交回邮件流。

当然,如果您希望它在电子邮件到达时自动发生,那么将其放入 Procmail 配方中也很容易。这确实是 运行 的 Procmail 处理流程,因此您应该能够找到大量示例,包括 Procmail 手册中的示例。但这是它的长短;

:0c
* regex which matches the messages you want to forward
| formail -I"From: account@example.com" -I"To: person@example.org" -ICc: \
  | $SENDMAIL $SENDMAILFLAGS -t

如果您不想在收件箱中收到原件,请删除 c 标记。如果您想无条件转发所有邮件,请删除条件。