2007/05/25(金)FreeBSDはなぜ標準で APOP に対応していない?

FreeBSDでは比較的標準的に利用される pop デーモンである popa3d は、なぜか apop をサポートしていません。不思議に思ってつらつらと man を読んでいたら、次のように書かれていました。

POP3 transmits passwords in plaintext and thus, if you care about the security of your individual user accounts, should only be used either in trusted networks or tunneled over encrypted channels.

There exist extensions to the protocol that are supposed to fix this problem. popa3d does not support them yet, partly because this isn't going to fully fix the problem. In fact, APOP and the weaker defined SASL mechanisms such as CRAM-MD5 may potentially be even less secure than transmission of plaintext passwords because of the requirement that plaintext equivalents be stored on the server.

英語の練習がてら意訳してみますと、

POP3 はパスワードを平文で送ります。あなたのアカウントのセキュリティーが心配でならば、信頼されたネットワークか暗号化された通信経路を用いてください。

この問題を解決するためのプロトコルの拡張(注:APOP等のこと)が存在しますが、popa3d はサポートしていません。なぜなら、この拡張は問題を部分的に解決しますが完全な解決にはならないからです。実際、APOP や脆弱性のある SASL では CRAM-MD5 のような方式が使われおり、サーバに直接平文パスワードを記述する必要があるため、場合によっては平文パスワード認証よりもセキュリティーが劣ってしまいます。

つまりは、いくら通信路の安全を守るためとは言っても、サーバ上に大量のユーザーの平文パスワードを記述することはセキュリティ上問題ありませんかということですね。

調べてみると、apop自体に問題があるらしいですが。

結局popもftpもダメで、ssh(ssl) でトンネルしたもの以外は現状信用できないということになるんでしょうねぇ……。PAM の元に SMTP も POP も安全な形で統一してほしいのココロ。*1

*1 : ftpはsftpで問題なし

2007/05/08(火)fml + mhonarc による公開メーリングリストの構築

某所においてもともとfml4を使っていたのですが、www公開(html化)の際のデータが中途半端だったためfml8に移行しました。そこそこ綺麗に表示されたのですが、単一表示の状態から現在スレッドを辿ってメール表示することができないため、mhonarc に入れ替えました。その作業記録です。

MHonARC

MHonARCはメールをhtml化するプログラムです。ダウンロードはこの辺。FreeBSDのportsならば www/mhonarc にあります。fml のメールデータをhtml化する場合は例えば次のように行います。

mhonarc -add /var/spool/ml/xxx/spool -outdir /www/xxx

メールをhtml化した際のデータは DB ファイルに保管されていますので、すべて再生成したいときは次のようにします。

$ rm -f /www/xxx/*.html /www/xxx/.mhonarc.db

rcfile

MHonARCの設定ファイルをrcfileと言います。mhonarc は実行時に引数としてパラメーターを渡す方法とrcfileに書く方法、環境変数の3種類で動作指定ができます。ここでは rcfile を利用することにしました。

UTF8を使用することにしますので、サンプルである examples/utf-8.mrc をコピーします。公開アーカイブを置く /www/xxx にコピーしてしまいましょう。MHonArc Reference Manual から rcfileの設定項目 を参照して設定を書き換えます。

設定ポリシーとしては

  • メールアドレスは秘匿する(SPAM対策)
  • 余計なヘッダを出力しない

です。

<NoPrintXComments>
<SpamMode>
<IDXSIZE>
100
</IDXSIZE>
<MultiPG>
<NoMailTo>
<Reverse>
<Modtime>
<EXCS>
To
Subject
List-
Reply-to
In-reply-to
References
Domainkey-signature
Dkim-signature
</EXCS>
<LiTemplate>
<li><strong>$SUBJECT$</strong>, <em>$FROMNAME$</em></li>
</LiTemplate>

の設定項目を追加しました。

  • NoPrintXComments …… X-XXXX という形式でヘッダを出力する機能をオフにする
  • SpamMode …… Spam対策用のメールアドレス秘匿機能を on にする
  • IDXSIZE …… 100件ごとに index ファイルを分ける
  • NoMailTo …… MailTo をリンクしない
  • Reverse …… 逆順でソートする(新しいメールをページ先頭に)
  • EXCS …… 出力しないヘッダを指定する(先頭一致)
  • LiTemplate …… メール一覧ページで、1メール=1行で表示するための設定

mhonarc の自動更新設定

aliases ファイルを用いて mhonarc を自動的に更新します。

/var/spool/ml/xxx/mhonarc.include
"| /var/spool/ml/xxx/mhonarc.sh"
/var/spool/ml/xxx/mhonarc.sh
#!/bin/sh
/usr/local/bin/mhonarc \
        -rcfile /www/xxx/utf-8.mrc \
        -outdir /www/xxx \
        -add /var/spool/ml/xxx/spool

というファイルをまず用意します。sh ファイルには実行権限を付けておきましょう。

メーラーの aliases に次の1行を追加します(メーラーにより場所が変わります)。

mhonarc-xxx: :include:/var/spool/ml/xxx/mhonarc.include

sendmail ならば newaliases コマンドが必要でしょう。aliases ファイルから直接コマンドを実行しないのは、include ファイルを一度経由させることで、includeしたファイルの所有者権限でコマンドを実行できるからです。

ここまでの設定で、mhonarc-xxx@domain.nameにメールが届くたびにメーリングリストの公開wwwが更新されます。ですから、メーリングリストの受信者として mhonarc-xxx@domain.name を登録すれば設定完了です。

fmlならば /var/spool/ml/xxx/actives が受信者のリストですので、次のようにしましょう。

$ makefml add2actives ml-name mhonarc-xxx@domain.name

fml8メモ(無関係)

fml8の設定メモです。特に関係はありません。

article_subject_tag     = [$ml_name %05d]
article_header_rewrite_rules += rewrite_article_subject_tag
article_header_rewrite_rules += rewrite_reply_to_enforce_article_post_address

use_html_archive = no
html_archive_dir        = /xxxx/$ml_name/