Courier-imapのLDAP認証からDovecotのMysql(PostfixAdmin)に変更するにあたっての手順記録です。
※今回LDAP上のSHAパスワードがそのまま利用可能でしたが、暗号化形式によっては利用できない可能性もありますのでご注意ください。
なお、インストール等についてはpostfix + mysql + Dovecot + PostfixAdminを参照してください。
Dovecotでの認証に必要なデータは以下の通り。
今回は手を抜いて、Apache Directory StudioからExportしました。
同様のデータが取れれば、slapsearchやLL系の言語でも構いません。
他は大したことありませんがパスワードには注意が必要。
Apache Directory Studio等で見ると以下のように見えますが、この場合はそのままDBにもっていって大丈夫です。
{SHA}IOQCvLkhjTsKOllzHanmYaVUp1w=
LDIFなどで取得すると以下のようになります。この場合はBASE64でエンコードされてますので、デコードの上でDBに格納してください。
e1NIQX1JT1FDdkxraGpUc0tPbGx6SGFubVlhVlVwMXc9
取得したデータをもとにSQL文を生成してMySQLに格納します。
データは、以下の通り。実際の環境に合わせて変更してください。
INSERT INTO `domain` (`domain`, transport, created, modified) VALUES ( "example.com", "virtual", now(), now());
さらに細かい指定をしたい場合には以下のカラムを設定します。1)
カラム | 内容 |
---|---|
description | 説明 |
aliases | 転送アドレス数上限 |
mailboxes | メールアドレス数上限 |
maxquota | メールアドレスの容量上限(MByte) |
quota | ドメインの容量上限(MByte) |
active | 利用の可否(1:利用可) |
INSERT INTO `alias` ( address, `goto`, `domain`, created, modified, active) VALUES ( "mailuser@example.com", "mailuser@example.com", "example.com", now(), now(), 1);
転送アドレスを管理するテーブルですが、このテーブルでaddressとgotoが一致している場合にMailboxへ配送されます。
INSERT INTO mailbox( username, password, name, maildir, quota, local_part, `domain`, created, modified, active) VALUES ( "mailuser@example.com", "{SHA}IOQCvLkhjTsKOllzHanmYaVUp1w=", "おなまえ", "path/to/maildir", 1024000000, "mailuser", "example.com", now(), now(), 1);
ここのQuotaはByte単位です
メールデータを移した際、Courier-imapとDovecotでは、フォルダの命名規則が若干違う。
具体的にはCourier-imapで”.Trash”がDovekotでは”.INBOX.Trash”となる。
いちいち治すのは面倒なので、shellのワンライナーで2)
ls -d .[^.I]* | sed "s/^\(.*\)/mv '\1' '\.INBOX\1'/g" | /bin/sh