
私はローカルネットワークにpostfixメールサーバーを設置しました。消印スマートホストとして。これは実際には正常に動作します。しかし、私の Canon プリンター/コピー機はメール本文なしで添付ファイルのみを含むメールを送信します。
これにより、Postmark 側でエラーが発生します。ErrorCode: '300', Message: 'Provide either email TextBody or HtmlBody or both.'.
したがって、スマートホストに転送する前に、メールに TextBody がない場合はそれを追加するルールを postfix に追加したいと思います。何かアイデアはありますか?
答え1
特定の送信元/宛先ペアの電子メールで、Postmark で同じ問題が発生しました。Postfix メール サーバーを使用して、altermime の免責事項機能を使用して件名を本文にコピーし、電子メールが指定されたアドレスから/指定されたアドレスに送信された場合にのみ altermime が実行されるように、いくつかの「if」ロジックを適用しました。
altermime の設定方法については多くの記事がありますが、そのうちの 1 つを次に示します。 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