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名が不一致というエラーが毎回出て煩わしいです。
- サポートプロトコルの指定
DovecotはPOP3/POP3SとIMAP/IMAPSをサポートしているので、必要に応じて設定する。おやじは全てに対応するため、以下のとおりとした。
# Protocols we want to be serving:
# imap imaps pop3 pop3s
#protocols = imap imaps
↓追加
# Protocols we want to be serving:
# imap imaps pop3 pop3s
#protocols = imap imaps
protocols = imap imaps pop3 pop3s
- ListenするIP/ホストアドレスの指定
CentOSのDovecotはデフォルトでIPv6インタフェース対応に設定されているが、同時にIPv4インタフェースにも対応している。また、SSL用の設定が未設定の場合は非SSL用の設定に準じて動作するため、通常は設定を変更しなくても動作する。
IPv4しか対応対応する必要がなく、かつSSLにも対応するなら下記のように変更する。(前述のようにデフォルトのままでも可)
imap_listen = [::]
pop3_listen = [::]
#imaps_listen =
#pop3s_listen =
↓変更
imap_listen = *
pop3_listen = *
imaps_listen = *
pop3s_listen = *
- SSLサポートの指定
デフォルトでSSLサポートになっているので設定変更は不要だが、敢えて設定するなら下記のとおり設定する。
# Disable SSL/TLS support.
#ssl_disable = no
↓変更
# Disable SSL/TLS support.
ssl_disable = no
- サーバ証明書と秘密鍵の指定
SSL対応する場合のサーバ証明書と秘密鍵の指定を行う。デフォルトで標準のサーバ証明書と秘密鍵が設定されているためSSL起動はできるが、クライアントでアクセスすると毎回CN名が違うというエラーがでるので、ここはメールサーバ名(メールクライアントに設定するサーバ名)で証明書を作成して署名したCA証明書をクライアントにインストールしておけばエラーは出ないので、ちゃんと設定しておこう。SSL証明書については、サーバ証明書の作成を参照してメールサーバ名で作成しておくこと。
#ssl_cert_file = /etc/ssl/certs/dovecot.pem
#ssl_key_file = /etc/ssl/private/dovecot.pem
↓追加
#ssl_cert_file = /etc/ssl/certs/dovecot.pem
#ssl_key_file = /etc/ssl/private/dovecot.pem
ssl_cert_file = /usr/local/certs/server.crt
ssl_key_file = /usr/local/certs/server.key
- メールBOXの指定
デフォルトではメールBOXの指定はされていないが、その場合はDovecotがメールBOXを自動検出する。PostfixでMaildir形式で動作させている場合は問題なく検出してくれたが、誤検出する可能性もあるので明示的にメールBOXを指定したほうが良い。
#default_mail_env =
↓変更
default_mail_env = maildir:~/Maildir
◆バーチャルドメイン対応の設定
ここでは、バーチャルドメインに対応するための設定を行います。
- バーチャルドメインに対応するため、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' |
- /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へ