さて、サーバーとして運用するからには少なくともレポートメールの送信ぐらいはできないと困る。しかし、メールの送信は必要だが受信は不要なので、それにもってこいな送信専用sendmailであるSSMTPをインストールしよう。
apt-get install ssmtp
で、インストールされたら/etc/ssmtp/ssmtp.confを設定する。
root=***@***.*** (ルート宛メールの転送先のアドレスを設定)
mailhub=mail.asahi-net.or.jp:587 (asahi-netのSMTPサーバーはFrom:アドレスが自由なので、こういうメールリレーハブの投げる先にはもってこい。もちろんプロバイダーにお金払ってるからできることだけど)
AuthUser=***
AuthPass=***
AuthMethod=cram-md5 (asahi-netのSMTP認証に必要な情報をベタ書き。セキュリティー的にはよろしくないけど対策は後述)
#rewriteDomain= (自ドメインのFrom:じゃないとSMTPリレーを拒否するサーバーの場合に、送信されたメールの発信元ドメインを書き換える設定。asahi-netの場合は問題なしなので、コメントアウトのままで)
hostname=***.*** (これも同じくFQDNでダイナミックDNSのホスト名を)
#FromLineOverride=YES (ユーザーが好きなFrom:アドレスを書いてもいいという設定だがrootのレポートメールだけなら不要なのでコメントアウトのままで)
以上で設定完了。しかし、このままではベタ書きにした認証情報が誰にでも見える状態になっているので気持ち悪い。ところが、ssmtp.confファイル自体はメールを送信する人にreadパーミッションを許可しないとそもそもメールが送れない。そこで、今回はmailグループに入ってる人だけメールが送れるようにする。
gpasswd -a %user% mail (まずは自分をmailグループに加える)
chown root:mail /etc/ssmtp/ssmtp.conf
chmod 640 /etc/ssmtp/ssmtp.conf
これでrootとmailグループに入ってる人しかファイルを読めないので一応は大丈夫。あとはユーザーからメールが送信できるかテストする。
echo “This is a test mail.” | mail -v -s “Test mail” root
-vオプションのおかげで正しくリレーハブとの間でネゴシエーションが行われているかどうか確認できる。これでメールが無事に届けばテスト成功!
メールの送信ができるようになったら、apt-listchanges, apticron, logwatchの3パッケージをインストールして毎日パッケージのアップデートとログをルート宛に送信するようにする。
この3パッケージをインストールする時に依存パッケージで入るbsd-mailxがないと送信テストで使うmailコマンドが存在しないので、ssmtpのテストをする前にこの3パッケージのインストールが必要だった。
うーん、apt-listchangesやlogwatchのレポート送信先が単純に To: root となってしまうおかげで、転送先のプロバイダーで勝手にプロバイダー側のドメイン名が補完されてしまう。エンベロープ宛先は自分になっているのでメールそのものは自分に届くのだが、気持ち悪い。とはいえ実害はないし、ここをなんとかする方法も分からないので、当面はこれで良しとしよう。