戻る

原文:http://wiki.dovecot.org/MainConfig(22版)
翻訳:龍義(Toyota Tatsuyoshi) & Prompt Works Inc.
2006.2 21版
2006.3 22版に修正

メインの設定ファイル

これは Dovecot のメインの設定ファイルです。 デフォルトの値が設定されるので、実際の設定ファイルではほとんどの オプションがコメントにされています。 設定ファイルは IMAP サーバ環境に合わせてとても調整された制御を 提供できます。 このファイルはバージョン 1.0 向けのものです。 もしバージョン 0.9.x を使っている場合は、いくつかの設定項目が 変更になっているので、 設定ファイル内の説明を読むようにしてください。 もしバージョン 0.9.x を使っているならば、バージョン 1.0 に 移行することを考えても良いと思います。

Dovecot 1.0 の設定ファイル - dovecot.conf

# の文字と後に続く文字は、コメントしてみなされます。 余分なスペースとタブ文字は、無視されます。 もし明示的にこれらを使いたい場合は、引用(")で囲って値を設定 してください。例: key = "# 文字と最後の空白 "

デフォルトの値はそれぞれの値の後に示されていますので、 その行のコメントを解除する必要がありません。 これの例外として、パスの設定があり、 configure のオプションを 元にしたデフォルトの例になります。 パスは configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --with-ssldir=/etc/ssl を元にしたものが示されています。

実行時のデータを格納する基本のディレクトリ:

base_dir = /var/run/dovecot/

サービスを行うプロトコル:

imap imaps pop3 pop3s

protocols = imap imaps

接続を待ち受ける IP とホストアドレス。 現在、複数のアドレス指定することは、できません。 "*" は全ての IPv4 のインタフェースで待ち受けします。 "[::]" は全ての IPv6 インタフェースで待ち受けしますが、 OS に依存しているので IPv4 でのインタフェースでも待ち受けする 可能性があります。 もし、それぞれのサービスのポートを設定する場合は、 imap/pop3{...} の項目で設定する必要があります。 そうすれば、 IMAP/POP3 を別のポートで設定することができます。

SSL

SSL 接続する IP とホストアドレス。特に指定がなければ、 デフォルトは下のようになります。

ssl_listen =

SSL/TSL サポートを無効にします。

ssl_disable = no

PEM は X.509 SSL/TLS 証明書とプライベート鍵を含むようになりました。 それは root 特権を使ってオープンされますので、 鍵ファイルは root 以外は読めないようにします。 doc/mkcert.sh を使えば自分で署名された証明書を簡単に作成することができ、 dovecot-openssl.cnf のドメインを更新することが確実になります。

ssl_cert_file = /etc/ssl/certs/dovecot.pem
ssl_key_file = /etc/ssl/private/dovecot.pem

信頼された SSL 認証局を含むファイル。通常は、必要ではありません。

ssl_ca_file = 

クライアントへの認証の要求。

ssl_verify_client_cert = no

SSL パラメータのファイル。マスタープロセスはログインの処理の ために、このファイルを生成します。 これには Diffie Hellman と RSA パラメータを含みます。

ssl_parameters_file = /var/run/dovecot/ssl-parameters.dat

どのぐらいの頻度で SSL パラメータファイルを再生成するか。 この生成は、 CPU への激しい処理となります。 この値は時間で設定します。 0 にすると、再生成をしなくなります。

ssl_parameters_regenerate = 24

使用する SSL 暗号。

ssl_cipher_list = ALL:!LOW

SSl/TLS が使われない全ての plaintext 認証と、 LOGIN コマンドの無効(LOGINDISABLED できる)。 127.*.*.* と IPv6 の ::1 アドレスでは安全だと思われますが、 この設定は、そのアドレスから接続するとき、効果を持たないことに 注意してください。

disable_plaintext_auth = yes

ログ

syslog の代わりに使うログファイル。 もし stderr にログを出力したい場合は、 /dev/stderr を 使うことができます(/dev/stderr のみで、その他はクローズされる)。

log_path = 

インフォメーションメッセージ用のもので、 デフォルト以外に出力したい場合は、このログファイルを使います。

info_log_path = 

ログファイルに書くときの行の最初の部分。 % に関する部分は、strftime(3) フォーマットになっています。

log_timestamp = "%b %d %H:%M:%S "

ログイン処理

認証処理が、ログインで接続するのに必要な認証の UNIX ソケットを 置くディレクトリ。 root で実行されたときに、ソケットは作成されますので、 パーミッションについて心配する必要はありません。 Dovecot が起動されたときに、このディレクトリの全てが削除されることに 注意してください。

login_dir = /var/run/dovecot/login

login_dir への chroot ログインプロセス。 root 権限無しで完全な Dovecot を実行させたい場合のみ 設定を行います。 http://wiki.dovecot.org/Rootless

login_chroot = yes

ログインプロセスで使用するユーザ。 このための完全な新しいユーザを作成し、その他では このユーザを使用しないでください。 このユーザのみがアクセスできるグループに属している必要があり、 それは認証のプロセスのためにアクセスをコントロールするのに使われます。 このユーザーがメールにアクセスしないことに注意してください。 http://wiki.dovecot.org/UserIds

login_user = dovecot

メガバイト単位でプロセスサイズの最大値の設定。 もし login_process_per_connection を使っていないならば、 この値を増やす必要があるかもしれません。

login_process_size = 32

Yes にすると、ログインはそのプロセスでのみ処理されます。 No にすると、複数の接続を1つのログインプロセスで処理することを許します。 Yes の場合は、特に SSL/TLS を有効にすると、より安全になります。 No の場合、常にプロセスを作成する必要がないため、より速い動作になります。

login_process_per_connection = yes

作成されるログインプロセスの数。 もし login_process_per_user を yes にしているのでしたら、 これはユーザがログインするときの待機プロセスの数になります。

login_processes_count = 3

作成されるログインプロセスの最大数。 ログインプロセスは通常 login_processes_count で指定された数に なりますが、複数のユーザが同時にログインし始めると、 プロセスはさらに作成されます。 fork が増え続けるのを防ぐため、 新しいプロセスを作る必要がある場合に、一度だけチェックします - もしそのときに全てのプロセスが使われた場合、 この設定で指定されている制限になるまで、この数を2倍に増やします。 login_process_per_use が Yes に設定されているときにのみ この設定が使われます。

login_max_processes_count = 128

許可されるログイン状態の接続の最大数。 この制限を超えたときは、古い接続から切断されます。 login_process_per_user が No になっている場合は、 プロセスが多すぎる値ですので、絶対的な実際のユーザの最大値は login_processes_count * max_logging_users の値になります。

login_max_logging_users = 256

クライアントのための挨拶メッセージ。

login_greeting = Dovecot ready.

ログに出力するときのスペースで区切られた内容のリスト。 変数で複数の内容がある場合は、コンマで区切られた値で出力されます。

login_log_format_elements = user=<%u> method=%m rip=%r lip=%l %c

ログインフォーマット。 %$ は login_log_format_elements の文字に 置き換えられ、 %s は 記録されるログのデータになります。

login_log_format = %$: %s

メールプロセス

動作するメールプロセスの最大数。 この制限を越えると、新しいユーザはログインが許されません。

max_mail_processes = 1024

(ps などでの)より詳しいプロセスタイトル表示。 設定をすると、ユーザ名と IP アドレスが表示されます。 誰が実際に IMAP プロセスを使っているか見ることができて、 役に立ちます(例えば、共有メールボックスを使用しているのか、 同じ uid が複数使用されているか、など)。

verbose_proctitle = no

プロトコルレベルの SSL のエラーの表示。

verbose_ssl = no

ユーザの有効な UID 範囲。デフォルトは 500 以上です。 これはおおまかに、 daemon や他のシステムユーザとしてログインできないように することを確実にするためのものです。 first_valid_uid を 0 にしても、 dovecot プログラムで 直接制限しているので、 root のログインは出来ないことに注意してください。

first_valid_uid = 500
last_valid_uid = 0

ユーザの有効な GID 範囲。デフォルトは root/wheel 以外です。 プライマリのグループ ID として有効ではない GID が指定してあるユーザは ログインが許されてません。 もしユーザが有効ではないグループに追加されていた場合は、 それらのグループは設定されません。

first_valid_gid = 1
last_valid_gid = 0

メール処理を行うためのグループをアクセスできるように設定。 ロックファイルを作成するため、 /var/mail へのアクセスが できるように "mail" グループを指定するような使われ方が一般的です。

mail_extra_groups =

chroot

メールプロセスが chroot することができる ":" で区切られたディレクトリのリスト (例えば /var/mail は /var/mail/foo/bar への chroot も許可されます)。 この設定は login_chroot や auth_chroot の値に影響を及ぼしません。 警告:root 権限が奪われることになるかもしれないので、 ローカルユーザが変更できるディレクトリを設定してはいけません。 通常この設定は、ユーザにシェルアクセスを許可させないためだけに 行うものです。 詳細は doc/configuration.txt を参照してください。

valid_chroot_dirs = 

メールプロセスのデフォルトの chroot ディレクトリ。 この設定を行うと、ユーザデータベースでホームディレクトリに /./ を与えられた特定のユーザがアクセスできるようになります (例えば /home/./user は /home に chroot します)。 通常、 chroot する本当の必要性がないことに注意してください。 なぜなら、いずれにしても、 Dovecot はユーザがユーザの メールディレクトリ以外のファイルにアクセスすることを許していないからです。

mail_chroot = 

デバッグ

メールプロセスのデバッグを有効。 この設定は、何故 Dovecot がメールを見つけられないのかについて 理解するのを助けます。

mail_debug = no

メールの保存先ディレクトリ

設定されていないときに使う、デフォルトのメール環境。 これを空のままにすると、Dovecot は doc/mail-storages.txt に 記述されているようないくつかの自動検出をしようとします。 この設定には、いくつかの特別な変数があります。

  %u - ユーザ名
  %n - user@domain のユーザ部分、ドメインが無い場合は %u と同じになります
  %d - user@domain のドメイン部分、もしなければ空になります
  %h - ホームディレクトリ

全てのリストを見たい場合は、 doc/variables.txt を参照してください。 例としていくつかをあげます:

  default_mail_env = maildir:/var/mail/%1u/%u/Maildir
  default_mail_env = mbox:~/mail/:INBOX=/var/mail/%u
  default_mail_env = mbox:/var/mail/%d/%n/:INDEX=/var/indexes/%d/%n

default_mail_env = 

ネームスペース

複数のメールボックスの場所を設定したい場合や、 デフォルトのネームスペースの設定を変更したい場合は、 ネームスペースの項目を定義することによって実現できます:

プライベートなもの、共有できるもの、パブリックなもののネームスペースを 作成することができます。 それらの唯一の違いは Dovecot がネームスペースの拡張を通して クライアントにそれらをアナウンスする方法です。 共有ネームスペースは他のユーザに共有されるユーザ所有の メールボックスを意味し、パブリックなネームスペースはさらに 広い範囲でメールボックスのアクセスが可能になります。

覚えておくこと:もしネームスペースを加えた場合は、 デフォルトのネームスペースをきちんと追加しなければならなく、 すなわち、場所の設定を行っていないネームスペースがない場合は、 default_mail_env は何もされません。 デフォルトのネームスペースは空の文字列をネームスペースに追加したものに なります。

更なるネームスペースの情報は http://wiki.dovecot.org/Namespaces にあります。

namespace private {

   #階層の区切りに使う文字。全てのネームスペースで同じ区切り文字を使うべき
   #です。そうしなければ、いくつかのクライアントは混乱してしまいます。"/" 
   #にすれば良いと思います。
   separator = /

   #このネームスペースでアクセスされる最初の文字列指定。これは、全てのネーム
   #スペースで異なる必要があります。例えば "Public/" とします。
   prefix = 

   #実際のメールボックスの場所。これは default_mail_env と同じフォーマットに
   #なり、そのデフォルトになるものです。
   location =

   #INBOX は1つのみ存在し、この設定はどこにネームスペースがあるかを定めます。
   inbox = yes

   #もしネームスペースが隠されると、 NAMESPACE 拡張機能経由でクライアント
   #への通知が行われないのと、LIST の応答にも表示されません。やめるつもり
   #だけど、まだ動かし続けたい異なるネームスペースがある別のサーバからの
   #移行をするときにとても役立ちます。例えば、"~/mail", "~%u/mail", "mail/"
   #から始まる文字の隠れたネームスペースを作ることができます。

   hidden = yes
}

メールのキャッシュ

キャッシュファイルの中に初めに保存される、空白で区切られた フィールドのリスト。現在、以下のフィールドが許されています。

flags, date.sent, date.received, size.virtual, size.physical mime.parts, imap.body, imap.bodystructure

異なる IMAP クライアントはそれぞれの方法で動きますので、 それぞれのキャッシュフィールドを使うことでメリットになります。 いくつかの場合では、それは全くメリットがないです。 不必要なキャッシュは、役に立たないディスク I/O が発生するので、 そうしたくないかもしれません。

Dovecot はクライアントが何を望んでいるのか自動的に理解しようとし、 その状態を保ちます。 しかし、メールボックスが開かれる最初の数秒間、 Dovecot はクライアントに必要なものがわからないので、 最適に実行されないかもしれません。 もし大部分のクライアントが必要とするフィールドを知っているならば、 手動でこのフィールドを設定することが約に立つかもしれません。 もしクライアントが実際にそれを利用しない場合は、 Dovecot は 結局それを落としてしまいます。

通常、このフィールドはそのままにします。 起こりうるメリットは通常わかりづらいです。

mail_cache_fields = 

Dovecot がキャッシュファイルとして決して保存されたくない フィールドの空白で区切られたリスト。 もし I/O を犠牲にしてディスクの容量を抑えたい場合に役に立ちます。

mail_never_cache_fields = 

その他

mailbox_check_interval のようなものだけど、 IDLE コマンドが使用するもの。

mailbox_idle_check_interval = 30

クライアントの全てのファイルシステムへのアクセス許可。 OS が有効な UID/GID かチェックする以外の、アクセスの チェックを行いません。 maildir と mbox で動作し、 /path/ または /~user/ のような メールボックスの最初の文字列を許します。

mail_full_filesystem_access = no

メールキーワード名で許されている最大文字数。 新しいキーワードを作ろうとするときに、強制されるものです。

mail_max_keyword_length = 50

LF の代わりに CR+LF でメールを保存。 特に sendfile() システムコールを使用している Linux や FreeBSD で、 このメールを送ることは、 CPU の消費が少なくなります。 その反面、それよりも遅い可能性のある、 少しのさらなるディスク I/O を作り出します。

mail_save_crlf = no

ファイルのロックと NFS

メールファイルを読むのに read() を使わずに mmap() を使います。 read() は私の Linux/x86 では少し高速で、NFS で使うにはベターなので、 read() がデフォルトです。 注意:OpenBSD 3.3 とそれ以前のバージョンでは mail_read_mmaped = yes は 正しく動作しません。

mail_read_mmaped = no

全てにおいて mmap() を使用しない。 インデックスをリモートのファイルシステム (NFS やクラスタ化されたファイルシステム)に保存する場合は、 必要になります。

mmap_disable = no

mmap のファイルを write() しません。 それを別々なキャッシュとして使う、 OpenBSD のようないくつかの OS では必要です。

mmap_no_write = no

インデックスファイルで使用するロックの方法。 fcntl と flock と dotlock が使用できます。 dotlock は、他のロックの方法よりもディスク I/O を生み出すと 思われるいくつかのトリックを使います。

lock_method = fcntl

ドットファイルから始まるメールディレクトリの全てのエントリを デフォルトの LIST コマンドが返す。 このオプションを有効にすれば、 Dovecot はディレクトリである エントリのみを返すようにします。 これはそれぞれのエントリにおいて stat() を使って行われるので、 より多くのディスク I/O となる原因となります。 (構造体 dirent->d_type が設定されるシステムのため、 このチェックは行われず、この設定に関係なく常に適用されます。)

(システムによってここを設定する方法を誰か知りませんか? Linux や FreeBSD のような有名な OS での設定のリストが あれば良いと思います)

maildir_stat_dirs = no

ハードリンクを使っている他のフォルダへメールのコピー。 これは実際にファイルをコピーすることよりも非常に高速です。 何かが1つのフォルダでメールを編集するが、それを他から編集されたくない 場合にのみ、これは問題を含みます。 私は、直接メールファイルを編集する MUA を知りません。 IMAP プロトコルもメールが変更されないことを要求しているので、 いずれにせよこれは問題を含むことになります。 もしパフォーマンスが気になるのでしたら、有効にしてください。

maildir_copy_with_hardlinks = no

メールボックスをロックするのに、どの方法でロックするか。 現在、4つの選択肢があります。

複数のロックの方法を使うことができます: 別の MTA や MUA も複数のロックを使っているならば、 それらの宣言の順番はデッドロックを避けるために重要になります。 いくつかの OS では、同時に複数のロックを使うことは許されていません。

mbox_read_locks = fcntl
mbox_write_locks = dotlock fcntl

終了する前の、全てのロックを待つ最大値を秒で指定。

mbox_lock_timeout = 300

メールボックスが全く編集されなかったときで、 dotlock が 残ってしまった場合、この秒より後ではロックファイルを上書きします。

mbox_dotlock_change_timeout = 30

さらにその他

mbox に変更があったときに、何が変わったかを見つけるため、 全ての mbox 読まなければなりません。 mboxが大きいならば、これに長い間がかかることになります。 変更はたいてい新しいメールの追加なので、 新しいメールを単純に読むだけのことは高速です。 もしこの設定を有効にすると、Dovecot は mbox にある何かが何を期待しているかということとは 関係なく、全ての mbox を再読み込みすることの安全な頼みの綱として 動作します。 この設定の本当の唯一のデメリットは、 他の MUA がメッセージフラグを 変更した場合に、 Dovecot がすぐにわからないことです。 完全な同期が、 SELECT, EXAMINE, EXPUNGE, CHECK コマンドで行われる点に 注意してください。

mbox_dirty_syncs = yes

mbox_dirty_syncs のようなものだが、 SELECT もしくは EXAMINE もしくは EXPUNGE もしくは CHECKコマンドであっても、 完全な同期をしない。 もしこれが設定された場合、mbox_dirty_syncs は無効になります。

mbox_very_dirty_syncs = no

全ての書き込み同期(EXPUNGE とCHECK とメールボックスが閉じられたとき)を するまで、mbox ヘッダーの書き込みを遅らせる。 これは、クライアントが全てのメールを削除する POP3 に特に役立ちます。 デメリットは、変化が他の MUA にはすぐに見えないことです。

mbox_lazy_writes = yes

メールファイルとディレクトリで使用する umask 値。

umask = 0077

メールプロセスを exec() する前に全ての特権を取り下げる。 これはほとんどデバッグをするために意味を持ち、 この設定が無ければコアダンプを得ることができません。 複数のユーザを1つの UID を使う場合は、 ユーザがお互いのプロセスを ptrace() することができるので、 少々セキュリティのリスクとなります。

mail_drop_priv_before_exec = no

プロセスサイズの最大値をメガバイトで指定。 ほとんどのメモリは ファイルに mmap() されるので、 たとえ制限がとても高く設定されていても、大して害にはなりません。

mail_process_size = 256

メールプロセスのログの最初に書かれる文字列。 使うことができる変数の一覧は doc/variables.txt を 参照してください。 See doc/variables.txt for list of possible variables you can use.

mail_log_prefix = "%Us(%u): "

IMAP 機能の設定

protocol imap {
  # ログイン実行ファイルの場所
  login_executable = /usr/libexec/dovecot/imap-login

  # IMAP実行ファイルの場所
  mail_executable = /usr/libexec/dovecot/imap

  # これは ~/dovecot.rawlog/ ディレクトリに rawlogs を書き込みます:
  mail_executable = /usr/libexec/dovecot/rawlog /usr/libexec/dovecot/imap

  # IMAP コマンドラインの長さの最大値をバイト単位で指定。いくつかのクライア
  # ントは巨大なメールボックスにおいてとても長いコマンドラインを生成するため、
  # 何度か "Too long argument" や "IMAP command line too large"  のエラーが
  # 発生した場合、この値を上げてあげなければなりません。
  imap_max_line_length = 65536

  # ダイナミックにロード可能なモジュールのサポート。
  mail_use_modules = no
  mail_modules = /usr/lib/dovecot/imap

  # 挨拶メッセージでIMAPの能力を送信するかどうか。この設定を行うとクライア
  # ントは CAPABILITY コマンドで要求することが必要なくなるので、やり取りをす
  # る回数が1回減ります。多くのクライアントはそれを理解することができないの
  # で、結局 CAPABILITY を要求することになるでしょう。
  login_greeting_capability = no

  # 様々なクライアントのバグへの回避方法:
  #  delay-newmail:
  #    NOOP と CHECK コマンドの応答のときのみ、EXISTS/RECENT を新しいメールの
  #    通知として送信する。例えば、OSX Mail のようないくつかのクライアントは、
  #    それを無視します。Outlook Express はさらに酷く壊れますので、このオプ
  #    ション無しでは "Message no longer in server" エラーがユーザに発生する
  #    かもしれません。同期を "Headers Only" に設定した場合、OE6 ではこの回避
  #    方法を使うと壊れることに注意してください。
  #  outlook-idle:
  #    Outlook と Outlook Express は IDLE コマンドで終了することはないので、
  #    30分間メールが届かなければ、 Dovecot は接続を切断します。 Outlook は再
  #    接続することはないので、もし新しいメールが届いたときに見ることはできな
  #    くなること以外は、とても良い機能です。
  #  netscape-eoh:
  #    もしメッセージヘッダが空の "end of headers" 行で終わっていない場合、
  #    Netscape 4.x は壊れます。通常、全てのメッセージはそうなっているのです
  #    が、もしその行が存在しなければ、この回避方法を設定することによって、
  #    行が追加され Netscape は決して壊れなくなります。
  #  tb-extra-mailbox-sep:
  #    mbox の保存において、メールボックスはメールとサブメールボックスの両方
  #    ではなく、どちらかを含めることができます。 Thunderbird は、サーバに対
  #    して、購読リストのメールボックス名で、最後の文字を '/' にすることを
  #    強制的に許可することで、この2つを区別します。
  imap_client_workarounds = outlook-idle

POP3 機能の設定

protocol pop3 {
  # ログイン実行ファイルの場所
  login_executable = /usr/libexec/dovecot/pop3-login

  # POP3 実行ファイルの場所
  mail_executable = /usr/libexec/dovecot/pop3

  # POP3 セッションでメールを最新や既読状態に変更しようとしない。これは、大部
  # 分がディスク I/O を減らすことを目的とします。 maildir 形式では new/ から
  # cur/ へのファイルの移動が行わず、 mbox フォーマットでは Status-header の
  # 書き込みを行いません。
  # pop3_no_flag_updates = no

  #新しい POP3 スペックでは削除されたが、古い POP3 のスペックにある LAST コマ
  #ンドのサポート。いくつかのクライアントでは、まだこれを必要としています。
  #これを有効にすると、 RSET コマンドはメッセージから全ての \Seem フラグを
  #クリアすることになります。
  pop3_enable_last = no
  
  #使う POP3 の UIDL フォーマット。以下の変数を使うことができます:
  
  # %v - メールボックス UIDVALIDITY
  # %u - メール UID
  # %m - メールボックスヘッダの MD5 サムの16進数 (mbox 形式のときのみ)
  # %f - ファイル名 (maildir 形式のときのみ)
  
  #もし他の POP3 との互換性がある UID が必要ならば、以下を使用してください:
  # UW's ipop3d         : %08Xv%08Xu
  # Courier version 0   : %f
  # Courier version 1   : %u
  # Courier version 2   : %v-%u
  # Cyrus (<= 2.1.3)    : %u
  # Cyrus (>= 2.1.4)    : %v.%u
  
  #Outlook 2003 は Dovecot のデフォルトである %v.%u フォーマットで問題がある
  #ように見えますので、新しいサーバを構築しているのでしたら、この設定を変更
  #することは良い選択でしょう。%08Xu%08Xv の設定はとても安全だと思います。
  pop3_uidl_format = %v.%u

  #POP3 のログアウトフォーマットの文字列:
  # %t - TOP コマンドの数
  # %T - TOP コマンドの結果としてクライアントに送信されたバイト数
  # %r - RETR コマンドの数
  # %R - RETR コマンドの結果としてクライアントに送信されたバイト数
  # %d - 削除されたメッセージの数
  # %m - メッセージの数 (削除前のもの)
  # %s - メールボックスのバイト単位でのサイズ (削除前のもの)
  pop3_logout_format = top=%t/%T, retr=%r/%R, del=%d/%m, size=%s

  #ダイナミックにロード可能なモジュールのサポート。
  mail_use_modules = no
  mail_modules = /usr/lib/dovecot/pop3

  #色々なクライアントのバグへの回避方法:
  #  outlook-no-nuls:
  #    Outlook と Outlook Express はヌル文字を含んでいた場合、固まってしまい
  #    ます。この設定はヌル文字を 0x80 文字と置き換えます。
  #  oe-ns-eoh:
  #    Outlook Express と Netscape Mail はもしヘッダーラインの最後が見つから
  #    ない場合に、壊れます。このオプションはもしそれが見つからないとき、
  #    単純に送信します。
  pop3_client_workarounds = 
}

認証処理

更なる情報は http://wiki.dovecot.org/Authentication を参照してください。

実行させる場所。

auth_executable = /usr/libexec/dovecot/dovecot-auth

プロセスサイズの最大値をメガバイトで設定。

auth_process_size = 256

認証のキャッシュサイズの最大値をキロバイトで設定。

auth_cache_size = 0

キャッシュデータの生存時間を秒単位で指定。 この秒数を過ぎると、キャッシュレコードはキャッシュから外されます。

auth_cache_ttl = 3600

SASL 認証メカニズムで必要なスペースで区切られた realm のリスト。 もし多くの realm をサポートしたいならば、 この設定を空のままにすることができます。 多くのクライアントは単にここで最初にリストされたものを使い、 デフォルトの realm を最初のままにしておきます。

auth_realms =

指定がない場合に使用するデフォルトの realm/domain 。 これは、プレーンテキストでのログインにおいて、 SASL の realm と追加する @domain 両方のユーザ名に使われます。

auth_default_realm =

ユーザ名に使用できる文字のリスト。 ユーザに与えられたユーザ名がこのリストに含まれない文字を含んでいた場合、 ログインは自動的に失敗します。 これは、ユーザが SQL/LDAP データベースの潜在的な引用符を逃れを使った 脆弱性で、権限の奪取をできないようにことを確認するための追加のチェックです。 もし、全ての文字を使う場合は、この値を空に設定してください。

auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@

データベースから検索される前に変換するユーザ名の文字。 この値は変換前の文字と変換後の文字を連続して指定します。 例えば、 "#@/@" は '#' と '/' 文字が '@' 文字に変換されることを意味します。

auth_username_translation =

ユーザが ANONYMOUS SASL メカニズムでログインしたときに 使われるユーザ名。

auth_anonymous_username = anonymous

より詳細なログ出力。 なぜ認証がうまく動作していないかについての解決に役立ちます。

auth_verbose = no

デバッグ目的の更なる詳細なログ出力。 例えば、SQL のクエリーを表示します。

auth_debug = no

dovecot-auth プロセスの最大数。 それは、ブロックされた(MySQL や PAM のような)ユーザデータベースと パスワードデータベースのクエリーの実行に使われます。 これは必要に応じて自動的に作成されたり、削除されたりします

auth_worker_max_count = 30

auth default {

  # 認証で使用したいメカニズムの空白で区切られたリスト:
  #  plain digest-md5 cram-md5 apop anonymous
  mechanisms = plain
 
  # ユーザのパスワード(と多くのこと)の確認に使われるパスワードデータベース。 
  # 複数の passdbs と userdbs を使うことができます。仮想ユーザのデータベース
  # にシステムユーザを複製することなく、システムのユーザ (/etc/passwd)と
  # 仮想ユーザの両方を使用したい場合に、これはとても役立ちます。
  # 
  # http://wiki.dovecot.org/Authentication
  
  # PAM認証。最近のほとんどのシステムで使われています。
  # 注意:ユーザのパスワードが正しいかどうかを確かめるためのみに、PAM は使う
  # ことができ、 userdb としては使うことができません。もし別のパスワードデー
  # タベース (ほとんどの場合 passwd) を使いたくない場合は、 static userdb を
  # 使うようとにしてください。
  passdb pam {
    [-session] []
    
    # -session は Dovecot が PAM のセッションを open してすぐに close します。
    # いくつかの PAM プラグインを動かすにはこれが必要です。
    
    # サービス名を "*" にすると、 pop3 や imap のようなサービス名が使われま
    # す。
    args = dovecot
  }

  # /etc/passwd もしくは同様のもので、 getpwnam() を使用します。
  # 現在多くのシステムで、これは、 /etc/nsswitch.conf で構成されるネームサー
  # ビススイッチをこれは使っている。
  passdb passwd {
  }

  # /etc/shadow もしくは同様のもので、 getspnam() を使用します。最近は PAM
  # に取って代わられている。
  passdb shadow {
  }

  # 場所を指定した passwd のようなファイル。
  passdb passwd-file {
    #passwd-file へのパスを指定。
    args = 
  }

  # 認証実行可能な checkpasswd 。
  passdb checkpassword {
    #checkpassword バイナリへのパスを指定。
    args = 
  }

  # SQL データベース
  passdb sql {
    # SQL 設定ファイルへのパスを指定します。例は doc/dovecot-sql.conf 参照し
    # てください。
    args = 
  }

  # LDAP データベース
  passdb ldap {
    # LDAP 設定ファイルへのパスを指定します。例は doc/dovecot-ldap.conf 参照
    # してください。
    args = 
  }

  # vpopmail 認証
  passdb vpopmail {
  }

  
  #
  # ユーザデータベースの設定。これは、メールがどこにあるのか、どんなユーザや
  # グループ ID に所属しているのかに使われます。UID が1つしかない設定の場合
  # は、"static" を使ってください。
  # 
  # http://wiki.dovecot.org/Authentication
  # http://wiki.dovecot.org/VirtualUsers
  

  # /etc/passwd もしくは同様のもので、 getpwnam() を使用します。
  # 現在多くのシステムで、これは  /etc/nsswitch.conf で構成されるネームサー
  # ビススを使っている。
  userdb passwd {
  }

  # 場所を指定した passwd のようなファイル。
  userdb passwd-file {
    Path for passwd-file
    args =
  }

  # テンプレートから静的な設定を生成
  userdb static {
    # 設定のテンプレート。uid, gid, home, mail, nice のような、通常 userdb
    # が返すことができるものを設定します。
    #
    # いくつかの例:
    # 
    # args = uid=500 gid=500 home=/var/mail/%u
    # args = uid=500 gid=500 home=/home/%u mail=mbox:/home/%u/mail nice=10
    #
    args =
  }

  # SQL データベース
  userdb sql {
    # SQL 設定ファイルへのパスを指定します。例は doc/dovecot-sql.conf 参照し
    # てください。
    args = 
  }

  # LDAP データベース
  userdb ldap {
    # LDAP 設定ファイルへのパスを指定します。例は doc/dovecot-ldap.conf 参照
    # してください。
    args = 
  }

  # vpopmail
  userdb vpopmail {
  }

  # プロセスで使用するユーザ。このユーザはユーザデータベースとパスワードデー
  # タベースにアクセスするときのみ使用されます。shadow と PAM の認証では、
  # root が必要となり、もしできるなら別なものを使ってください。BSD の内部的
  # に shadow アクセスをする passwd 認証では、同様に root を必要とします。
  # このユーザはメールのアクセスには使用されないことを注意してください。こ
  # のユーザは上記の userdb にて指定されているものとします。
  user = root

  # chroot プロセスで使用するディレクトリ。これが設定されると、ほとんどの認証
  # バックエンドは動作せず、もし auth_user が root であれば、 chroot するポイ
  # ントがありません。
  # valid_chroot_dirs はこの設定を使うときに必要ないことに注意してください。
  chroot = 

  # 作成される認証プロセスの数
  count = 1

  # 有効な SSL クライアント証明書を必要とする設定。なければ認証が失敗する。
  ssl_require_client_cert = no
}

認証のエクスポート

例えば、Dovecot とやり取りすることをサポートする SMTP サーバのような 他のプログラムに認証のインタフェースをエクスポートすることは可能です。 クライアントソケットが実際の認証を処理します - ユーザ名とパスワードを与えると、それは OK もしくは failure を返します。 全ての人にそのアクセスを許可することは、とても安全です。 マスターソケットは a) もし与えられたクライアントの認証が成功した場合、クエリーに使われ、 b) userdb 検索に使われます。

リスナーソケットは認証の項で与えられた設定を使って、 Dovecot のメインプロセスより作成されます。

auth default_with_listener {
 mechanisms = plain
 passdb passwd {
 }
 userdb pam {
 }
 socket listen {
   master {
     path = /var/run/dovecot/auth-master
     mode = 0600
     Default user/group is the one who started dovecot-auth (root)
     user = 
     group = 
   }
   client {
     path = /var/run/dovecot-auth-client
     mode = 0660
   }
 }
}

ソケットへの接続設定。 それはソケットが既に実行しているプロセスを引き受け、 Dovecot のメインのプロセスのみが、それに接続しようとします。 他のどこかで設定されている場合は、 それはマスターソケットへのパス以外の他の設定を必要としません。 クライアントソケットが login_dir になければならないことに注意してください。

auth external {
 socket connect {
   master {
     path = /var/run/dovecot/auth-master
   }
 }
}