ezjail のおかげで FreeBSD jail が簡単に構築・管理できるようになって
たとえば以下のように仮想マシンを複数用意した運用をしてるとします。
- host.example.com ホストマシン ( 実マシンは sshd のみ稼働 )
- public.example.com 公開用 ( Apache, Tomcat など )
- mail.example.com メール配信 ( Sendmail?qmail? )
- private.example.com 自分専用のサーバデーモン ( OpenVPN とか )
そういえば、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通メールが届きました。