Dovecot
この記事では個人やスモールオフィスでの利用に適したメールサーバーの設定方法について記述しています。
Dovecot は Linux/Unix ライクなシステム向けのオープンソースの IMAP と POP3 サーバーで、セキュリティを主眼に置いて書かれています。Dovecot は Timo Sirainen によって開発され、2002年7月に初めてリリースされました。Dovecot は第一に軽量で高速、設定しやすいオープンソースのメールサーバーを目指しています。詳しい情報は、公式の Dovecot Wiki を見て下さい。
目次
インストール
公式リポジトリからパッケージ dovecot と pam をインストールしてください。
設定
前提
- Dovecot によるメールアカウントはそれぞれ、サーバーに定義するローカルのユーザーアカウントを持ちます。
- サーバーはローカルのユーザーデータベース (/etc/passwd) ではなく PAM を使ってユーザーを認証します。
- 認証パスワードの暗号化には SSL が使われます。
- 一般的な Maildir フォーマットを使ってユーザーのホームディレクトリにメールを保存します。
- MDA はあらかじめローカルユーザーにメールを配達するように設定されています。
SSL 証明書の作成
dovecot パッケージにはサーバーの SSL 証明書を生成するためのスクリプトが含まれています。
- サンプルファイルから設定ファイルをコピーしてください:
# cp /etc/ssl/dovecot-openssl.cnf{.sample,}
。 /etc/ssl/dovecot-openssl.cnf
を編集して証明書を設定してください。
# /usr/lib/dovecot/mkcert.sh
を実行すれば証明書が生成されます。
証明書・キーのペアは /etc/ssl/certs/dovecot.pem
と /etc/ssl/private/dovecot.pem
として作成されます。
証明書を変更した時は cp /etc/ssl/certs/dovecot.pem /etc/ca-certificates/trust-source/anchors/dovecot.crt
と # trust extract-compat
を実行してください。
PAM 認証
- dovecot の PAM を設定するには、以下の内容で
/etc/pam.d/dovecot
を作成してください:
/etc/pam.d/dovecot
auth required pam_unix.so nullok account required pam_unix.so
PAM 認証と LDAP
- OpenLDAP サーバーを使って認証している場合、LDAP 認証に書かれているように先に LDAP ユーザーでログインできることを確認してください。それから、
/etc/pam.d/dovecot
に以下を記述します。エントリの順番には意味があるので注意してください:
/etc/pam.d/dovecot
auth sufficient pam_ldap.so auth required pam_unix.so nullok account sufficient pam_ldap.so account required pam_unix.so session required pam_mkhomedir.so skel=/etc/skel umask=0022 session sufficient pam_ldap.so
上記の設定の場合 LDAP とシステムユーザーの両方がメールボックスを持つことになります。
/etc/dovecot/conf.d/auth-system.conf
を編集してpassdb
ディレクティブを以下のように変更:
passdb { driver = pam args = session=yes dovecot }
pam_mkhomedir.so
モジュールを使用して passdb
ディレクティブに session
を追加することで、LDAP ユーザーが最初にログインしたときにホームディレクトリを自動的に作成します。
Dovecot の設定
/usr/share/doc/dovecot/example-config
から/etc/dovecot
にdovecot.conf
とconf.d/*
設定ファイルをコピーしてください:
# cp /usr/share/doc/dovecot/example-config/dovecot.conf /etc/dovecot # cp -r /usr/share/doc/dovecot/example-config/conf.d /etc/dovecot
ほとんどのシステムではデフォルト設定で問題ありませんが、設定ファイルを読んで利用できるオプションを確認してください。詳しい説明は クイック設定ガイド や dovecot configuration を見て下さい。
デフォルトで dovecot はシステムで使われているメールストレージシステムを検出しようとします。Maildir フォーマットを使うには /etc/dovecot/conf.d/10-mail.conf
を編集して mail_location = maildir:~/Maildir
を設定してください。
Sieve
Sieve はメールサーバーのメールのフィルターを作成するのに使うことができるプログラミング言語です。
- pigeonhole をインストールしてください
- dovecot.conf で "sieve" を "protocols" に追加してください
protocols = imap pop3 sieve
/etc/dovecot/conf.d/
に 80-sieve.conf を追加してください
service managesieve-login { inet_listener sieve { port = 4190 } } service managesieve { } protocol sieve { }
/etc/dovecot/conf.d/15-lda.conf
の "protocol lda" セクションの "mail_plugins" に "sieve" を追加してください
protocol lda { mail_plugins = sieve }
/etc/dovecot/conf.d/90-plugin.conf
の "plugin" セクションに sieve の保存場所を指定してください:
plugin { sieve=/var/mail/%u/dovecot.sieve sieve_dir=/var/mail/%u/sieve }
- MTA が配送に dovecot を使うようにしてください。例えば: postfix の main.cf や dovecot-lda:
mailbox_command = /usr/lib/dovecot/dovecot-lda -f "$SENDER" -a "$RECIPIENT"
サーバーを起動する
標準の systemd を使って dovecot.service
デーモンを操作してください。
# systemctl start dovecot.service
ブート時に起動させるには
# systemctl enable dovecot.service
小技
デフォルトではないハッシュ関数を使ってハッシュを生成する。
doveadm pw -s SHA512-CRYPT -p "superpassword"
データベースのカラムが十分大きいことを確認してください (you might not get a warning..)
dovecot-sql.conf ファイルにパスワードの形式を設定します:
default_pass_scheme = SHA512-CRYPT