模块 ngx_mail_core_module
示例配置 指令 监听 邮件 最大错误 协议 解析器 解析器超时 服务器 服务器名 超时 |
此模块默认不构建,应使用--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 |
设置服务器接受请求的套接字的地址
和端口
。也可以仅指定端口。地址也可以是主机名,例如:
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;
不同的服务器必须监听不同的地址
:端口
对。
ssl 参数允许指定此端口上接受的所有连接应在 SSL 模式下工作。
proxy_protocol 参数(1.19.8)允许指定此端口上接受的所有连接应使用 PROXY 协议。获得的信息传递给 身份验证服务器,并可用于 更改客户端地址。
listen 指令可以有几个特定于套接字相关系统调用的附加参数。
-
backlog
=number
-
设置在
listen()
调用中的backlog
参数,该参数限制了挂起连接队列的最大长度(1.9.2)。默认情况下,在 FreeBSD、DragonFly BSD 和 macOS 上,backlog
被设置为 -1,在其他平台上被设置为 511。 -
rcvbuf
=size
-
设置接收缓冲区大小(
SO_RCVBUF
选项)用于监听套接字(1.11.13)。 -
sndbuf
=size
-
设置发送缓冲区大小(
SO_SNDBUF
选项)用于监听套接字(1.11.13)。 -
bind
-
此参数指示为给定的地址:端口对进行单独的
bind()
调用。事实上,如果有几个具有相同端口但不同地址的listen
指令,并且其中一个listen
指令监听了给定端口的所有地址(*:
port
),nginx 将仅绑定到*:
port
。值得注意的是,在这种情况下,将进行getsockname()
系统调用以确定接受连接的地址。如果使用了backlog
、rcvbuf
、sndbuf
、ipv6only
或so_keepalive
参数,则对于给定的address
:port
对,将始终进行单独的bind()
调用。 -
ipv6only
=on
|off
-
此参数通过
IPV6_V6ONLY
套接字选项确定 IPv6 套接字在通配符地址[::]
上是否仅接受 IPv6 连接还是同时接受 IPv6 和 IPv4 连接。此参数默认为打开状态。它只能在启动时设置一次。 -
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
参数进行配置。可以省略一个或两个参数,在这种情况下,将使用相应套接字选项的系统默认设置。例如,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, 993pop3
: 110, 995smtp
: 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 之前,只能配置单个名称服务器。从版本 1.3.1 和 1.2.2 开始,支持使用 IPv6 地址指定名称服务器。
默认情况下,nginx 在解析时将查找 IPv4 和 IPv6 地址。如果不希望查找 IPv4 或 IPv6 地址,则可以指定 ipv4=off
(1.23.1) 或 ipv6=off
参数。
从版本 1.5.8 开始,支持将名称解析为 IPv6 地址。
默认情况下,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 主机名; |
上下文: | mail , server |
设置用于以下用途的服务器名称:
- 初始的 POP3/SMTP 服务器问候;
- 在 SASL CRAM-MD5 认证期间的盐;
- 连接到 SMTP 后端时的
EHLO
命令,如果启用了传递 XCLIENT 命令。
如果未指定该指令,则使用机器的主机名。
语法: | timeout |
---|---|
默认值: |
timeout 60s; |
上下文: | mail , server |
设置在开始代理到后端之前使用的超时时间。