如何重写电子邮件的发件人地址并重新发送?

如何重写电子邮件的发件人地址并重新发送?

我有一个 cPanel 网络托管帐户。通过这个帐户,我有一个基于 PHP 的支持/故障单系统供我的客户使用。我希望能够向我的客户和票务系统发送电子邮件,但发送到票务系统的电子邮件似乎无法发送我的客户,以便创建的支持票证显示在他们的帐户下。

所以我想做的是创建一些电子邮件地址[email protected],该地址通过管道传输到 unix 命令或 shell 脚本。这意味着当我从[email protected]to[email protected]和 CC发送电子邮件时[email protected],shell 脚本应该能够重发电子邮件至[email protected] 但从电子邮件的“收件人:”地址重新发送电子邮件

有没有办法制作一个 shell 脚本来接受标准输入上的电子邮件,重写 From: 地址,并将邮件重新发送到新地址? Procmail 可以做这样的事情吗?或者我必须自己手动编码?

答案1

Procmail 附带formail操作邮件标头的命令。这procmailex包含 中的使用示例.procmailrc。这应该做你想要的(未经测试):

formail -R To: From: -U From: -I Cc: -I 'To: [email protected]'

答案2

吉尔斯的答案已经差不多了,但出于某种原因我不得不通过管道formail 两次。此外,我需要在重写标题后实际发送邮件。为了使整个事情顺利进行,我做了以下工作:

  1. 我创建了一个新文件,~/bin/resend-support其中包含:

    #!/bin/bash
    
    /usr/bin/formail -R To: From: | \
      /usr/bin/formail -U From: -I Cc: -I 'To: [email protected]' | \
      /usr/sbin/sendmail -oi -t
    
  2. 我使文件可执行 ( chmod +x ~/bin/resend-support)

  3. [email protected]在 cPanel 中,我创建了一个通过管道传输到的电子邮件地址转发器~/bin/resend-support(使用“高级”下的“管道到程序”)

[email protected]现在,当我向和 CC发送电子邮件时[email protected],它会通过管道~/bin/resend-support重新发送电子邮件到[email protected] [email protected]

相关内容