▼FreeBSDのperiodic(8)の通知先をカスタマイズ▼

FreeBSDでは インストール直後から periodic という 定期ログ収集スクリプトがデフォルトで走っていて、 毎日1回、root宛に報告が来ます。

か、メールサーバ(MTA)を止めていたりするとmailqに溜まって困ったりします。

$Id: periodic.html,v 1.2 2006/07/06 07:08:39 kabe Exp $


periodicを完全に止めたい

periodic 自体は /etc/crontab から起動されているので、

	# Perform daily/weekly/monthly maintenance.
	1	3	*	*	*	root	periodic daily
	15	4	*	*	6	root	periodic weekly
	30	5	1	*	*	root	periodic monthly
これらの行をコメントアウトすれば止まります。

素のインストール直後は periodic を止めても そんなに困らないとは思いますが、 パッケージをインストールしていたりすると不具合が出ることもあるので、 スクリプトが集められている /etc/periodic/daily/ の下を確認してからにしましょう。


periodicの出力をファイルに落とす

メールサーバ(sendmailとかpostfix)を動かさない機械では periodicの出力が メールキュー(/var/spool/clientmqueueなど) に溜まる一方なので、 とりあえずファイルに落とすようにすべきです。

/etc/periodic.conf というファイルを作成し、以下を書き加えれば メールではなくファイルに落ちるようになります。

	# /etc/periodic.conf (cf. periodic(8))
	# Things to override from /etc/defaults/periodic.conf
	daily_output="/var/log/daily.log"		# user or /file
	weekly_output="/var/log/weekly.log"
	monthly_output="/var/log/monthly.log" 

daily.log, weekly.log, monthly.log のログ回転については 最初から /etc/newsyslog.conf(5) に書かれているので、 /etc/periodic.conf 以外の調整は不要です。

/etc/periodic.conf で設定できる値のデフォルト値は /etc/defaults/periodic.conf に書かれているので、 ここを参考にしてカスタマイズしてみましょう。


periodicの出力をメールとファイルの両方 に落とす

外部にperiodic出力を転送しつつ、保険のため /var/log/daily.log も残しておきたい、とか。

periodic.conf(5) に daily_output="root,/var/log/maillog" とか書いても ダメです。ので、

メールのaliasesを使ってファイルに落とします。

◇設定

  1. /etc/mail/aliases (5) に、例えば daily_out という aliasを作成します。
    	daily_out: root, /var/log/daily.log
  2. periodic.confの出力を daily_out宛メールにします。
    	daily_output="daily_out"
  3. /var/log/daily.log の権限をmailnullやnobodyに変更します。
    	# chown mailnull:wheel /var/log/daily.log
    	# chmod 640 /var/log/daily.log
    aliasesからファイルに書く場合、MTA (sendmailやpostfix)は
    実ユーザではないので、権限の少ないユーザで
    ファイルを書きにいくため。MTAによってデフォルトが違うので注意。
    実際に誰になるかは設定ファイルに明示されていなかったりで 意外に分からないので、いったんaliasesに
    	daily_out: /tmp/daily.log
    と書いてテストメールを投げて、誰のものになるか調べる、のが最も簡単です。
  4. ログ回転後も権限がそのままになるよう、 newsyslog.conf に変更後の権限を反映させます。
    	#/var/log/daily.log			640  7	   *	@T00  JN
    	## nobody should be writeable to deliver mail to file
    	/var/log/daily.log	nobody:wheel	660  7	   *	@T00  JN
    

◇mailnull所有はいやじゃ

ログをmailnull君の所有にしたくない、という場合は、 一旦普通のユーザ (operator君とか) 宛に daily_output を設定してから、 ~/.forwardで

	\root, /var/log/daily
などとします。依然、chown operator /var/log/daily は必要です。

◇配送時ロックファイル

メールサーバ (配送MTA) の設定によっては、配送時に ロックファイルを作ろうとしてエラーを出す場合があります。

/var/log/maillog:
	Jun 30 04:02:02 myhost postfix/local[32254]: warning: unable to create lock file /var/log/daily.log.lock: Permission denied

◇他

外から見えるメールサーバだと daily_out@ホスト 宛に spamとか来る可能性もあるので、alias名は少しひねったもののほうが 良いでしょう。 万全を期すなら access(5) や smtpd_recipient_restrictions で 固めてください。


かべ@sra-tohoku.co.jp