
我已經為我的本地網路設定了一個 postfix 郵件伺服器,它使用郵戳作為智慧主機。這實際上工作得很好。但我的佳能印表機/影印機發送的郵件沒有郵件正文,但僅包含附件。
這會在郵戳一側產生錯誤:ErrorCode: '300', Message: 'Provide either email TextBody or HtmlBody or both.'.
因此,我想在我的後綴中新增一條規則,以便在轉寄到智慧主機之前將 TextBody 新增到郵件中(如果郵件遺失)。有任何想法嗎?
答案1
對於特定寄件者/收件者對中的某些電子郵件,我也遇到了相同的郵戳問題。使用 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