DovecotもPostgreSQLでアカウント管理


いよいよメールサーバー入れ替え実験も最終局面へ。
前回、PostfixがPostgreSQLで管理されたアカウント情報でメールを受信できるようになったので、残るはDovecotでもPostgreSQLで管理されたアカウント情報でPOP3/IMAP4を使ったメール受信とSMTP認証を可能にしてやる事にする。

Dovecotの設定サンプルにSQLを使った認証のものが用意されているのでコピーして使う
# cp /usr/local/etc/dovecot-sql-example.conf /usr/local/etc/dovecot-sql.conf
コピーしたファイルの編集内容は
driver = pgsql
connect = dbname=postfix user=postfix password=*******
default_pass_scheme = PLAIN
password_query = SELECT login_id AS user, password FROM virtual_maps WHERE login_id = '%u' AND status_flag = 1
user_query = SELECT '/var/mail/' || maildir AS home, 10000 AS uid, 10000 AS gid FROM virtual_maps WHERE login_id = '%u' AND status_flag = 1
といった感じ。

default_pass_scheme を PLAIN にしたのは理由がある。
通常はここをmd5などにしておいて、認証時に暗号化したパスワードでクライアントとサーバ間の通信をさせたいが、DB上のパスワードが暗号化されていると同じ暗号化方式の認証しか利用できなくなり汎用性が低くなる。
しかし、DB上のパスワードを平文で保存しておくことで通信時の暗号化方式に幅が出て、多くのクライアントと通信が可能になる。
パスワードの通信方法を制限したい場合はdovecot.confの認証メカニズム指定で制限をかける方が現実的だ。
また、Outlook ExpressはSMTP認証にLOGIN認証しか使えなかったりするのでcram-md5しか使えなくなると接続できない。
まぁ既に開発が終わってサポートも無くなるソフトなんで使わない方がいいのだが、古いWindowsは未だに現役だししょうがない。
Windowsメールになるとmd5を使った暗号化にも対応しているので、乗り換えが進むといいのだが。

続いて /usr/local/etc/dovecot.conf の編集を行う。
auth default {
 mechanisms = plain login cram-md5 apop
 passdb sql {
  # Path for SQL configuration file, see doc/dovecot-sql-example.conf
  args = /usr/local/etc/dovecot-sql.conf
 }
 userdb sql {
  # Path for SQL configuration file, see doc/dovecot-sql-example.conf
  args = /usr/local/etc/dovecot-sql.conf
 }
}
編集箇所を抜粋するとこんな感じ。

パスワードとユーザー情報の確認にSQLを使えるようにしたのと、認証メカニズムにcram-md5とapopを追加した。
cram-md5とapopはDBで管理するユーザーについてのみ有効なことに注意。
OSのユーザー情報のパスワードはhashで暗号化されている。hashは不可逆な暗号化方式なのでmd5で暗号化されたパスワードと比較が出来ないのでOSのアカウントで管理されているユーザーはPLAINかLOGIN認証でしか認証できない。
パスワードの安全性を考えるならメールアカウントはOSのアカウントと分離して管理し、パスワードを暗号化して送信させるか、POPやIMAPの通信自体をSSLで暗号化するのが良いだろう。

Dovecotを再起動し、POP3、IMAP4でメールが受信できることと、SubmissionポートでSMTP認証が使えることを確認できれば完了。

コメント

コメントを残す

メールアドレスが公開されることはありません。