カテゴリー
Mac NetBSD

Postfix + Dovecot + ClamAV + SpamAssassin + Mailman + Roundcube = Lion Server Mail?

NetBSD では確か Maildir 形式の imapd が使いたいって理由で Courier-imap を IMAP サーバーとして使っていたのですが、 Lion Server ではデフォルトが Dovecot だとゆーのでそれに移行することにしました。で、 Lion Server では Dovecot に併せて Postfix, ClamAV, SpamAssassin ぐらいまではほぼ全自動で有効化されるので、それらも併せて使うことにしたのです。

ちなみに NetBSD では

  1. プロバイダに配送されたメールを fetchmail で取得
  2. 受けたメールは procmail が bogofilter に喰わせて、SPAM じゃなければ ~/Maildir に、 SPAMだったら ~/Maildir/.bogofilter に配送
  3. 特定の条件にマッチしたら PHS に転送
  4. ~/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 側で振り分けて転送しちゃえばいいや、ということに落ち着いたのです。

まとめると最終的な移行手順はこんなになりました。

  1. NetBSD での fetchmail 停止(fetchmail –quit)
  2. imapsync によるメールコピー
  3. Lion Server で sieve による転送設定(Roundcube から設定するしかない?)
  4. プロバイダメールの転送設定
  5. 1-4の間に届いたプロバイダメールの取得
この前作業として、自宅 IP が名前解決できるようにしてみたり、 mx が引けるように DNS を設定したりということもあるのですが、自分の中で目新しいことをしてないので省略。
ということで、 SpamAssassin の判定精度にかなりの不満があるのですが、とりあえず Lion Server でメール環境が動き始めたのです。
そーいえば書き忘れてましたが、 Server.app のメールで “Webメールを有効にする” にチェックを入れて Web を有効化すると https://your.server/webmail/ で Roundcube という Web メールが使えるようになって、これの個人設定 – フィルターで sieve の振り分けが弄れます。というか今見つけられた範囲だとここからしか弄れないという…。
いろいろ不満があるように見えるでしょーけど、これらの各種メールサービスの連動をほぼなにも考えずに出来るって意味では Lion Server は非常に優秀で、この GUI のために \4,600 払っても悔いはないかもしれないです。まぁ、 GUI に隠蔽されちゃってる部分を弄ろうと思うと面倒なので、慣れてる人にはやっぱり不要なんでしょうけどね。

コメントを残す