Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
速報sendmail 8.12 (FreeBSD PRESS No.7)
[go: Go Back, main page]

速報sendmail 8.12 (FreeBSD PRESS No.7)

梅本肇 / ume@mahoroba.org

 先日sendmail 8.12.1がリリースされました。
 4.4-RELEASEに向けてのコード・フリーズ後のリリースであり、変更点が多いことも伴って、残念ながらFreeBSD 4.4-RELEASEには入りませんでした。 4.4-RELEASEのsendmailは8.11.6です。
 しかしながら、いち早く8.12を使ってみたい方もおられると思いますので、少し紹介したいと思います。 ちなみに、sendmail-8.12.0はセキュリティホールが見つかっていますので使用しないでください。 対策済みの8.12.1を使用しましょう。

1. setuid rootの廃止

 8.12の特長は、セキュリティ回りの見直しです。 セキュリティを考えたとき、rootにsetuidされたバイナリは嫌なものです。 いよいよsendmailはrootにsetuidされなくなりました。 代わりに、sendmailが使用するグループにsetgidされます。
 sendmailをインストールする前に、sendmail用のユーザとグループを作っておく必要があります。 これらのデフォルトはsmmspですので、インストール前にsmmspというユーザとグループを作っておきます。 また、sendmailをインストールすると、/var/spool/clientmqueueが作られ、/etc/mail/submit.cfがインストールされます。
 この新しい型式では、メールを受信するデーモンが使用するsendmail.cfと、メール送信時に使用するsubmit.cfの2つの設定ファイルを使用します。
 sendmail.cfは従来のものでも使えるはずです。 ただし、フォーマットがV10/Berkeleyに上がっていますので、8.12.1付属のcfを使ってsendmail.cfを生成し直しましょう。
 FreeBSD添付のfreebsd.mcは基本的に大丈夫なことを確認しています。 しかし、access_dbの設定の一部に変更があり、.cfの生成に失敗します。 図1は、/usr/share/sendmail/cf以下を8.12.1添付のものに入れ換え、/etc/mailでmakeしたところです。
図1 8.12のcfではfreebsd.mcからの生成に失敗する
ume@cheer:133# make
/usr/bin/m4 -D_CF_DIR_=/usr/share/sendmail/cf/   /usr/share/sendmail/cf/m4/cf.m4 /etc/mail/cheer.mahoroba.org.mc > /etc/mail/cheer.mahoroba.org.cf
*** WARNING: missing -T<TMPF> in argument of FEATURE(`access_db', hash -o /etc/mail/access)
 このエラーメッセージに従って、access_dbの設定をリスト1のように修正することで、無事.cfを生成できるようになります。
リスト1 freebsd.mcの修正
FEATURE(access_db, `hash -T<TMPF> -o /etc/mail/access')
 また、
define(`confDONT_BLAME_SENDMAIL',`GroupReadableSASLFile')
を指定している場合、
define(`confDONT_BLAME_SENDMAIL',`GroupReadableSASLDBFile')
に変更する必要があります。SMTP AUTHを使用している場合は注意して下さい。

 sendmailをinetdから起動するようにしている場合には注意が必要です。 この場合、sendmailはsendmail.cfではなくsubmit.cfの方を使用してしまいますので、ループしてしまいます。 inetdから起動する場合、-bsに加えて、明示的に-C /etc/mail/sendmail.cfを指定する必要があります*1)

 なお、従来通りの動きとなるようにインストールすることもできます。 rootにsetuidする形でインストールするには、

sh ./Build install-set-user-id
と、引数にinstallの代わりにinstall-set-user-idと指定してBuildを実行します。
 ただし、この場合も、8.12のその他の新しい機能を使用したい場合はsendmail.cfの作り直しが必要です。
 詳細はsendmail/SECURITYを参照下さい。

2. Srv_Features

 もうひとつ嬉しい点として、SMTP AUTHが使いやすくなりました。 8.11では、一旦SMTP AUTHを有効にすると、EHLOに対して必ず250-AUTHを返しました。 250-AUTH PLAINが返ってくるとNetscapeは必ずSMTP AUTHを使用しようとするので、パスワードが設定されてないとメールが出せなくなるという問題がありました*2)
 8.12では、Srv_Featuresという機能が追加されています。 access mapに記述された特定のホストあるいはネットワークから接続された場合に、EHLOに対して、指定された機能を返さなくできます。 この機能を使って、250-AUTHを返したくないホストあるいはネットワークにAを指定しておくと、上述の問題を回避できます。 例えば、リスト2の例では、example.comドメイン、IPv6アドレスが3ffe:505:2::/48、および、IPv4アドレスが202.227.26/24からの接続に対しては250-AUTHを返さなくなります。
リスト2 /etc/mail/accessの設定例
Srv_Features:example.com	A
Srv_Features:IPv6:3ffe:505:2	A
Srv_Features:202.227.26.32	A
 これまで、SMTP AUTHは実際に運用しようとすると悩ましかったわけですが、これで、現実のものになるでしょう。

3. おわりに

 8.12には他にも多くの機能が追加されています。 特に、SMTP AUTHやSTARTTLSを使用する際に細かい設定ができるようになっているのが魅力です。 これらは8.10, 8.11で追加・改良されてきた機能ですが、8.12で完成したという感じがします。
 今回は入稿期限間際のリリースということで、非常に簡単な紹介になりました*3)。 次号ではもう少し詳しく解説したいと思います。


*1) 筆者は、Beta版のある版からインストール時のデフォルトが変更になったのに気付かず、全く動かなくてしばらく悩みました。^^;
*2) 未確認ですが、~/.netscape/preferences.jsでmail.auth_login = falseにすればSMTP AUTHを使わないようにできるらしいという情報もあります。
*3) 編集長の前で口を滑べらしたのがまずかった。急拠書けとの命令が...以下略。:-)


All Rights Reserved, Copyright (C) 2001 Hajimu UMEMOTO
Last Modified Oct 19, 2001
ume@mahoroba.org