Dovecot

提供: ArchWiki
2017年12月27日 (水) 23:44時点におけるKusakata (トーク | 投稿記録)による版 (同期)
ナビゲーションに移動 検索に移動

関連記事

この記事では個人やスモールオフィスでの利用に適したメールサーバーの設定方法について記述しています。

Dovecot は Linux/Unix ライクなシステム向けのオープンソースの IMAPPOP3 サーバーで、セキュリティを主眼に置いて書かれています。Dovecot は Timo Sirainen によって開発され、2002年7月に初めてリリースされました。Dovecot は第一に軽量で高速、設定しやすいオープンソースのメールサーバーを目指しています。詳しい情報は、公式の Dovecot Wiki を見て下さい。

インストール

dovecotpam パッケージをインストールしてください。

設定

前提

  • 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 を実行してください。

警告: SSL/TLS を使用する場合、/etc/dovecot/conf.d/10-ssl.conf設定に以下を追加して POODLEFREAK/Logjam の対策をしてください:
ssl_protocols = !SSLv3
ssl_cipher_list = ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
ssl_prefer_server_ciphers = yes

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/dovecotdovecot.confconf.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 をインストールしてください。
  • sievemail_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
      }
      
ノート: 最近は LDA のかわりに LMTP を使用することが推奨されます。ただし小規模なメールサーバー用に Dovecot LDA はまだ使い続けられます。詳しくは Dovecot Wiki を参照。
  • 任意で plugin セクションに設定を追加してください。設定オプションとデフォルト値については Sieve Interpreter Documentation を見てください。例:
    plugin {
      sieve = file:~/sieve;active=~/.dovecot.sieve 
    }
    
ノート: /etc/dovecot/conf.d/ 内の設定ファイルは /etc/dovecot/dovecot.conf!include /etc/dovecot/conf.d/*.conf という行がないと読み込まれません。仮想ユーザーメールシステムのガイドに従っている場合、行を追加してください。
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
}
ノート: 上記は "X-Spam_score" (Exim のデフォルト設定におけるスパムのヘッダー形式) をテストします。ヘッダーは多少異なる可能性があります。例: "X-Spam-Score"。
  • 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.sievemove_to_spam_folder.svbin ファイルが誰からでも読み込めるように権限が設定されているか確認してください。

ManageSieve Server

サーバー上の Sieve スクリプトをリモートで管理できる ManageSieve プロトコルが実装されています。

  • 上記の Sieve Interpreter Plugin の手順に従ってください。
  • dovecot.confprotocolssieve を追加:
    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