[Memo2018][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

自作スクリプトの設置

定期報告用のスクリプトには自作した以下のものを用いた. それぞれファイルと設置先は以下のとおりである.

各ファイルに実行権限(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_" は "@" に読み替えた.

#  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

動作テスト

上記設定が実行される日時を今から数分後の時刻に設定してみて, 実際にメールが来るか確認した. しかし, メールは届かなかった. /var/log/syslog を見ると,

CRON[8360]: (CRON) info (No MTA installed, discarding output)

とあった. これは [Memo2018][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 が起動していたので, 停止した.

# /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 の先頭の方に次の行を書き足した.

#!/bin/sh
# by Yasuhiro MORIKAWA, 2007-08-10. We need not exim.
if [ ! -f /etc/exim.conf ]; then
  exit 0
fi

そして, 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

動作テスト (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 の証明書を取得したのちに再び確認することにする.

テスト終了後は元の時刻に戻した.

Last modified:2018/11/14 12:43:01
Keyword(s):
References:[[ITPASS2018]2018年度サーバ構築ログ]