模块 ngx_mail_core_module

默认情况下不构建此模块,应使用--with-mail configuration 参数启用它。

Example Configuration

worker_processes 1;

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] [backlog=number] [rcvbuf=size] [sndbuf=size] [bind] [ipv6only=on\|off] [so_keepalive=on\|off\|[keepidle]:[keepintvl]:[keepcnt]];
默认:
Context:server

设置服务器将接受请求的 socket 的addressport。可以只指定 port。对于 example,地址也可以是主机名:

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;

不同的服务器必须侦听不同的addressport对。

ssl参数允许指定此 port 上接受的所有连接都应在 SSL 模式下工作。

listen指令可以有几个特定于 socket-related system calls 的附加参数。

  • backlog = number

  • _set listen()调用中的backlog参数,用于限制挂起连接队列的最大长度(1.9.2)。默认情况下,backlog在 FreeBSD,DragonFly BSD 和 macOS 上设置为-1,在其他平台上设置为 511。

  • rcvbuf = size

  • 设置侦听 socket(1.11.13)的接收缓冲区大小(SO_RCVBUF选项)。

  • sndbuf = size

  • 设置监听 socket(1.11.13)的发送缓冲区大小(SO_SNDBUF选项)。

  • bind

  • 此参数指示为给定的 address:port 对进行单独的bind()调用。事实是,如果有多个listen指令具有相同的 port 但不同的地址,并且其中一个listen指令侦听给定 port(*: port)的所有地址,则 nginx 将bind()仅返回*: port。应该注意,在这种情况下将进行getsockname()系统调用以确定接受连接的地址。如果使用ipv6onlyso_keepalive参数,那么对于给定的addressport对,将始终进行单独的bind()调用。

  • ipv6only = on | off

  • 此参数确定(通过IPV6_V6ONLY socket 选项)侦听通配符地址[::]的 IPv6 socket 是仅接受 IPv6 连接还是仅接受 IPv6 和 IPv4 连接。默认情况下,此参数处于启用状态。它只能在开始时设置一次。

  • so_keepalive = on | off |[ keepidle]:[ keepintvl]:[ keepcnt]

  • 此参数配置侦听 socket 的“TCP keepalive”行为。如果省略此参数,则操作系统的设置将对 socket 有效。如果将其设置为 value“on”,则会为 socket 打开SO_KEEPALIVE选项。如果将其设置为 value“off”,则 socket 的SO_KEEPALIVE选项将关闭。某些操作系统支持使用TCP_KEEPIDLETCP_KEEPINTVLTCP_KEEPCNT socket 选项在 per-socket 基础上设置 TCP keepalive 参数。在这样的系统上(目前,Linux 2.4,NetBSD 5 和 FreeBSD 9.0-STABLE),可以使用keepidlekeepintvlkeepcnt参数配置它们。可以省略一个或两个参数,在这种情况下,相应的 socket 选项的系统默认设置将生效。例如,

so_keepalive=30m::10

将 idle 超时(TCP_KEEPIDLE)设置为 30 分钟,将探测间隔(TCP_KEEPINTVL)保留为系统默认值,并将探测计数(TCP_KEEPCNT)设置为 10 个探测器。

句法:mail { ... }
默认:
Context:main

提供 configuration 文件 context,其中指定了邮件服务器指令。

句法:protocol imap \| pop3 \| smtp;
默认:
Context:server

设置代理服务器的协议。支持的协议是IMAPPOP3SMTP

如果未设置该指令,则可以根据指令中指定的 well-known port 自动检测协议:

  • imap : 143, 993

  • pop3 : 110, 995

  • smtp : 25, 587, 465

可以使用组态参数--without-mail_imap_module--without-mail_pop3_module--without-mail_smtp_module禁用不必要的协议。

句法:resolver address ... [valid=time];
resolver off;
默认:resolver off;
Context:mail , server

配置用于查找 client 主机名的 name 服务器以将其传递给验证服务器,并在代理 SMTP 时配置X 客户端命令。例如:

resolver 127.0.0.1 [::1]:5353;

可以将地址指定为域 name 或 IP 地址,以及可选的 port(1.3.1,1.2.2)。如果未指定 port,则使用 port 53。 Name 服务器以 round-robin 方式查询。
在 version 1.1.7 之前,只能配置一个 name 服务器。从版本 1.3.1 和 1.2.2 开始支持使用 IPv6 地址指定 name 服务器。
默认情况下,nginx 使用响应的 TTL value 缓存答案。可选的valid参数允许覆盖它:

resolver 127.0.0.1 [::1]:5353 valid=30s;

在 version 1.1.9 之前,无法调整缓存 time,并且 nginx 总是缓存 5 分钟的答案。

特殊的 value off禁用解析。

句法:resolver_timeout time;
默认:resolver_timeout 30s;
Context:mail , server

为 DNS 操作设置超时,对于 example:

resolver_timeout 5s;

句法:server { ... }
默认:
Context:mail

设置服务器的 configuration。

句法:server_name name;
默认:server_name hostname;
Context:mail , server

设置使用的服务器 name:

  • 在最初的 POP3/SMTP 服务器问候语中;

  • 在 SASL CRAM-MD5 认证期间的盐;

  • 如果启用了X 客户端命令的传递,则在连接到 SMTP 后端时EHLO命令中。

如果未指定该指令,则使用计算机的主机名。

句法:timeout time;
默认:timeout 60s;
Context:mail , server

设置代理到后端开始之前使用的超时。

Updated at: 7 months ago
ngx_http_xslt_moduleTable of contentngx_mail_auth_http_module