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 /usr/share/doc/dovecot/dovecot-openssl.cnf /etc/ssl/dovecot-openssl.cnf
。 /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
を実行してください。
DH パラメータの生成
新しい DH パラメータファイルを生成するには (長い時間がかかります):
# openssl dhparam -out /etc/dovecot/dh.pem 4096
/etc/dovecot/dovecot.conf
にファイルを追加してください:
ssl_dh = </etc/ssl/dh.pem
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 はメールサーバーのメールのフィルターを作成するのに使うことができるプログラミング言語です。
Sieve Interpreter Plugin
- pigeonhole をインストールしてください。
sieve
をmail_plugins
に追加してください:/etc/dovecot/conf.d/15-lda.conf
protocol lda { mail_plugins = $mail_plugins sieve }
/etc/dovecot/conf.d/20-lmtp.conf
protocol lmtp { mail_plugins = $mail_plugins sieve }
- 任意で
plugin
セクションに設定を追加してください。設定オプションとデフォルト値については Sieve Interpreter Documentation を見てください。例:plugin { sieve = file:~/sieve;active=~/.dovecot.sieve }
SpamAssassin - スパムを "Junk" フォルダに移動
- スパムテスト設定を追加:
/etc/dovecot/conf.d/90-sieve.conf
plugin { sieve_extensions = +spamtest +spamtestplus sieve_spamtest_status_type = score sieve_spamtest_status_header = \ X-Spam_score: (-?[[:digit:]]+\.[[:digit:]]).* sieve_spamtest_max_value = 5.0 sieve_before = /var/lib/dovecot/sieve/global_sieves/move_to_spam_folder.sieve }
- sieve スクリプトを作成:
/var/lib/dovecot/sieve/global_sieves/move_to_spam_folder.sieve
require "spamtestplus"; require "fileinto"; require "relational"; require "comparator-i;ascii-numeric"; if spamtest :value "ge" :comparator "i;ascii-numeric" "5" { fileinto "Junk"; }
- sieve をコンパイル:
sievec /var/lib/dovecot/sieve/global_sieves
move_to_spam_folder.sieve
とmove_to_spam_folder.svbin
ファイルが誰からでも読み込めるように権限が設定されているか確認してください。
ManageSieve Server
サーバー上の Sieve スクリプトをリモートで管理できる ManageSieve プロトコルが実装されています。
- 上記の Sieve Interpreter Plugin の手順に従ってください。
dovecot.conf
のprotocols
にsieve
を追加:protocols = imap pop3 sieve
/etc/dovecot/conf.d/20-managesieve.conf
を追加:service managesieve-login { } service managesieve { } protocol sieve { }
dovecot
を再起動してください。managesieve デーモンはデフォルトではポート 4190 を使用します。
サーバーを起動する
標準の systemd を使って dovecot.service
デーモンを操作してください。
# systemctl start dovecot.service
ブート時に起動させるには
# systemctl enable dovecot.service
ヒントとテクニック
デフォルトではないハッシュ関数を使ってハッシュを生成する:
doveadm pw -s SHA512-CRYPT -p "superpassword"
データベースのカラムが十分大きいことを確認してください (警告は表示されません)。
dovecot-sql.conf ファイルにパスワードの形式を設定します:
default_pass_scheme = SHA512-CRYPT