[Memo2021][ITPASS]システムログメールの設定
概要
以下では, ITPASS サーバのディスクの使用状況やアクセス情報などについて, 定期レポートをメールで送信するよう設定する.
基本的な方針は以下の通り.
- cron によって, レポートを送るコマンドを定期的に実行させる
- メールの宛先は ITPASS サーバ管理グループ (itpadmin) 全体
システムログメールの設定
自作スクリプト用 cron ディレクトリ作成
自作の cron 用スクリプト置き場として, /etc/cron.local を作成する.
# mkdir /etc/cron.local # mkdir /etc/cron.local/hourly # mkdir /etc/cron.local/daily # mkdir /etc/cron.local/weekly # mkdir /etc/cron.local/monthly
自作スクリプトの設置
定期報告用のスクリプトには自作した以下のものを用いる. それぞれファイルと設置先は以下のとおりである.
- 400_status-disks => /etc/cron.local/daily/400_status-disks
- 401_status-quota => /etc/cron.local/daily/401_status-quota
- 420_status-network => /etc/cron.local/daily/420_status-network
- 430_status-rwho => /etc/cron.local/daily/430_status-rwho
- 800_loginfail => /etc/cron.local/daily/800_loginfail
- 900_tcpserver => /etc/cron.local/daily/900_tcpserver
- 400_status-apt => /etc/cron.local/weekly/400_status-apt
(2021/11/16) システムログメールの quota の箇所が上手く表示されていなかったため, 401_status-quota の 27 行目の -sv オプションを -s -v に変更した.
各ファイルに実行権限(744)を与える. 具体的な操作は以下の通り.
# vi /etc/cron.local/daily/400_status-disks # chmod 744 /etc/cron.local/daily/400_status-disks # vi /etc/cron.local/daily/401_status-quota # chmod 744 /etc/cron.local/daily/401_status-quota # vi /etc/cron.local/daily/420_status-network # chmod 744 /etc/cron.local/daily/420_status-network # vi /etc/cron.local/daily/430_status-rwho # chmod 744 /etc/cron.local/daily/430_status-rwho # vi /etc/cron.local/daily/800_loginfail # chmod 744 /etc/cron.local/daily/800_loginfail # vi /etc/cron.local/daily/900_tcpserver # chmod 744 /etc/cron.local/daily/900_tcpserver # vi /etc/cron.local/weekly/400_status-apt # chmod 744 /etc/cron.local/weekly/400_status-apt
crontab の編集
/etc/crontab に以下の 3 行を追加する. ただし "_at_" は "@" に読み替える. crontab の編集については [TEBIKI]cron の設定 を参照すること.
# vi /etc/crontab 25 6 * * * root cd / && run-parts --report /etc/cron.local/daily |mail -s "`hostname -f` daily run outputs" itpadmin_at_itpass.scitec.kobe-u.ac.jp 47 6 * * 7 root cd / && run-parts --report /etc/cron.local/weekly |mail -s "`hostname -f` weekly run outputs" itpadmin_at_itpass.scitec.kobe-u.ac.jp #52 6 1 * * root cd / && run-parts --report /etc/cron.local/monthly |mail -s "`hostname -f` monthly run outputs" itpadmin_at_itpass.scitec.kobe-u.ac.jp
動作テスト
上記設定が実行される日時を今から数分後の時刻に設定してみて, 実際にメールが来るか確認する.
(2021/11/04) itpadmin_at_itpass.scitec.kobe-u.ac.jp に届いたメールを確認する手段がなかったため, crontab の送信先を chikuwaXX_at_tako-itpass.scitec.kobe-u.ac.jp に変更し, メールが届いていることを確認した.
メールは届かない場合, /var/log/syslog を見ると,
CRON[8360]: (CRON) info (No MTA installed, discarding output)
となれば, これは [Memo2020][ITPASS]tcpserver のインストールと設定 の際に, exim4 に関するパッケージ (exim4-base, exim4-config, exim4-daemon-light) をアンインストールしたことが原因であると考えられる. そのため, この場合これらのパッケージを再度インストールし,
# apt-get install exim4-base exim4-config exim4-daemon-light
さらに, 以下のパッケージをインストールする.
$ sudo apt-get install bsd-mailx $ export MAIL=~/Mailbox
sendmail の「置き換え」
まず, exim4 が起動している場合は停止. ここで, exim4 は起動していないことが期待される. exim4 が起動していたら停止させる.
# /etc/init.d/exim4 stop
exim のブートスクリプトは, /etc/init.d/exim4 で, これに /etc/rc[2-5].d/S20exim, /etc/rc{1,6}.d/K20exim からリンクが張られてい る. これを無効にする.
# chmod 000 /etc/init.d/exim4 # mv /etc/init.d/exim4 /etc/init.d/exim4.bak # update-rc.d exim4 remove
cron から exim が呼び出される処理を無効にする. /etc/cron.daily/exim4-base の先頭の方に次の行を書き足す.
- 3 行目の [ と ! の間にはスペースがあることに注意. 詰めて書いてはいけない (man [(1)). (「[」と「と」, 「と」と「!」の間にスペースを入れた)
#!/bin/sh # by Yasuhiro MORIKAWA, 2007-08-10. We need not exim. if [ ! -f /etc/exim.conf ]; then exit 0 fi
これで, /etc/cron.daily/eximは, /etc/exim.confが存在しない場合には何もせず終了するようになる.
そして, sendmailを置き換える.
# chmod 000 /usr/lib/sendmail # chmod 000 /usr/sbin/sendmail # mv /usr/lib/sendmail /usr/lib/sendmail.bak # mv /usr/sbin/sendmail /usr/sbin/sendmail.bak # ln -s /var/qmail/bin/sendmail /usr/lib/sendmail # ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
次のコマンドで exim4 関係のパッケージを hold して, 更新されないようにする.
# echo exim4-base hold | dpkg --set-selections # echo exim4-config hold | dpkg --set-selections # echo exim4-daemon-light hold | dpkg --set-selections
Debian パッケージの枠組で cron と exim4 (MTA なら何でもよい) は依存関係があるので, exim4 を消してしまうと cron が利用するメールサーバが Debian パッケージの枠組内では存在しないと認識されてしまう. そのため, exim4 を消さずにあえて残している.
動作テスト (2 回目)
/etc/crontab 内の日時設定を変更し, 実際にメールが届くか確認する.
このとき, メールには,
/etc/cron.local/daily/240_letsencrypt_renew: Saving debug log to /var/log/letsencrypt/letsencrypt.log /etc/cron.local/daily/401_status-quota: repquota: Mountpoint (or device) /home not found or has no quota enabled. repquota: Not all specified mountpoints are using quota. repquota: Mountpoint (or device) /home not found or has no quota enabled. repquota: Not all specified mountpoints are using quota.
というエラーメッセージが来るが,これはまだ quota のインストールと設定を終えていないためなので, quota をインストールした後で再び確認することにする. また, Letsencrypt のメッセージに関しては, SSL の証明書を取得したのちに再び確認することにする.
テスト終了後は元の時刻に戻す.
Keyword(s):
References:[[ITPASS2021]2021年度サーバ構築ログ]