「Dovecot」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(関連記事)
(不必要になった設定内容の追記)
タグ: visualeditor-switched
 
(2人の利用者による、間の4版が非表示)
3行目: 3行目:
 
{{Related articles start}}
 
{{Related articles start}}
 
{{Related|Postfix}}
 
{{Related|Postfix}}
{{Related4|Courier MTA}}
+
{{Related|Courier MTA}}
{{Related4|OpenSMTPD}}
+
{{Related|OpenSMTPD}}
 
{{Related|Fail2ban}}
 
{{Related|Fail2ban}}
  +
{{Related|SOGo}}
 
{{Related|仮想ユーザーメールシステム}}
 
{{Related|仮想ユーザーメールシステム}}
 
{{Related articles end}}
 
{{Related articles end}}
 
この記事では個人やスモールオフィスでの利用に適したメールサーバーの設定方法について記述しています。
 
この記事では個人やスモールオフィスでの利用に適したメールサーバーの設定方法について記述しています。
   
[http://www.dovecot.org/ Dovecot] は Linux/Unix ライクなシステム向けのオープンソースの [[Wikipedia:IMAP|IMAP]] と [[Wikipedia:POP3|POP3]] サーバーで、セキュリティを主眼に置いて書かれています。Dovecot は Timo Sirainen によって開発され、2002年7月に初めてリリースされました。Dovecot は第一に軽量で高速、設定しやすいオープンソースのメールサーバーを目指しています。詳しい情報は、公式の [http://wiki2.dovecot.org/ Dovecot Wiki] を見て下さい。
+
[http://www.dovecot.org/ Dovecot] は Linux/Unix ライクなシステム向けのオープンソースの [[Wikipedia:IMAP|IMAP]] と [[Wikipedia:POP3|POP3]] サーバーで、セキュリティを主眼に置いて書かれています。Dovecot は Timo Sirainen によって開発され、2002年7月に初めてリリースされました。Dovecot は第一に軽量で高速、設定しやすいオープンソースのメールサーバーを目指しています。詳しい情報は、公式の [https://wiki2.dovecot.org/ Dovecot Wiki] を見て下さい。
   
 
==インストール==
 
==インストール==
   
[[公式リポジトリ]]からパッケージ {{Pkg|dovecot}} と {{Pkg|pam}} を[[pacman|インストール]]してください。
+
{{Pkg|dovecot}} と {{Pkg|pam}} パッケージを[[pacman|インストール]]してください。
   
 
==設定==
 
==設定==
30行目: 31行目:
 
{{Pkg|dovecot}} パッケージにはサーバーの SSL 証明書を生成するためのスクリプトが含まれています。
 
{{Pkg|dovecot}} パッケージにはサーバーの SSL 証明書を生成するためのスクリプトが含まれています。
   
* サンプルファイルから設定ファイルをコピーしてください: {{ic|# cp /etc/ssl/dovecot-openssl.cnf{.sample,} }}。
+
* サンプルファイルから設定ファイルをコピーしてください: {{ic|# cp /usr/share/doc/dovecot/dovecot-openssl.cnf /etc/ssl/dovecot-openssl.cnf}}。
 
* {{ic|/etc/ssl/dovecot-openssl.cnf}} を編集して証明書を設定してください。
 
* {{ic|/etc/ssl/dovecot-openssl.cnf}} を編集して証明書を設定してください。
   
39行目: 40行目:
 
証明書を変更した時は {{ic|cp /etc/ssl/certs/dovecot.pem /etc/ca-certificates/trust-source/anchors/dovecot.crt}} と {{ic|# trust extract-compat}} を実行してください。
 
証明書を変更した時は {{ic|cp /etc/ssl/certs/dovecot.pem /etc/ca-certificates/trust-source/anchors/dovecot.crt}} と {{ic|# trust extract-compat}} を実行してください。
   
  +
{{Warning|SSL/TLS を使用する場合、{{ic|/etc/dovecot/conf.d/10-ssl.conf}} の[[#Dovecot の設定|設定]]に以下を追加して [http://disablessl3.com/ POODLE] と [https://weakdh.org/sysadmin.html FREAK/Logjam] の対策をしてください:
===PAM 認証===
 
  +
{{bc|1=
  +
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
  +
  +
{{ic|/etc/dovecot/dovecot.conf}} にファイルを追加してください:
  +
  +
ssl_dh = </etc/ssl/dh.pem
  +
  +
===PAM 認証===
  +
{{note| 最新の {{pkg|dovecot}} パッケージでは、この設定がデフォルトで有効になります。 }}
 
* dovecot の PAM を設定するには、以下の内容で {{ic|/etc/pam.d/dovecot}} を作成してください:
 
* dovecot の PAM を設定するには、以下の内容で {{ic|/etc/pam.d/dovecot}} を作成してください:
 
{{hc|/etc/pam.d/dovecot|
 
{{hc|/etc/pam.d/dovecot|
77行目: 95行目:
 
}}
 
}}
   
ほとんどのシステムではデフォルト設定で問題ありませんが、設定ファイルを読んで利用できるオプションを確認してください。詳しい説明は [http://wiki2.dovecot.org/QuickConfiguration クイック設定ガイド] や [http://wiki2.dovecot.org/#Dovecot_configuration dovecot configuration] を見て下さい。
+
ほとんどのシステムではデフォルト設定で問題ありませんが、設定ファイルを読んで利用できるオプションを確認してください。詳しい説明は [https://wiki2.dovecot.org/QuickConfiguration クイック設定ガイド] や [https://wiki2.dovecot.org/#Dovecot_configuration dovecot configuration] を見て下さい。
   
 
デフォルトで dovecot はシステムで使われているメールストレージシステムを検出しようとします。Maildir フォーマットを使うには {{ic|/etc/dovecot/conf.d/10-mail.conf}} を編集して {{ic|1=mail_location = maildir:~/Maildir}} を設定してください。
 
デフォルトで dovecot はシステムで使われているメールストレージシステムを検出しようとします。Maildir フォーマットを使うには {{ic|/etc/dovecot/conf.d/10-mail.conf}} を編集して {{ic|1=mail_location = maildir:~/Maildir}} を設定してください。
85行目: 103行目:
 
[[wikipedia:Sieve (mail filtering language)|Sieve]] はメールサーバーのメールのフィルターを作成するのに使うことができるプログラミング言語です。
 
[[wikipedia:Sieve (mail filtering language)|Sieve]] はメールサーバーのメールのフィルターを作成するのに使うことができるプログラミング言語です。
   
  +
====Sieve Interpreter Plugin====
* {{Pkg|pigeonhole}} をインストールしてください
 
  +
* dovecot.conf で "sieve" を "protocols" に追加してください
 
  +
* {{Pkg|pigeonhole}} をインストールしてください。
<pre>
 
  +
* {{ic|sieve}} を {{ic|mail_plugins}} に追加してください:
protocols = imap pop3 sieve
 
  +
** {{ic|<nowiki>/etc/dovecot/conf.d/15-lda.conf</nowiki>}}{{bc|<nowiki>
</pre>
 
  +
protocol lda {
* {{ic|/etc/dovecot/conf.d/}} に 80-sieve.conf を追加してください
 
  +
mail_plugins = $mail_plugins sieve
<pre>
 
service managesieve-login {
 
inet_listener sieve {
 
port = 4190
 
}
 
 
}
 
}
  +
</nowiki>}}
  +
** {{ic|/etc/dovecot/conf.d/20-lmtp.conf}}{{bc|<nowiki>
  +
protocol lmtp {
  +
mail_plugins = $mail_plugins sieve
  +
}
  +
</nowiki>}}
  +
{{Note|最近は LDA のかわりに LMTP を使用することが推奨されます。ただし小規模なメールサーバー用に Dovecot LDA はまだ使い続けられます。詳しくは [https://wiki2.dovecot.org/LMTP Dovecot Wiki] を参照。}}
   
  +
* 任意で {{ic|plugin}} セクションに設定を追加してください。設定オプションとデフォルト値については [https://wiki2.dovecot.org/Pigeonhole/Sieve/Configuration Sieve Interpreter Documentation] を見てください。例: {{bc|<nowiki>
service managesieve {
 
  +
plugin {
  +
sieve = file:~/sieve;active=~/.dovecot.sieve
 
}
 
}
  +
</nowiki>}}
   
  +
{{Note|{{ic|/etc/dovecot/conf.d/}} 内の設定ファイルは {{ic|/etc/dovecot/dovecot.conf}} に {{ic|!include /etc/dovecot/conf.d/*.conf}} という行がないと読み込まれません。[[仮想ユーザーメールシステム]]のガイドに従っている場合、行を追加してください。}}
protocol sieve {
 
  +
  +
=====SpamAssassin - スパムを "Junk" フォルダに移動=====
  +
* スパムテスト設定を追加:
  +
{{hc|/etc/dovecot/conf.d/90-sieve.conf|<nowiki>
  +
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
 
}
 
}
  +
</nowiki>}} {{Note|上記は "X-Spam_score" (Exim のデフォルト設定におけるスパムのヘッダー形式) をテストします。ヘッダーは多少異なる可能性があります。例: "X-Spam-Score"。}}
</pre>
 
  +
* sieve スクリプトを作成:
* {{ic|/etc/dovecot/conf.d/15-lda.conf}} の "protocol lda" セクションの "mail_plugins" に "sieve" を追加してください
 
  +
{{hc|/var/lib/dovecot/sieve/global_sieves/move_to_spam_folder.sieve|<nowiki>
<pre>
 
  +
require "spamtestplus";
protocol lda {
 
  +
require "fileinto";
mail_plugins = sieve
 
  +
require "relational";
  +
require "comparator-i;ascii-numeric";
  +
  +
if spamtest :value "ge" :comparator "i;ascii-numeric" "5" {
  +
fileinto "Junk";
 
}
 
}
</pre>
+
</nowiki>}}
  +
* {{ic|/etc/dovecot/conf.d/90-plugin.conf}} の "plugin" セクションに sieve の保存場所を指定してください:
 
  +
* sieve をコンパイル: {{bc|<nowiki>
<pre>
 
  +
sievec /var/lib/dovecot/sieve/global_sieves
plugin {
 
  +
</nowiki>}} {{ic|move_to_spam_folder.sieve}} と {{ic|move_to_spam_folder.svbin}} ファイルが誰からでも読み込めるように権限が設定されているか確認してください。
sieve=/var/mail/%u/dovecot.sieve
 
  +
sieve_dir=/var/mail/%u/sieve
 
  +
====ManageSieve Server====
  +
サーバー上の Sieve スクリプトをリモートで管理できる ManageSieve プロトコルが実装されています。
  +
  +
* 上記の '''Sieve Interpreter Plugin''' の手順に従ってください。
  +
* {{ic|dovecot.conf}} の {{ic|protocols}} に {{ic|sieve}} を追加: {{bc|<nowiki>
  +
protocols = imap pop3 sieve
  +
</nowiki>}}
  +
* {{ic|/etc/dovecot/conf.d/20-managesieve.conf}} を追加: {{bc|<nowiki>
  +
service managesieve-login {
 
}
 
}
</pre>
 
   
  +
service managesieve {
{{Note|最近では LDA の代わりに LMTP を使うことが推奨されていますが、小さなメールサーバーに Dovecot LDA を使うことは依然として可能です。詳細は [http://wiki2.dovecot.org/LMTP Dovecot Wiki] にあります。}}
 
  +
}
   
  +
protocol sieve {
* MTA が配送に dovecot を使うようにしてください。例えば: postfix の main.cf や dovecot-lda:
 
  +
}
mailbox_command = /usr/lib/dovecot/dovecot-lda -f "$SENDER" -a "$RECIPIENT"
 
  +
</nowiki>}}
  +
* {{ic|dovecot}} を再起動してください。managesieve デーモンはデフォルトではポート 4190 を使用します。
   
 
==サーバーを起動する==
 
==サーバーを起動する==
131行目: 184行目:
 
# systemctl enable dovecot.service
 
# systemctl enable dovecot.service
   
  +
== ヒントとテクニック ==
== 小技 ==
 
   
デフォルトではないハッシュ関数を使ってハッシュを生成する
+
デフォルトではないハッシュ関数を使ってハッシュを生成する:
   
 
doveadm pw -s SHA512-CRYPT -p "superpassword"
 
doveadm pw -s SHA512-CRYPT -p "superpassword"
   
データベースのカラムが十分大きいことを確認してください (you might not get a warning..)
+
データベースのカラムが十分大きいことを確認してください (警告は表示されません)
   
 
dovecot-sql.conf ファイルにパスワードの形式を設定します:
 
dovecot-sql.conf ファイルにパスワードの形式を設定します:

2019年3月1日 (金) 01:30時点における最新版

関連記事

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

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 パッケージでは、この設定がデフォルトで有効になります。
  • 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