Postfix:添加/修改电子邮件正文

Postfix:添加/修改电子邮件正文

我已经为我的本地网络设置了一个 Postfix 邮件服务器,它使用邮戳作为智能主机。这实际上工作正常。但我的佳能打印机/复印机发送的邮件没有邮件正文,只有附件。

这会导致 Postmark 端出现错误:ErrorCode: '300', Message: 'Provide either email TextBody or HtmlBody or both.'.

因此,我想在我的 postfix 中添加一条规则,如果邮件中缺少 TextBody,则在转发到智能主机之前添加该邮件。有什么想法吗?

答案1

对于某些特定发件人/收件人对的电子邮件,我在使用 Postmark 时也遇到了同样的问题。使用 Postfix 邮件服务器时,我使用 altermime 中的免责声明功能将主题行复制到正文中,并应用了一些“if”逻辑,以便 altermime 仅在电子邮件发件人/收件人为指定地址时运行。

关于如何设置 altermime 的文章有很多,其中之一如下: https://www.howtoforge.com/how-to-automatically-add-a-disclaimer-to-outgoing-emails-with-altermime-postfix-on-debian-squeeze

上面的文章适用于 Debian,但也主要适用于 RedHat 衍生产品。您需要使用 dnf(或 yum)和 EPEL 存储库安装程序本身。

如果您只想要一个静态正文(就像您带有免责声明一样),那么除了应用一些 if 逻辑(如果您不想将文本应用于每封电子邮件)之外,没有其他办法了。

如果您想将主题行添加到正文中,那么这里的技巧是将主题行输出到临时文件,然后使用该文件作为脚本中的免责声明文件。

像这样:

抓住主题行,并将其输出到临时文件:

subject=`grep -m 1 "Subject:" in.$$ | cut -d "<" -f 2 | cut -d ">" -f 1 | cut -d " " -f 2-`
echo -e "\r\n$subject\r\n" >sub.$$

然后,当脚本需要文件名时,只需使用 sub.$$,例如

/usr/bin/altermime --input=in.$$ \
                   --disclaimer=sub.$$ \
                   --disclaimer-html=sub.$$ \
                   --xheader="X-SpecialContent-Header: TextAdded" || \
                     { echo Message content rejected; exit $EX_UNAVAILABLE; }

最后,不要忘记删除临时文件 - 脚本顶部有一行可以删除输入文件,只需展开该行即可删除 sub.$$ 文件:

trap "rm -f in.$$ sub.$$" 0 1 2 3 15

相关内容