もっと簡単に使えないか?

上の方法はsendmailというデーモンを起動するためメモリなどの資源を喰ってしまう。やりたかったのはマシンの状態を定期的にメールで送るだけなので、メールは基本的に受取らない。そういった場合ではlocal-host-namesは変更せずに、submit.mcをもう1行変更すればいい事が分かった。submit.mcの最後の行を変更する。オリジナルは以下の様になっているが、

	:
	:
33  dnl If you use IPv6 only, change [127.0.0.1] to [IPv6:::1]
34  FEATURE(`msp', `[127.0.0.1]')dnl

これを次の様に変更する。

	:
	:
33  dnl If you use IPv6 only, change [127.0.0.1] to [IPv6:::1]
34  FEATURE(`msp', `smtp.g-mail.com')dnl

"smtp.g-mail.com"は使っているプロバイダのsmtpサーバを指定する。この変更で、投函されたメールは全てこのマシンに送られる。sendmailをサービスとして動かさなくてもメールの投函のときに処理をしてくれる。ただし、メールを受取ることはできなし、ローカルなユーザに送ろうとしたメールもプロバイダに渡され、エラーで受け付けてもらえないだろう。

なぜ、この変更でそういったことができるのかだだが、sendmailは投函用のsendmailと、メール中継用のsendmailと2人いて(勿論、一卵性双生児である)、投函用のsendmailは"submit.cf"を、中継用のsendmailは"sendmail.cf"を参照して処理を行なう。変更前のsubmit.mcを見ると分かるが、投函用のsendmailは封筒(ヘッダー)の処理を終えると"127.0.0.1"、つまり自分自身のマシンで動いている兄弟の中継用sendmailへ送る。中継用のsendmailはいつメールが送れてくるか分からないから、基本的にはデーモンとして動いている必要がある。しかし、投函用のsendmailが直接プロバイダのsmtpサーバへメールを送ってくれれば、転送用のsendmailを常時動かす必要はなくなる。(「sendmail 8.12とMILTER」の図は分かりやすいと思う。)

昔はsendmailは一人で頑張っていたのに。