2001-12-12 [長年日記]

_1 献立

せせり (鶏の首のほうの肉) と萌 (もやし) の玉子炒め、ご飯/納豆と鱈子のフェトチーネ

_2 imapext でセキュアかつ現実的なメールサーバ

メールの送受信をセキュアにしたい、というのは管理者にとってのみならず、ユーザにとっても当然の要求と言えると思いますが、そうは言ってもメーラをのりかえるのは嫌だ、とかいう頑な意見も強く、「じゃあ、どうせえっちゅうねん!」とお悩みのかたも多いかと思います。

そこで、広瀬さん がメンテナンスされているUW-IMAPD てんこもり拡張パック (imapext) を使って、セキュアかつ「現実的 」なメールサーバを構築してみました。

基本方針は以下のとおり。

  • 少なくとも認証は必ず暗号化する (当たり前)
  • pop3 (など) before smtp で外部からもメールを送れるようにする (SMTP-AUTH にしたいが...)
  • パスワードはユーザ自身に管理させる (疑心暗鬼になられるのは嫌だし)
  • xinetd を使う (tcpserver でもいいけど)
  • メールスプールは ~/Maildir (ディスクトラブル時に本当にありがたい)

というわけで、具体的には次のような方針をとります。

  • pop3 (110) は、APOP 認証のみ。対応メーラは多いが Outlook 系と Netscape 系がだめ。
  • pop3s (995) は、POP 認証も APOP 認証も許可。Outlook 系と Netscape 系はこちらをどうぞ。
  • imap2 (143) は、CRAM-MD5 認証のみ。対応メーラはあまり多くない。
  • imaps (993) は、LOGIN 認証も CRAM-MD5 認証も許可。Outlook 系と Netscape 系はこちらをどうぞ。

このうち、imap2 については、積み残しています。というのも、imapext の売りである「ユーザ個人が管理するパスワード」を CRAM-MD5 のパスワードとして使うように改造する必要があるからです (現状では /etc/cram-md5.pwd で管理者が一元管理)。そのうちやるかもしれませんが、ちょっとわかりません。
pop3s については、環境変数 INTRANET が定義されていれば POP 認証を許可するので、/etc/xinetd.d/pop3s に、

env         = INTRANET=""

を追加します。

また、pop3/pop3s/imap2/imaps before smtp を実現するには、たとえば /etc/xinetd.d/pop3 の場合、

flags       = NAMEINARGS
server      = /usr/sbin/tcpd
server_args = /usr/sbin/imapd 

のように tcpd 経由で呼び出して NAMEINARGS を flags に指定します。

あとは、README.qmailapop をちゃんと読んだうえで、/etc/hosts.allow の「一番上に」

ipop3d : all : setenv RELAYCLIENT %h
imapd : all : setenv RELAYCLIENT %h

を追加します (はじめ、それよりも前に「ALL : 192.168.1.1/255.255.255.0 」があって、うまくいかずに悩んでいました)。さらに、pop3-record スクリプトを自分の環境にあわせて書き換えたり、pop3-age を忘れずに cron に登録したりすれば完成です。

ただ、pop3s や imaps をやるなら、結局は SSL の証明を買わなければいけないのか (日本ベリサイン で約 8 万円/年) という問題にぶつかります。セルフ証明の鍵をユーザにインストールしてもらう、という方法もないわけではありませんが、それをみんなにわかりやすく説明するためのコストを考えれば、「それくらいの金額は出してください」というのが本音ですよね。どう説得しようかしら。

ゆくゆくは、前述の imap2 での CRAM-MD5 認証や SMTP-AUTH の認証を「ユーザ個人管理パスワード」と連携させていきたいのですが、とりあえずはこれで一応の目的は果たせたかな、と思っています。

[]