我正在努力让 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
也带有标志,消息体)替换为您通过管道传递到的命令的输出,并继续处理如此修改的消息。