ngx_mail_core_module モジュール

設定例
ディレクティブ
     listen
     mail
     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 address:port [ssl] [proxy_protocol] [backlog=number] [rcvbuf=size] [sndbuf=size] [bind] [ipv6only=on|off] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];
デフォルト: -
コンテキスト: server

サーバがリクエストを受け取るソケットのaddressportを設定します。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 the backlog, rcvbuf, sndbuf, ipv6only, or so_keepalive parameters are used then for a given address:port pair a separate bind() 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_KEEPINTVLTCP_KEEPCNT ソケットオプションを使ってソケットごとのTCP keepaliveパラメータの設定をサポートしています。そのようなシステム(現在のところ、Linux 2.4+, NetBSD 5+ と FreeBSD 9.0-STABLE)では、keepidle, keepintvlkeepcnt パラメータを使って設定することができます。対応するソケットのオプションにシステムのデフォルトの設定が効果を持つ場合に、一つ以上のパラメータが省略されるかも知れません。例えば:
so_keepalive=30m::10
アイドルタイムアウト(TCP_KEEPIDLE) が30分に設定され、プルーブインターバル (TCP_KEEPINTVL)はシステムのデフォルトのままになり、プルーブカウント(TCP_KEEPCNT) は10プルーブに設定されます。

構文: mail { ... }
デフォルト: -
コンテキスト: main

メールサーバのディレクティブが指定されているコンテキストの設定ファイルを提供します。

構文: max_errors number;
デフォルト:
max_errors 5;
コンテキスト: mail, server

このディレクティブはバージョン1.21.0から導入されました。

プロトコルエラーの数を設定します。この後で接続は閉じられます。

構文: protocol imap | pop3 | smtp;
デフォルト: -
コンテキスト: server

プロキシされるサーバのプロトコルを設定します。サポートされているプロトコルは、 IMAP, POP3SMTPです。

ディレクティブが設定されていない場合、listen ディレクティブの中で指定されているweb-knownポートに基づいて自動的にプロトコルが検知されます:

configuration パラメータ --without-mail_imap_module, --without-mail_pop3_module--without-mail_smtp_module を使って、不要なプロトコルを無効にすることができます。

構文: resolver address ... [valid=time] [ipv4=on|off] [ipv6=on|off] [status_zone=zone];
resolver off;
デフォルト:
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 time;
デフォルト:
resolver_timeout 30s;
コンテキスト: mail, server

DNS操作のタイムアウトを設定します。例えば:

resolver_timeout 5s;

構文: server { ... }
デフォルト: -
コンテキスト: mail

サーバ設定を設定します。

構文: server_name name;
デフォルト:
server_name hostname;
コンテキスト: mail, server

利用するサーバ名を設定します:

ディレクティブが指定されない場合は、マシーンのホスト名が使われます。

構文: timeout time;
デフォルト:
timeout 60s;
コンテキスト: mail, server

バックエンドへのプロキシを開始するまでのタイムアウトを設定します。

TOP
inserted by FC2 system