Mac OSXでPostfixが勝手に起動する仕組み

メールを送ろうとしたら送れたので驚いた。

  • Macではメールサーバの設定をしなくても、外にメールが出ていく。
  • プロセスリストを見ても気づかない。
    • sendmailコマンド実行時にpostfixが勝手に起動し、静かに終了する。
  • sendmailを実行するアプリケーション(PHPとか)に要注意。
    • 送るつもりがなかったメールが出てしまっていないか?
    • ログ /var/log/mail.log を確認。
    • スプール /var/mail/ を確認。
      • 手元では_wwwのアカウントにWordPressの通知(配送失敗)が届いていた。

仕組み。

  • launchdが /var/spool/postfix/maildrop を監視している。
  • Postfix版sendmailコマンドが /var/spool/postfix/maildrop にキューファイルを作成する。
  • maildropディレクトリの変化に気づいたlaunchdが /usr/libexec/postfix/master master -e 60 を実行。
    • 「ポイントはQueueDirectoriesだ。...launchdはこのディレクトリを監視し、ファイルが置かれるなど変化があった場合、ProgramArgumentsで指定されたmasterを起動する。」*
  • メール送信後 -e 60 で60秒後に終了する。
    • 「masterは引数の「-e 60」によって60秒後に終了し、再びlaunchdから起動されるまで眠りにつく。」*
    • Postfix manual - master(8) -e exit_time
  • org.postfix.master.plistをアンロードしてからdate | mail -s test dummy@example.com で、maildropにキューがたまるのを確認できる。
  • 起動しっぱなしにしたい場合は、-e 60を外してOnDemand falseに。