Dovecot+MySQLによるバーチャルPOP3/IMAPサーバの構築(CentOS4.x編)


ここでは、Postfixでのバーチャルドメイン対応にあわせてDovecotもバーチャルドメイン対応にします。
CentOS4.xのDovecotはMySQL対応になっており標準でインストールされるので、以下で設定を行うだけで使用できます。もしインストールされていないなら、Yumで最新版をインストールしてください。

■Dovecotの設定

Dovecotの設定に関しては、基本的な設定はこちらと同一ですがわかりやすくするため再掲しておきます。これに、バーチャルドメイン対応の設定を追加することになります。

◆基本的な設定

Dovecotは、デフォルトでPOP3とIMAPが動作するように設定されていますが、Courie-IMAPと同様にPOP3sとIMAPsもサポートされており、チョット設定するだけで利用できます。おやじは、全て起動してルータやファイヤウォールでアクセス制御(外部からはPOP3s/IMAPsのみ利用可)していますが、不必要なものは止めておいたほうが良いでしょう。なお、おやじのセキュリティ方針はPLAIN+SSLのため、認証はデフォルトのPLAIN認証のみしかテストしていません。設定ファイルは /etc/dovecot.confで、その内容を修正していきます。以下に、修正内容を示します。(青字は削除、赤字は追加、緑字は変更したものです。)

なお、POP3sとIMAPsを使用する場合のSSL証明書については、サーバ証明書の作成を参照して作成してください。デフォルトのままでも使用できますが、アクセスするとCN名が不一致というエラーが毎回出て煩わしいです。

◆バーチャルドメイン対応の設定

ここでは、バーチャルドメインに対応するための設定を行います。

  1. バーチャルドメインに対応するため、MySQL関連の設定ファイルを作成する。ファイル名の場所や名前は任意であるが、ここではソースファイルにある dovecot-mysql.confを参考に /usr/local/etc/dovecot-mysql.conf として以下の内容で作成した。

    # MySQLが動いているホストを指定
    db_host = localhost

    # MySQLのポートを指定。デフォルトのままなら省略可。
    db_port = 3306

    # MySQLのソケットを指定。サンプルでは省略されているが、デフォルトのパスが異なり、" Can't connect to local MySQL server through socket '/var/tmp/mysql.sock' "と怒られるので指定。
    db_unix_socket = /var/lib/mysql/mysql.sock

    # データベース名。以下のデータベース関連の内容はPostfixAdminで設定した内容による。
    db = postfix

    # データベースのユーザ名
    db_user = postfix

    # データベースのパスワード
    db_passwd = new password1

    # 意味不明で、デフォルトのまま。
    db_client_flags = 0

    # デフォルトのパスワード体系を指定。PLAIN, PLAIN-MD5, DIGEST-MD5, CRYPTがサポートされているが、"PLAIN"を設定。
    default_pass_scheme = PLAIN

    # MySQLでホームディレクトリとuid/gidをゲットするSELECT文の設定。PostfixAdminのテーブル構造に合わせて指定。
    # concatのところのパスはこちらで設定したバーチャルメールボックスのパスを指定。uid/gidも合わせること。
    # 下記は非常に長いが1行なので注意。
    user_query = SELECT concat('/usr/local/virtual/', maildir) as home, 10000 as uid, 10000 as gid FROM mailbox WHERE username = '%u' AND active = '1'

    # MySQLでパスワードをゲットするSELECT文の設定。PostfixAdminのテーブル構造に合わせて指定。
    password_query = SELECT password FROM mailbox WHERE username = '%u' AND active = '1'

  2. /etc/dovecot.conf に認証関係の設定を行う。なお、全体が見えにくくなるのでdovecot.confの最後に追記するようにした。(青字は削除、赤字は追加、緑字は変更したものです。)


      (snip)

    #auth_userdb = passwd
    #auth_passdb = pam

      (snip)

    # こちらで設定したバーチャルメールボックスのパスを指定。
    default_mail_env = maildir:/usr/local/virtual/%u

    # MySQLで認証するため前項で設定したファイルを指定。
    auth_userdb = mysql /usr/local/etc/dovecot-mysql.conf
    auth_passdb = mysql /usr/local/etc/dovecot-mysql.conf

■Dovecotの自動起動の設定

Dovecotをrpmからインストールすると、自動起動スクリプトがインストールされますが、有効になっていないので以下でシステム起動時に起動するよう設定します。
# chkconfig dovecot on
# chkconfig --list dovecot
dovecot       0:off  1:off   2:on   3:on   4:on  5:on  6:off


設定が完了したらDovecotを起動し、POP3(110番)、POP3S(995番)、IMAP(143番)、IMAPS(993番)が起動しているか確認した後、実際のメールクライアントで試験してみましょう。
# /etc/init.d/dovecot start
Dovecot Imap を起動中:                                     [ OK ]
# netstat -an --tcp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State

   ( snip )

tcp        0      0 0.0.0.0:993                 0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:995                 0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:110                 0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:143                 0.0.0.0:*                   LISTEN



Top Pageへ