GeekFactory

int128.hatenablog.com

軽量メール送信コマンドnbsmtpを使う

LAN上にメールサーバが立っている場合、ローカルのメール送信にsendmailPostfixを使うのは重すぎます。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