ngx_mail_core_module モジュール
設定例 ディレクティブ listen max_errors protocol resolver resolver_timeout server server_name timeout |
このモジュールはデフォルトではビルドされず、--with-mail
configureパラメータを有効にする必要があります。
設定例
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
を設定します。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-domain ソケット (1.3.5) は"unix:
"のプリフィックスで指定されます:
listen unix:/var/run/nginx.sock;
異なるサーバは、異なるaddress
:port
ペアでlistenする必要があります。
ssl
パラメータ は、このポートで受け付ける全ての接続がSSLモードで動作しなければならないことを指定することができます。
proxy_protocol
パラメータ(1.19.8)は、このポートの全ての接続の受付がPROXY protocolを使わなければならないように指定することができます。取得された情報はauthentication serverに渡され、クライアントアドレスの変更に使うことができます。
listen
ディレクティブはソケットに関するシステムコールに特有の幾つかの追加パラメータを指定することができます。
-
backlog
=number
-
ペンディング接続のキューのための最大長を制限している
listen()
コールの中でbacklog
パラメータを設定します。(1.9.2)デフォルトでは、backlog
はFreeBSD、DragonFly BSD および macOS では -1、その他のプラットフォームでは511に設定されています。 -
rcvbuf
=size
-
listenソケットのための受信バッファサイズ(
SO_RCVBUF
オプション)を設定します (1.11.13)。 -
sndbuf
=size
-
listenソケットのための送信バッファサイズ(
SO_SNDBUF
オプション)を設定します (1.11.13)。 -
bind
-
指定された address:port ペアに個別の
bind()
コールをします。実際のところ、もし複数の同じポートで異なるアドレスのlisten
ディレクティブがあり、listen
ディレクティブ のうちの一つが指定されたポートの全てのアドレス(*:
port
)をlistenしている場合、nginx は*:
port
にだけbind()
するでしょう。この場合接続を受け付けるためのアドレスを決定するために、getsockname()
システムコールがされることに注意しなければなりません。If thebacklog
,rcvbuf
,sndbuf
,ipv6only
, orso_keepalive
parameters are used then for a givenaddress
:port
pair a separatebind()
call will always be made. -
ipv6only
=on
|off
-
このパラメータは(
IPV6_V6ONLY
ソケットオプションを経由して)、ワイルドカードアドレス[::]
でlistenしている IPv6ソケットがIPv6接続だけを受け付けるかIPv6とIPv4接続の両方を受け付けるかどうかを決定します。このパラメータはデフォルトでonです。開始時に一度だけ設定することができます。 -
so_keepalive
=on
|off
|[keepidle
]:[keepintvl
]:[keepcnt
] -
このパラメータはlistenソケットの"TCP keepalive"の挙動を設定します。パラメータが省略されると、オペレーティングシステムの設定がそのソケットに対して有効になります。値が"
on
"に設定されると、SO_KEEPALIVE
オプションがそのソケットに対してonになります。値が"off
"に設定されると、SO_KEEPALIVE
オプションがそのソケットに対してoffになります。幾つかのオペレーティングシステムではTCP_KEEPIDLE
,TCP_KEEPINTVL
とTCP_KEEPCNT
ソケットオプションを使ってソケットごとのTCP keepaliveパラメータの設定をサポートしています。そのようなシステム(現在のところ、Linux 2.4+, NetBSD 5+ と FreeBSD 9.0-STABLE)では、keepidle
,keepintvl
とkeepcnt
パラメータを使って設定することができます。対応するソケットのオプションにシステムのデフォルトの設定が効果を持つ場合に、一つ以上のパラメータが省略されるかも知れません。例えば:
アイドルタイムアウト(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 ディレクティブの中で指定されているweb-knownポートに基づいて自動的にプロトコルが検知されます:
-
imap
: 143, 993 -
pop3
: 110, 995 -
smtp
: 25, 587, 465
configuration パラメータ --without-mail_imap_module
, --without-mail_pop3_module
と --without-mail_smtp_module
を使って、不要なプロトコルを無効にすることができます。
構文: |
resolver
resolver |
---|---|
デフォルト: |
resolver off; |
コンテキスト: |
mail , server |
クライアント名を見つけるために使われるネームサーバを設定し、authentication 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)は、指定されたゾーン
の要求と応答の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 認証の間のsaltの中で;
-
XCLIENTコマンドの通過が有効であれば、SMTPバックエンドへ接続するときの
EHLO
コマンドの中で。
ディレクティブが指定されない場合は、マシーンのホスト名が使われます。
構文: |
timeout |
---|---|
デフォルト: |
timeout 60s; |
コンテキスト: |
mail , server |
バックエンドへのプロキシを開始するまでのタイムアウトを設定します。