模块 ngx_mail_core_module
| Example Configuration Directives listen max_errors protocol resolver resolver_timeout server server_name timeout |
该模块不是默认构建的,需要通过--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 |
设置服务器将在其上接受请求的套接字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 模式下工作。
参数proxy_protocol(1.19.8) 允许指定此端口上接受的所有连接都应使用
PROXY 协议。获得的信息被传递到
身份验证服务器
并可用于
更改客户端地址。
该listen指令可以有几个特定于套接字相关系统调用的附加参数。
-
backlog=number backlog在调用中 设置listen()限制挂起连接队列最大长度的参数 (1.9.2)。默认情况下,backlog在 FreeBSD、DragonFly BSD 和 macOS 上设置为 -1,在其他平台上设置为 511。-
rcvbuf=size SO_RCVBUF设置侦听套接字 (1.11.13) 的 接收缓冲区大小(选项)。-
sndbuf=size SO_SNDBUF设置侦听套接字 (1.11.13) 的 发送缓冲区大小(选项)。-
bind -
此参数指示对
bind()给定的地址:端口对进行单独的调用。事实是,如果有多个listen指令具有相同的端口但不同的地址,并且其中一个listen指令侦听给定端口 (*:port) 的所有地址,则 nginx 将bind()仅侦听*:port. 应该注意的是,getsockname()在这种情况下将进行系统调用来确定接受连接的地址。如果使用backlog、rcvbuf、sndbuf、ipv6only或参数,则对于给定的:对,将始终进行 单独的调用。so_keepaliveaddressportbind() -
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 keepalive 参数TCP_KEEPCNT。在此类系统(当前为 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, 993 -
pop3:110、995 -
smtp: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) 允许
收集
指定 中请求和响应的 DNS 服务器统计信息zone。该参数作为我们商业订阅的一部分提供
。
特殊值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 身份验证期间的盐中;
- 如果启用了XCLIENT
EHLO命令的传递,则在连接到 SMTP 后端时的命令 中。
如果未指定该指令,则使用计算机的主机名。
| 句法: |
timeout |
|---|---|
| 默认: |
timeout 60s; |
| 语境: |
mail,server |
设置代理到后端开始之前使用的超时。
