軽量メール送信コマンドnbsmtpを使う
LAN上にメールサーバが立っている場合、ローカルのメール送信にsendmailやPostfixを使うのは重すぎます。SMTPさえ喋れればよいので、ssmtpやnbsmtpを使います。
しばらくssmtpを使っていたのですが、Fromに名前が付加される、Toが勝手に書き換えられる、といった問題に悩まされていました。試しにnbsmtpを使ってみたら素直にメールが中継されたので、置き換えることにしました。
nbsmtpをラップするスクリプトへのリンクを揃えます。
# rm /usr/sbin/sendmail # ln /usr/bin/sendmail /usr/sbin/sendmail # ll /usr/sbin/sendmail /usr/bin/sendmail -rwxr-xr-x 5 root root 434 Oct 28 00:58 /usr/bin/sendmail -rwxr-xr-x 5 root root 434 Oct 28 00:58 /usr/sbin/sendmail
nbsmtpはヘッダのTo:にアットマークが含まれない場合はエラーを返します。To:にユーザ名を指定するアプリが多いため対策を施します。/usr/bin/sendmailにパッチを当てます。
if [[ "${1}" = "-I" ]] ; then _newaliases else #nbsmtp sed -e "s|^to: *[^@]*$|\0@${HOSTNAME}|i" | nbsmtp fi ;; mailq|mailq.nbsmtp)
/etc/nbsmtprcを作成します。
# nbsmtprc
relayhost=mailhub
テストメールを送ります。
# echo "Subject: test To: hogeuser test mail "|sendmail