1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Get periodic log via mail

Last updated at Posted at 2014-10-19

periodic maintenance reportsをメールで受け取る方法についてメモ。
またメールに送り出すと、/var/log/daily.outといったローカルファイルには書き出されなくなる。それはそれで嫌だなーということで、ローカルファイルにも書き出しつつ、メールでも受信するようにした。
OS X Server特有のイケてないとこの回避策も合わせてメモする。

periodic maintenance とは

定期的に行うメンテナンスの仕組みで古くからある仕組み。毎日、毎週、毎月の3つのタスクが用意されている。統計情報をまとめてくれたり、/tmpの掃除をしたり、いろいろ便利だったりする。その結果は、/var/log/daily.outなどのファイルに書き出される

periodic の設定ファイル

periodic maintenanceの設定ファイルは、 /etc/defaults/periodic.conf です。この中に
periodic_conf_files="/etc/periodic.conf /etc/periodic.conf.local"
という行があります。これらのファイルの中の設定値が /etc/defaults/periodic.conf の設定を上書きするというわけです。これらのファイルは標準では存在しないので自分で作る必要があります。私は /etc/periodic.conf.local を作成しています。

/etc/periodic.conf.local の中でメール送信の宛先を記載する。

こんな感じで記述します。

# Mail Report settings
daily_output="dailyreport@osxserver.example.com"
weekly_output="weeklyreport@osxserver.example.com"
monthly_output="monthlyreport@osxserver.example.com"

osxserver.example.com はサーバ自体のことです。

OS X Serverでメールサービスを実行

サーバがローカルでメールを発信しそれを受信配送する必要がありますから、メールサービスを動かします。OS X ServerではONにするだけなので、細かい説明は抜きます。
dailyreport などの宛先は予めあるわけではないのでそれを用意します。 /etc/aliases ファイルにalias設定を追記します。

# Periodic Reports
dailyreport:    /var/log/periodic.outs/daily.out, myaccount@icloud.com
weeklyreport:   /var/log/periodic.outs/weekly.out, myaccount@icloud.com
monthlyreport:  /var/log/periodic.outs/monthly.out, myaccount@icloud.com

これでnewaliasesコマンド発行後、ローカル配送されたメールが、ローカルの /var/log/periodic.outs/*.out に書き出されつつ、その後ろに書いたメールアドレスに外部配送されるようになります。

/var/log/periodic.outs/なわけ

標準では、/var/log/*.outに書き出されますが /var/log/periodic.outs/ にした事には理由があります。
メールサービス(postfixです)がファイルを書き出すときlockファイルを作るのですが、 /var/log はpostfixユーザにとってwritableではありません。と言って、このディレクトリに書き込み権を与えるのもちょと変です。そこでサブディレクトリを作成してそこに書き込ませるようにしました。また、ファイルのownerはnobodyですからowerをnobodyに設定しています。

$ ls -la  /var/log/periodic.outs
total 3928
drwxrwxr-x    5 nobody  _postfix      170 Oct 19 10:37 ./
drwxr-xr-x  123 root    wheel        4182 Oct 19 10:36 ../
-rw-r--r--    1 nobody  _postfix  1624777 Oct 19 10:37 daily.out
-rw-r--r--    1 nobody  _postfix   176713 Oct  7 03:11 monthly.out
-rw-r--r--    1 nobody  _postfix   204568 Oct 15 01:13 weekly.out
$ 

互換性(?)を取るためにシンボリックリンクを張っておくのもいいかもしれません。

$ cd /var/log
$ ls -l *.out
lrwxr-xr-x  1 root  wheel  32 Oct 19 10:35 daily.out@ -> /var/log/periodic.outs/daily.out
lrwxr-xr-x  1 root  wheel  34 Oct 19 10:36 monthly.out@ -> /var/log/periodic.outs/monthly.out
lrwxr-xr-x  1 root  wheel  33 Oct 19 10:36 weekly.out@ -> /var/log/periodic.outs/weekly.out
$ 

OS X Serverのちょっとイケてないとこ

OS X Serverのpostfixの設定ディレクトリは、標準的な /etc/postfix ではありませんが、このディレクトリとその中のファイルは存在しています。 実際使われているのは、 /Library/Server/Mail/Config/postfix です。なので、postfixの設定ファイルを見るコマンドpostconfでは -c スイッチを忘れずにつけないとハマります。そしてaliasesの設定を確認します。

$ postconf -c /Library/Server/Mail/Config/postfix 2> /dev/null | grep -e ^alias 
alias_database = hash:/etc/aliases
alias_maps = hash:/Library/Server/Mail/Config/postfix/aliases

この状態でnewaliasesをするとaliasesのhash dbが /Library/Server/Mail/Config/postfix/aliases.db で更新されるのですが、実際配送するときには、 /etc/aliaes.db を見ているようです。 /var/log/mail.log には、

warning: database /etc/aliases.db is older than source file /etc/aliases

というエラーが出力されます。
そこで、シンボリックリンクを張ることでこの問題を回避することにしました。

$  ls -l /etc/aliases.db 
lrwxr-xr-x  1 root  wheel  46 Oct 19 09:25 /etc/aliases.db@ -> /Library/Server/Mail/Config/postfix/aliases.db
$ 
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?