On this page
Module ngx_mail_core_module
默认情况下未构建此模块,应使用--with-mail
配置参数启用它。
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;
}
}
Directives
Syntax: | listen address:port [ssl] [backlog=number] [rcvbuf=size] [sndbuf=size] [bind] [ipv6only=on|off] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]]; |
Default: | — |
Context: | 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 模式工作。
listen
指令可以具有一些特定于套接字相关系统调用的附加参数。
backlog
=number
- 在
listen()
调用中设置backlog
参数,该参数限制了挂起的连接队列的最大长度(1.9.2)。默认情况下,backlog
在 FreeBSD,DragonFly BSD 和 macOS 上设置为-1,在其他平台上设置为 511.
- 在
rcvbuf
=size
- 设置侦听套接字(1.11.13)的接收缓冲区大小(
SO_RCVBUF
选项)。
- 设置侦听套接字(1.11.13)的接收缓冲区大小(
sndbuf
=size
- 设置侦听套接字(1.11.13)的发送缓冲区大小(
SO_SNDBUF
选项)。
- 设置侦听套接字(1.11.13)的发送缓冲区大小(
bind
- 此参数指示对给定的 address:port 对单独进行
bind()
调用。事实是,如果有多个listen
伪指令具有相同的端口但地址不同,并且listen
伪指令之一在给定端口(*:
port
)的所有地址上侦听,则 nginx 只会bind()
到*:
port
。应当注意,在这种情况下将进行getsockname()
系统调用,以确定接受连接的地址。如果使用ipv6only
或so_keepalive
参数,则对于给定的address
:port
对,将始终进行单独的bind()
调用。
- 此参数指示对给定的 address:port 对单独进行
ipv6only
=on
|off
- 此参数(通过
IPV6_V6ONLY
套接字选项)确定在通配符地址[::]
上侦听的 IPv6 套接字将仅接受 IPv6 连接还是接受 IPv6 和 IPv4 连接。默认情况下,此参数是打开的。启动时只能设置一次。
- 此参数(通过
so_keepalive
=on
|off
|[keepidle
]:[keepintvl
]:[keepcnt
]- 此参数为侦听套接字配置“ TCP keepalive”行为。如果省略此参数,则 os 的设置对套接字有效。如果将其设置为值“
on
”,则将为套接字打开SO_KEEPALIVE
选项。如果将其设置为值“off
”,则套接字的SO_KEEPALIVE
选项将关闭。某些 os 使用TCP_KEEPIDLE
,TCP_KEEPINTVL
和TCP_KEEPCNT
套接字选项支持按套接字设置 TCP keepalive 参数。在此类系统(当前为 Linux 2.4,NetBSD 5 和 FreeBSD 9.0-STABLE)上,可以使用keepidle
,keepintvl
和keepcnt
参数进行配置。可以省略一个或两个参数,在这种情况下,相应套接字选项的系统默认设置将生效。例如,
- 此参数为侦听套接字配置“ TCP keepalive”行为。如果省略此参数,则 os 的设置对套接字有效。如果将其设置为值“
so_keepalive=30m::10
会将闲置超时(TCP_KEEPIDLE
)设置为 30 分钟,将探测间隔(TCP_KEEPINTVL
)保留为系统默认值,并将探测计数(TCP_KEEPCNT
)设置为 10 个探测。
Syntax: | mail { ... } |
Default: | — |
Context: | main |
提供在其中指定邮件服务器指令的配置文件上下文。
Syntax: | protocol imap | pop3 | smtp; |
Default: | — |
Context: | server |
设置代理服务器的协议。支持的协议是IMAP,POP3和SMTP。
如果未设置指令,则可以根据listen指令中指定的知名端口自动检测协议:
imap
: 143, 993pop3
: 110, 995smtp
: 25, 587, 465
可以使用configuration参数--without-mail_imap_module
,--without-mail_pop3_module
和--without-mail_smtp_module
禁用不必要的协议。
Syntax: | resolver address ... [valid=time] [ipv6=on|off] [status_zone=zone]; |
resolver off; |
|
默认值: | resolver off; |
上下文: mail ,server |
配置用于查找客户端主机名的名称服务器,以将其传递给authentication server,并在代理 SMTP 时使用XCLIENT命令。例如:
resolver 127.0.0.1 [::1]:5353;
可以使用可选端口(1.3.1,1.2.2)将地址指定为域名或 IP 地址。如果未指定端口,则使用端口 53.以循环方式查询名称服务器。
Note
在版本 1.1.7 之前,只能配置一个名称服务器。从版本 1.3.1 和 1.2.2 开始,支持使用 IPv6 地址指定名称服务器。
默认情况下,nginx 在解析时将同时查找 IPv4 和 IPv6 地址。如果不需要查找 IPv6 地址,则可以指定ipv6=off
参数。
Note
从版本 1.5.8 开始,支持将名称解析为 IPv6 地址。
默认情况下,nginx 使用响应的 TTL 值缓存答案。可选的valid
参数允许覆盖它:
resolver 127.0.0.1 [::1]:5353 valid=30s;
Note
在 1.1.9 版之前,无法调整缓存时间,nginx 始终将答案缓存 5 分钟。
Note
为防止 DNS 欺骗,建议在适当安全的受信任本地网络中配置 DNS 服务器。
可选的status_zone
参数(1.17.1)启用collection的 DNS 服务器统计信息,用于指定zone
中的请求和响应。该参数可作为commercial subscription的一部分使用。
特殊值off
禁用解析。
Syntax: | resolver_timeout time; |
Default: | resolver_timeout 30s; |
Context: | mail , server |
设置 DNS 操作的超时,例如:
resolver_timeout 5s;
Syntax: | server { ... } |
Default: | — |
Context: | mail |
设置服务器的配置。
Syntax: | server_name name; |
Default: | server_name hostname; |
Context: | mail , server |
设置使用的服务器名称:
在最初的 POP3/SMTP 服务器问候语中;
在 SASL CRAM-MD5 身份验证期间处于盐状态;
如果启用了XCLIENT命令的传递,则在连接到 SMTP 后端时在
EHLO
命令中单击。
如果未指定指令,则使用计算机的主机名。
Syntax: | timeout time; |
Default: | timeout 60s; |
Context: | mail , server |
设置在代理到后端开始之前使用的超时。