如何使用 procmail 修改电子邮件正文,然后将其转发到外部地址?

如何使用 procmail 修改电子邮件正文,然后将其转发到外部地址?

我正在努力让 procmail 首先转换然后转发收到的电子邮件。这是我想做的:

:0 f
| ~/bin/encryptemail.pl | mail [email protected]

也就是说,我想运行加密邮件.pl在我收到的电子邮件正文上编写脚本,然后将加密的电子邮件转发至[电子邮件受保护]

将输出通过管道传送到邮件是可行的,只不过转发的电子邮件包含在第二组标头中。

我想干净地转发加密的电子邮件,以便原始电子邮件的正文已替换为加密的内容。

答案1

我想看一下食谱Procmail 文档项目网站,特别是这个食谱:15.7 以加密格式转发敏感消息

  #   by [alan]
  #   See if addressed *directly* to me, and ..
  #   ..has not already been forwarded

  KEY             = "TheMagic"
  FORWARD_EMAIL   = "[email protected]"

  :0
  *$   ^To:.*$LOGNAME(@|[^0-9a-z]|$)
  *$ ! ^$MYXLOOP
  {
      # now let's encrypt the body using mimencode

      :0 fbw
      |   echo "MIME-Version: 1.0" ;                              \
          echo "Content-Type: application/crypt" ;                \
          echo "Content-transfer-encoding: base64" ;              \
          echo "" ;                                               \
          crypt $KEY | mimencode -b

      #   Now let's prepare the headers for forwarding the mail,
      #   and mark it so we don't loop

      :0 fhw
      | $FORMAIL   -I"Resent-To: $FORWARD_EMAIL" -I"$MYXLOOP"

      :0
      ! $FORWARD_EMAIL

  }    

而不是调用这一行:

crypt $KEY | mimencode -b

您应该能够将您的呼叫替换为它的位置:

~/bin/encryptemail.pl | mimencode -b

答案2

如果您可以更改脚本以接受并传递(即简单复制)标头,您可以这样做:

:0
| ~/bin/encryptemail.pl | sendmail -oi [email protected]

同样,首先替换正文,然后发送整个修改后的消息:

:0fb
| ~/bin/encryptemail.pl
:0
! [email protected]

f标志不能有意义地用于交付配方;它指示 Procmail 将消息(或者,b也带有标志,消息体)替换为您通过管道传递到的命令的输出,并继续处理如此修改的消息。

相关内容