ほっしーの技術ネタ備忘録

技術ネタの備忘録です。基本的に私が忘れないためのものです。他の人の役にも立つといいなぁ。

メール配信設定


ezjail のおかげで FreeBSD jail が簡単に構築・管理できるようになって
たとえば以下のように仮想マシンを複数用意した運用をしてるとします。


そういえば、private.example.com の daily〜、security〜 のメールって見たことないなぁ…?


ということで探してみると、ezjail で構築した環境では、/etc/periodic.conf にこう書いてありました。

daily_output="/var/log/daily.log"
weekly_output="/var/log/weekly.log"
monthly_output="/var/log/monthly.log"
daily_status_security_output="/var/log/daily_status_security.log"
daily_status_network_enable="NO"
daily_status_security_ipfwlimit_enable="NO"
daily_status_security_ipfwdenied_enable="NO"
weekly_whatis_enable="NO" # our jails are read-only /usr

各メールは /var/log に残っているそうです。
なるほどなるほど。


でも、せっかくメールサーバが稼働しているのに "host.example.com daily run output" とか
"host.example.com security run output" を読むためにわざわざログインするのも面倒。


…ということで、各 _output 欄にメールアドレスを書くと、sendmail(8) コマンドで配信してくれるようになります。

daily_output="root@mail.example.com"
daily_status_security_output="root@mail.example.com"
weekly_output="root@mail.example.com"
monthly_output="root@mail.example.com"
daily_status_network_enable="NO"
daily_status_security_ipfwlimit_enable="NO"
daily_status_security_ipfwdenied_enable="NO"
weekly_whatis_enable="NO"

あ、でも private.example.com はメール関係の設定してないや。
というかそもそも /etc/rc.conf に sendmail_enable="NONE" って書いてある…


…という場合でも、メールの送信だけならすぐに設定できます。
もちろん、sendmail をデーモンで動かす必要もありません。

$ cd /etc/mail
$ cp freebsd.submit.mc private.example.com.submit.mc
$ vi private.example.com.submit.mc
$ make install

これだけ。編集する内容は一行だけ。

< FEATURE(`msp', `[127.0.0.1]')dnl
---
> FEATURE(`msp', `mail.example.com')dnl

試しに送信。

$ sendmail -t
To: root@mail.example.com
From: root@mail.example.com

Test
^D
$ _

ね、簡単でしょ。


ついでに /etc/crontab に

 SHELL=/bin/sh
 PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
 HOME=/var/log
+MAILTO=root@mail.example.com

こう付け足しておくと、cron で実行したプログラムの標準出力がメールで配信されます。
実験。

* * * * * root echo "crontab test mail."

1分に1通メールが届きました。