2004年3月18日アーカイブ

現在のうちのメールは、imap-uwとBecky!そしてqpopperとDatula、Zaurusで読んでいます。
MTAはpostfixです。
そいでもってprocmailでメールの振り分けなんてことをしているわけです。
会社では、MUAがWanderlustだったりします。
WanderlustだとMHフォルダ形式で、Becky!だとmailbox形式で、同じメールが読めないと言う素敵な状態・・・。
SpamAssassinに学習させようにも、メールがファイル単位じゃないので面倒です。
いろいろ調べていたら、Maildir形式でメールを管理してやると、幸せになれそうな予感がします。
そうすると、以下のことをやらないといけない。
  • courie-imapをインストール&設定
  • postfixの設定変更
  • 現在のメールボックスの形式を変換
  • クライアントの設定を変更
うちの場合、私だけで3つのメールアドレスを使い、他にも二人の人にメール環境を提供しているので、サービス停止時間は最低限に抑える必要があります。
む~、地道な調査を先にやる必要がありそうだなあ・・・。
と、言うわけで、メールのMaildir化計画の調査編です。
  1. courier-imapのインストール
    portsから、mail/courier-imap をインストール。Makefileを読んだ感じでは、WITH_CRAMとWITH_DRACを定義してやれば良い感じ。
  2. courier-imapの設定
    /usr/local/etc/courier-imap にある設定ファイルを書き換えるらしい。インストールしてみないと中身のイメージがわかないな。
    とりあえず、IMAP_CAPABILITYの行に AUTH=CRAM-MD5とか追加するらしい。(うちは、PLAINテキストは禁止の方向で)
  3. SSL用の証明書の作成
    mkimapdcert, mkpop3dcertを実行するらしい。(もっとも、BeckyはSSLに対応していないらしいけど)
  4. md5パスワードの作成
    # userdbpw -hmac-md5 | userdb ユーザ名 set hmac-md5pw
    # makeuserdb
    
  5. 起動スクリプトの作成
    /usr/local/etc/rc.d/ にあるsampleファイルを.shにリネーム
  6. inetd.confの修正
    imapとpopのエントリーをコメントアウト
  7. postfixの設定
    main.cfのhome_mailboxを設定
    home_mailbox = Maildir/
    
  8. mailbox形式のメールのMaildirへの変換
    どうやろう?
  9. 個人の設定
    ホームディレクトリにMaildirディレクトリを作成。
    .procmailrcの書き換え
と、ここまで調べて、courier-imapのpop3dは、apopに対応していないことが発覚!パッチは存在するみたいだけど・・・。
apop対応パッチは最高で2.1.1用まで見つかった。現在のFreeBSDのportsで入るのはcourier-imap 3.0.1。一応、自分でソースいじればなんとかなりそうだけど、それもいまいちな気がするなあ・・・。
一方、uw-imapの方をMaildirに対応させちゃえ!なんて試みもあるらしく、どっちが良いのかしらん・・・。
なかなか要求を満たすimap/pop3サーバはないな~と思ってうろうろしていたら、ひらめきました!
procmail関係のページを見ていたときに、procmailがMaildir形式のメールを格納できるってことが書いてあったのです。
  • hoge だと mailbox形式
  • hoge/. だと MHフォルダ形式
  • hoge/ だとMaildir形式
と、言うことは、postfixとqpopperはそのままで、.forwardからprocmailにかませたときにMaildirに配送してあげれば、popユーザは従来どおり、IMAPユーザはMaildir形式と言う使い分けができるのです!
と思ったら、以下のページを発見。同じことを考える人はいるのね~。
MTA(postfixなのだが)をMaildirな設定にしなくてもprocmail(3.14以降)を噛ませばMaildirにできるやん。しかもsystemwideじゃなく、user別に。

そこで、この路線で作業開始です!(さきほどの調査の項とだいぶかぶりますが・・・)
  1. まずは、portsからcourier-imapをインストール。make引数は WITH_DRACとWITH_CRAM
  2. 続いて、courier-imapの設定。
    # cd /usr/local/etc/courier-imap
    # cp authdaemonrc.dist authdaemonrc    ←認証デーモンの設定
    # cp imapd.dist imapd     ←imapdの設定
    # cp imapd-ssl.dist imapd-ssl     ←imapd-sslの設定
    # cp imapd.cnf.dist imapd.cnf     ←imapd-sslのキーを作るための設定
    
    上から順番に、中身をみながら適当に直す。
    • authdaemonrc はそのまま。
    • imapdは、IMAP_CAPABILITYの行をコメントしてあるCRAM_MD5を含む奴と交換。IMAPDSTART=YESに変更。
    • imapd-ssl は、IMAPDSSLSTART=YESに変更。
    • imapd.cnf は、req_dnセクションを自分のサイトに合わせて変更。
  3. SSL用証明書の作成。
    popは今までのqpopperを使うので、imap用のみ。
    # mkimapdcert
    
    このコマンドで、/usr/local/share/courier-imap/imapd.pemができるらしい。
  4. 起動スクリプト
    # cd /usr/local/etc/rc.d
    # rm courier-imap-pop3d.sh.sample
    # rm courier-imap-pop3d-ssl.sh.sample
    # mv courier-imap-imapd.sh.sample courier-imap-imapd.sh
    # mv courier-imap-imapd-ssl.sh.sample courier-imap-imapd-ssl.sh
    
    これは、ポート143と993で使おうと思ってこの二つを残したんだけど、両方のスクリプトからauthdaemon が起動/停止させられるため、両方動いてる状態で片方を止めると認証ができなくなってしまう。まあ、実害はないから良いか。
  5. inetd.confの修正。imapの行をコメントアウトして再起動。
  6. imap用のユーザDBの作成。
    # userdb ユーザ名 set uid=ユーザID gid=グループID home=ホームディレクトリ
    # userdbpw -hmac-md5 | userdb ユーザ名 set hmac-md5pw
    Password:  ←パスワード
    Reenter password:  ←再入力
    # makeuserdb
    
    ※ ここですごくはまったんだけど、uidとかhomeをちゃんと設定してあげないと、エントリーが有効にならないらしい。ユーザ名とパスワードだけ書いてあれば良いような気はするんだけど・・・。
  7. 起動スクリプトを使って、imapサーバを起動。

ここまでが、システムサイドでやること。
後は、個人でメールの配送をMaildir形式にしないといけない。いろいろ探した結果、ここのmbox2maildirで良さそう。
このスクリプトを取ってきてpathを通したら、
% cd
% maildirmake Maildir
% mbox2maildir /var/spool/ユーザ名 Maildir
% mbox2maildir Mail/Sent Maildir/.Sent
% mbox2maildir Mail/Trash Maildir/.Trash
% mbox2maildir Mail/Draft Maildir/.Draft
             :
って感じでimapのフォルダ単位で変換できる。Becky!で試した結果、
  • Beckyから見えるフォルダ名が hoge だとすると、Maildir/.hogeになる。
  • フォルダが階層構造になっている場合は、階層を.で区切る。
  • フォルダ名に . は含められない。
後は、今まではBecky!で受信箱と同じレベルにIMAPのフォルダがあったんだけど、全部受信箱の中になってしまった。
すべてのフォルダの変換が済んだら、最後に .procmailrcを書き換えて新しいメールの配送をMaildirにする。
私の.procmailrcの頭はこんな感じ。
PATH=$HOME/bin:/usr/bin:/bin:/usr/local/bin:.
MAILDIR=$HOME/Maildir
DEFAULT=$MAILDIR/
LOGFILE=$MAILDIR/PROCLOG
LOCKFILE=$MAILDIR/.lockmail
肝は、DEFAULT=の行らしい。後は、今までMHフォルダ用に hoge/. で終わらせてた配送先を、hoge/ に変更して、UNIX側の設定はおしまい。

最後に、Becky!の設定。と言っても、メールボックスの設定の、IMAPフォルダ:のところを、今まで"Mail"だったのを空っぽにするだけで良かった。
Becky!は、sslが使えなくて面白くないので、一応Outlook Expressでも試してみた。
imap, imaps共にPLAIN認証ならばうまく行ったが、md5, sha1共にうまく行かなかった・・・。まあ、imapsで使えばPLAINでも良いとは思うんだけど・・・。

これで、今回のメール環境の改善はおしまい。ちょっとは早くなったかな?
2004年3月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

このアーカイブについて

このページには、2004年3月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2004年3月17日です。

次のアーカイブは2004年3月19日です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 6.1.1