子子子子子子(ねこのここねこ)はてブロ部

Macネタが主のIT記事と、興味ある展覧会リストや観覧感想などを書いてますよ。自転車ロードレースも好き。

org.postfix.masterの吐くエラーが鬱陶しい

システムログに

com.apple.launchd[1] (org.postfix.master): 
Failed to count the number of files in "/var/spool/postfix/maildrop": 
No such file or directory

というのがやたらと吐かれる。
クライアントなのになぜpostfixを動かそうとするのか、謎だった。
理由は何となく分かった。

キューと互換性

 ネットワークからの接続や時刻による起動だけではなく、launchdは特定のファイルやディレクトリの更新をチェックするという機能も持つ。これを利用したのがMac OS Xのメールサーバ機能である。Mac OS XはクライアントOSのため通常はメールの送信機能などは不要だが、cronのようなバックグラウンドタスクの中には、/usr/bin/mailを使って処理結果をメールで伝えるものがある。そのためにpostfixが動作するようになっているのだ。

 リスト1は/System/Library/LaunchDaemonsにあるorg.postfix.master.plistの内容だ。ProgramおよびProgramArgumentsキーで、postfixのmasterを動かす設定がなされているのが分かる。
(リスト1省略)
 ポイントはQueueDirectoriesだ。ここでは、QueueDirectoriesの値として /var/spool/postfix/maildropが設定されている。launchdはこのディレクトリを監視し、ファイルが置かれるなど変化があった場合、ProgramArgumentsで指定されたmasterを起動する。masterはキューの内容を確認しpostfixの各プログラムを動作させ、メールの配送処理を行う。masterは引数の「-e 60」によって60秒後に終了し、再びlaunchdから起動されるまで眠りにつく。これによって、普段は不要であるpostfixがメモリやプロセステーブルを占めることもなく、必要なときに必要なだけ効率的に動作する。

第2回 initを置き換えるlaunchd【後編】 (1/3) - ITmedia エンタープライズ

ということで、必要なのでpostfixを動かそうとしている、が、いま我がMacBook Airには/var/spool/以下にcupsしかない。なのでpostfix/maildropが無いぞ、と文句を言っているのだった。
では試しにてきとーな権限で/var/spool/postfix/maildropを作っておく。どうなるかな。



半日経過:エラーは出なくなったので、これで納得したのでしょう。