Daily Archives: 03/04/2012

FreeBSDのsendmailを黙らせるには

Pocket

自宅サーバのsendmailは正直不要です。と思うことはしばしば。

てっとり早く結論を言えば、以下を/etc/rc.confに追記すればよい。なお、「sendmail_enable = “NONE”」はもう使われていないので注意。詳細は後述。

/etc/rc.confへの追記

しかし、handbook 29.4.2 Disable sendmail に記載の通り、以下の懸念がある(2012/3/1)。

Warning: もしこの方法で sendmail のメール送信機能を無効にしたのなら、 完全に動作する代替メール配送システムと置き換えることが重要です。 さもなければ、periodic(8) などのシステム機能は、 それらの結果を通常想定しているようにメールで配送することができなくなるでしょう。

システムの多くの部分が sendmail 互換のシステムがあることを想定しているかもしれません。 もしそれらを無効にした後に、 アプリケーションがメールを送ろうとするために sendmail のバイナリを使用し続ければ、 メールは使われていない sendmail のキューに入り、そして決して配送されないでしょう。

つまりroot等に送られるreportがsendmailのキューにたまり続ける。

(なお、日本語版handbookはどうしても古くなりがちなので、原版も確認すること!)

FreeBSDのベースシステムが送るメールなら、periodicあたりを修正すればよいだろうが、portsなどからインストールするソフトウェアのことも考えるときりがない。

sendmailを動かしたくない目的にもよるが、現実的なところでは外部からのsmtp接続を無効にするだけでいいだろう。

こうした場合の別の懸念としては、意図せずに自サーバが外部へのsmtp接続を試みること、さらに言えば、おかしなメールをバラ撒こうとすることだ。

が、仮に外部へのsmtp接続を無効にしたくとも、rc.confの設定だけではできないようだ。これについては改めて考える。

外部からのsmtp接続を受け付けない場合には、/etc/rc.confに下記を追加すればよく、かつ少なくとも9.0、8.2ではデフォルト設定だ。

/etc/rc.confでの外部からのsmtp接続を受け付けない設定

以下のみを/etc/rc.confに追記

なお、上記はデフォルト

【参考】以下はもう使われていないので注意。

man rc.sendmailより

さらにkwsk

FreeBSDにおけるsendmail起動の設定は、以下の変数にYES/NOを代入することで行う。

使い方はrc.sendmail(8)に記載されている。

これらは最初の3つと1つに分かれる。

最初の3つはセットになっており、一つ目がYESの場合は残り二つが参照されない。

一つ目がNOで、二つ目がYESの場合は最後の一つが参照されない。

したがって、3パターンの設定ができることになり、各パターンについて調べた結果は以下の通り。

・パターン1: デフォルト

外部からのsmtp接続を受け付けない。

内部からのsmtp接続は受け付け、外部への送信は可能。

・パターン2:

外部、内部ともにsmtp接続を受け付けない。

つまりroot等に送られるreportも届かなくなる。

ただちょっと分からないのは、「”local mail queue management”を提供する」とmanには記載されているのだが、外部、内部ともにsmtp接続を受け付けない状態でのlocal mail queueとはいったいなんだろうか。一応、この状態ではroot権限でsendmailが「Queue runner」として起動する。

パターン3:

この状態ではroot権限のsendmailは一切起動しない。

上記を別の形で表現すれば以下の通り。(rc.sendmail(8)より引用)

なお、sendmail_msp_queue_enableは、smmsp権限で動くQueue runnerの動作スイッチ。

NOを指定すれば起動しない。

No tags for this post.