NetBSD では確か Maildir 形式の imapd が使いたいって理由で Courier-imap を IMAP サーバーとして使っていたのですが、 Lion Server ではデフォルトが Dovecot だとゆーのでそれに移行することにしました。で、 Lion Server では Dovecot に併せて Postfix, ClamAV, SpamAssassin ぐらいまではほぼ全自動で有効化されるので、それらも併せて使うことにしたのです。
ちなみに NetBSD では
- プロバイダに配送されたメールを fetchmail で取得
- 受けたメールは procmail が bogofilter に喰わせて、SPAM じゃなければ ~/Maildir に、 SPAMだったら ~/Maildir/.bogofilter に配送
- 特定の条件にマッチしたら PHS に転送
- ~/Maildir は IMAP 経由で参照
といったようなことをやっているので、これと同じことを Lion Server でもやるのです。
Server Admin.app からメールサービスを選択して、メールペインの「メールサービスを構成」を押すとあれよあれよとそれなりにセキュアなメールサーバーの設定が出来上がります。んで、設定に満足したら Server.app でメールサーバを「入」にすると目出度くメールサーバーが動き出す、という流れ。 Server Admin.app がやってることは /etc/dovecot や /etc/postfix やらの設定ファイルをゴリゴリ書いてるだけっぽいので、分かってる人には不要っだよねってことで Lion Server には Server Admin.app が最初っから入ってないのかもしれない。…だったら Server Admin.app は最初っからいれて、ヘルプに Server Admin.app がやってることを記載すべきだよなぁ。
NetBSD の Courier-imap から Lion Server の Dovecot の既存メール移行は、どーせ俺一人分だしってことで imapsync を使いました。 pkgsrc であれば mail/imapsync ですね。
imapsync \ --host1 oldhost --user1 goro --passfile1 ./pass1.txt --authmech1 PLAIN \ --host2 newhost --user2 goro --passfile2 ./pass2.txt --authmech2 CRAM-MD5 \ --sep2 / --prefix2 INBOX/
しかしどーやら Drobo S さんが大量のファイル読み書きでストールしちゃうらしく、上記コマンドを何度か繰り返して移行することになってしまいました。
ということで Dovecot でメール取得の準備は出来たので次は procmail でのプロバイダからのメール取得と振り分け。で、 NetBSD では procmail で直接 Maildir にメールを配送していたのですが、 Lion Server 上で動く Dovecot の Maildir は一般ユーザー権限では読み書きできない奥深くに置かれているので同じようにやるのは無理そう、と思って調べたらちゃんと Dovecot のドキュメントに procmail でのやり方が書いてありました。 Maildir がユーザー権限で読み書きできないから、じゃなくって Dovecot 経由でメールをコピーしないと index を更新しないから、って理由でしたが、とにかくこんな感じ。
# file: /etc/procmailrc # system-wide settings for procmail SHELL="/bin/bash" SENDMAIL="/usr/sbin/sendmail -oi -t" LOGFILE="/var/log/procmail.log" DELIVER="/usr/lib/dovecot/deliver" :0 w | $DELIVER -d $LOGNAME
なんだけど、まず、ここに記載してある /usr/lib/dovecot/deliver は Lion Server では /usr/libexec/dovecot/dovecot-lda になったようです。で、 Lion Server に特化した変更点かどーかは知らないんだけど、一般ユーザーからは実行できないという作りになっていたのでした。
じゃあどうする!? と 10 秒ほど悩んだのですが、折角固定 IP を持っているし、 Lion Server の Dovecot は sieve での振り分けまで可能なのでプロバイダから無条件転送をして、 Lion Server 側で振り分けて転送しちゃえばいいや、ということに落ち着いたのです。
まとめると最終的な移行手順はこんなになりました。
- NetBSD での fetchmail 停止(fetchmail –quit)
- imapsync によるメールコピー
- Lion Server で sieve による転送設定(Roundcube から設定するしかない?)
- プロバイダメールの転送設定
- 1-4の間に届いたプロバイダメールの取得