モジュール ngx_mail_core_module
| 設定例 ディレクティブ listen max_errors protocol resolver resolver_timeout server server_name timeout |
このモジュールはデフォルトではビルドされません。--with-mail 設定パラメータで有効にする必要があります。
設定例
worker_processes auto;
error_log /var/log/nginx/error.log info;
events {
worker_connections 1024;
}
mail {
server_name mail.example.com;
auth_http localhost:9000/cgi-bin/nginxauth.cgi;
imap_capabilities IMAP4rev1 UIDPLUS IDLE LITERAL+ QUOTA;
pop3_auth plain apop cram-md5;
pop3_capabilities LAST TOP USER PIPELINING UIDL;
smtp_auth login plain cram-md5;
smtp_capabilities "SIZE 10485760" ENHANCEDSTATUSCODES 8BITMIME DSN;
xclient off;
server {
listen 25;
protocol smtp;
}
server {
listen 110;
protocol pop3;
proxy_pass_error_message on;
}
server {
listen 143;
protocol imap;
}
server {
listen 587;
protocol smtp;
}
}
ディレクティブ
| 構文 |
listen |
|---|---|
| デフォルト | — |
| コンテキスト |
server |
サーバーがリクエストを受け付けるソケットの address と port を設定します。ポートだけを指定することも可能です。アドレスは、例えばホスト名にすることもできます。
listen 127.0.0.1:110; listen *:110; listen 110; # same as *:110 listen localhost:110;
IPv6 アドレス (0.7.58) は角括弧で指定されます。
listen [::1]:110; listen [::]:110;
UNIX ドメインソケット (1.3.5) は "unix:" 接頭辞で指定されます。
listen unix:/var/run/nginx.sock;
異なるサーバーは、異なる address:port の組み合わせでリッスンする必要があります。
ssl パラメータは、このポートで受け入れられるすべての接続が SSL モードで動作することを指定できます。
proxy_protocol パラメータ (1.19.8) は、このポートで受け入れられるすべての接続が PROXY プロトコルを使用する必要があることを指定できます。取得した情報は、認証サーバーに渡され、クライアントアドレスの変更に使用できます。
listen ディレクティブには、ソケット関連のシステムコールに固有の追加パラメータをいくつか含めることができます。
-
backlog=number - 保留中の接続のキューの最大長を制限する
listen()呼び出しでbacklogパラメータを設定します (1.9.2)。デフォルトでは、backlogは FreeBSD、DragonFly BSD、および macOS では -1 に設定され、他のプラットフォームでは 511 に設定されます。 -
rcvbuf=size - リスニングソケットの受信バッファサイズ (
SO_RCVBUFオプション) を設定します (1.11.13)。 -
sndbuf=size - リスニングソケットの送信バッファサイズ (
SO_SNDBUFオプション) を設定します (1.11.13)。 -
bind - このパラメータは、特定のアドレス:ポートの組み合わせに対して個別の
bind()呼び出しを行うように指示します。事実として、同じポートだが異なるアドレスを持つ複数のlistenディレクティブがあり、いずれかのlistenディレクティブが指定されたポートのすべてのアドレス (*:port) でリッスンする場合、nginx は*:portに対してのみbind()を行います。この場合、接続を受け入れたアドレスを決定するためにgetsockname()システムコールが行われることに注意してください。backlog、rcvbuf、sndbuf、ipv6only、またはso_keepaliveパラメータが使用されている場合、特定のアドレス:portの組み合わせに対して常に個別のbind()呼び出しが行われます。 -
ipv6only=on|off - このパラメータは、ワイルドカードアドレス
[::]でリッスンする IPv6 ソケットが IPv6 接続のみを受け入れるか、IPv6 と IPv4 の両方の接続を受け入れるかを (IPV6_V6ONLYソケットオプションを介して) 決定します。このパラメータは、デフォルトではオンになっています。開始時に一度だけ設定できます。 -
so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt] - このパラメータは、リスニングソケットの "TCP keepalive" の動作を構成します。このパラメータが省略された場合、ソケットにはオペレーティングシステムの 設定が有効になります。値 "
on" に設定されている場合、SO_KEEPALIVEオプションがソケットに対して有効になります。値 "off" に設定されている場合、SO_KEEPALIVEオプションはソケットに対して無効になります。一部のオペレーティングシステムでは、TCP_KEEPIDLE、TCP_KEEPINTVL、およびTCP_KEEPCNTソケットオプションを使用して、ソケットごとに TCP keepalive パラメータを設定することをサポートしています。そのようなシステム (現在、Linux 2.4+、NetBSD 5+、および FreeBSD 9.0-STABLE) では、keepidle、keepintvl、およびkeepcntパラメータを使用して設定できます。1 つまたは 2 つのパラメータが省略される場合があり、その場合、対応するソケットオプションのシステムデフォルト設定が有効になります。例えば、
アイドルタイムアウト (so_keepalive=30m::10
TCP_KEEPIDLE) を 30 分に設定し、プローブ間隔 (TCP_KEEPINTVL) をシステムデフォルトのままにし、プローブカウント (TCP_KEEPCNT) を 10 プローブに設定します。
| 構文 |
mail { ... } |
|---|---|
| デフォルト | — |
| コンテキスト |
main |
メールサーバーディレクティブが指定されている設定ファイルのコンテキストを提供します。
| 構文 |
max_errors |
|---|---|
| デフォルト |
max_errors 5; |
| コンテキスト |
mail, server |
このディレクティブはバージョン 1.21.0 で登場しました。
接続が閉じられるまでのプロトコルエラーの数を設定します。
| 構文 |
protocol |
|---|---|
| デフォルト | — |
| コンテキスト |
server |
プロキシサーバーのプロトコルを設定します。サポートされているプロトコルは、IMAP、POP3、および SMTP です。
ディレクティブが設定されていない場合、プロトコルは、listen ディレクティブで指定された既知のポートに基づいて自動的に検出できます。
-
imap: 143, 993 -
pop3: 110, 995 -
smtp: 25, 587, 465
不要なプロトコルは、設定パラメータ --without-mail_imap_module、--without-mail_pop3_module、および --without-mail_smtp_module を使用して無効にできます。
| 構文 |
resolver resolver |
|---|---|
| デフォルト |
resolver off; |
| コンテキスト |
mail, server |
クライアントのホスト名を見つけて 認証サーバーに渡したり、SMTP をプロキシするときに XCLIENT コマンドで渡すために使用されるネームサーバーを設定します。例えば
resolver 127.0.0.1 [::1]:5353;
アドレスは、ドメイン名または IP アドレスとして、オプションのポート (1.3.1, 1.2.2) と共に指定できます。ポートが指定されていない場合、ポート 53 が使用されます。ネームサーバーはラウンドロビン方式でクエリされます。
バージョン 1.1.7 より前は、単一のネームサーバーのみを構成できました。IPv6 アドレスを使用したネームサーバーの指定は、バージョン 1.3.1 および 1.2.2 以降でサポートされています。
デフォルトでは、nginx は解決中に IPv4 および IPv6 アドレスの両方を検索します。 IPv4 または IPv6 アドレスの検索が不要な場合は、ipv4=off (1.23.1) または ipv6=off パラメータを指定できます。
名前を IPv6 アドレスに解決することは、バージョン 1.5.8 以降でサポートされています。
デフォルトでは、nginx は応答の TTL 値を使用して応答をキャッシュします。オプションの valid パラメータを使用すると、それをオーバーライドできます。
resolver 127.0.0.1 [::1]:5353 valid=30s;
バージョン 1.1.9 より前は、キャッシュ時間の調整は不可能であり、nginx は常に 5 分間応答をキャッシュしていました。
DNS スプーフィングを防ぐために、適切に保護された信頼できるローカルネットワークで DNS サーバーを構成することをお勧めします。
オプションの status_zone パラメータ (1.17.1) は、指定された zone での要求と応答の DNS サーバー統計の収集を有効にします。このパラメータは、当社の商用サブスクリプションの一部として利用できます。
特別な値 off は、解決を無効にします。
| 構文 |
resolver_timeout |
|---|---|
| デフォルト |
resolver_timeout 30s; |
| コンテキスト |
mail, server |
DNS 操作のタイムアウトを設定します。例えば
resolver_timeout 5s;
| 構文 |
server { ... } |
|---|---|
| デフォルト | — |
| コンテキスト |
mail |
サーバーの設定を設定します。
| 構文 |
server_name |
|---|---|
| デフォルト |
server_name hostname; |
| コンテキスト |
mail, server |
使用されるサーバー名を設定します。
- 初期 POP3/SMTP サーバーの挨拶;
- SASL CRAM-MD5 認証中のソルト;
- XCLIENT コマンドの渡しが有効な場合、SMTP バックエンドに接続するときの
EHLOコマンド。
ディレクティブが指定されていない場合、マシンのホスト名が使用されます。
| 構文 |
timeout |
|---|---|
| デフォルト |
timeout 60s; |
| コンテキスト |
mail, server |
バックエンドへのプロキシが開始される前に使用されるタイムアウトを設定します。