ユーザ用ツール

サイト用ツール


serverapps:postfix:ldap2mysql

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

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