いろいろメール環境を変更

いままではSquirrelMailを使っていたのですが、今風のAjaxなメーラーに変更してみようかと思ってみた次第。
選択肢はRoundCubeとAtMail
(実はMySQLのバージョンアップもこのためだったり)

RoundCubeはすんなり稼働したのですが、AtMailの方はログイン時の認証がuser@domainを要求するのですね。
家でもDovecotを使用しているのですが何となく内部利用のみなのでいままで/etc/passwd認証だったのでした。
で、Dovecotのサイトを見てみると仮想の関係で@domainでの認証も出来るのですね。

http://wiki.dovecot.org/VirtualUsers

ということで、使う当ては無いけどついでに複数ドメインにも対応させちゃおうかなと。
まず、いじった箇所。

dovecot.conf:
auth default 内に追加

passdb passwd-file {
args = /etc/postfix/dovecot-passwd
}
userdb passwd-file {
args = /etc/postfix/dovecot-passwd
args = /etc/postfix/dovecot-passwd
}
userdb passwd-file {
args = /etc/postfix/dovecot-passwd
}
passdb pam {
}

こんな感じにエントリーを修正or追加します。
ここで指定している/etc/postfix/dovecot-passwdは/etc/passwdの代わりになるもので、内容はこんな感じに

${ユーザ}@${ドメイン}:{CRAM-MD5}xxxxxxxxxx:${UID}:${GID}::${ホームディレクトリ}

/etc/passwdと同じフォーマットでエントリしてあげればおk
(pam以外だとユーザのuidとかhomeの位置も分からなくなるのでこんな感じに書きます)

一番最後のpamはエントリされていない人用

確認方法はtelnet localhost 110なり143なり接続して試してください。
とりあえずこれでuser@domainでの認証は出きるようになりました。

さらに調べてると、なんとdovecotを使ってsasl認証も出きるのですね!
それならCyrus-saslは要らなくなる。

そんなわけで、さらにdovecotといっしょにpostfix側もいじる。

main.cf:
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth-client

dovecot.conf:
auth default 内のsocketを編集
socket listen {
client {
path = /var/spool/postfix/private/auth-client
mode = 0660
user = postfix
group = postdrop
}
}

postfixとdovecotはお互いに上で指定したsocketを使ってお話します。
このsocketはdovecotが作成するので、postfixが読めるようにユーザ:グループを設定してあげます。
場所はお互いに読めればどこでも良いと思う。

あとはsmtp-authでdovecot-passwdにエントリしたユーザ名で認証出来ればおkです。

で、最後にメールユーザを/etc/passwdから分離する。

まずはpostfixさんのページを読む。
http://www.postfix-jp.info/trans-2.3/jhtml/VIRTUAL_README.html

virtual_mailbox_domains = ${追加するドメイン}
virtual_mailbox_base = ${ベースになるディレクトリのフルパス}
virtual_mailbox_maps = dbm:/etc/postfix/vmailbox
virtual_minimum_uid = 500
virtual_uid_maps = static:10000
virtual_gid_maps = static:10000

postfixがメールを書き込む時のフルパスは
${virtual_mailbox_base} + ${virtual_mailbox_mapsの右側フィールド}
となるので、virtual_mailbox_mapsの中身は最初に設定した/etc/postfix/dovecot-passwdと矛盾が起きないようにしまふ。

/etc/passwdにアカウントがエントリされないので、ストアされるメールの所有権はvirtual_uid_maps:virtual_gid_mapsとなります。chownをお忘れ無く。

と、ここまでやってようやくAtMailOpenを試せた訳ですが、画面の見た目はきれいなんだけど、所々日本語の扱いが今ひとつなのでRoundCubeの方がいいかな。