模块 ngx_mail_core_module

示例:配置
Directivesmax_errors

服务器

resolver_timeout服务器
侦听
邮件
server_name

超时

这个模块不是默认构建的,它应该是 enabled with 配置参数。--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;
    }
}

Directives

语法: listen address:port [ssl] [proxy_protocol] [backlog=number] [rcvbuf=size] [sndbuf=size] [bind] [ipv6only=on|off] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];
默认值:
上下文: server

设置 socket 的 和 服务器将接受请求的请求。 可以只指定端口。 地址也可以是主机名,例如:addressport

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;

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

该参数允许指定所有 此端口接受的连接应在 SSL 模式下工作。ssl

参数 (1.19.8) 允许指定此端口上接受的所有连接都应使用 PROXY 协议。 获取的信息将传递给认证服务器,并可用于更改客户端地址proxy_protocol

Directives 可以具有几个特定于 socket 相关系统调用的附加参数。listen

backlog=number
在调用中设置限制 待处理连接队列的最大长度 (1.9.2)。 默认情况下,在 FreeBSD、DragonFly BSD 和 macOS 上设置为 -1, 以及其他平台上的 511。backloglisten()backlog
rcvbuf=size
设置接收缓冲区大小 (选项)用于侦听套接字 (1.11.13)。SO_RCVBUF
sndbuf=size
设置发送缓冲区大小 (选项)用于侦听套接字 (1.11.13)。SO_SNDBUF
bind
此参数指示对给定的 address:port 对进行单独调用。 事实是,如果有多个带有 相同的端口但不同的地址,并且其中一个Directives侦听所有地址 对于给定的端口 (),nginx 将仅对 . 应该注意的是,系统调用将是 用于确定接受连接的地址。 如果 、 、 、 、 、 或 parameters 则用于给定的 : 对 将始终进行单独的调用。bind()listenlisten*:portbind()*:portgetsockname()backlogrcvbufsndbufipv6onlyso_keepaliveaddressportbind()
ipv6only=on|off
此参数确定 (通过 socket 选项) 侦听通配符地址的 IPv6 套接字是只接受 IPv6 连接,还是同时接受 IPv6 和 IPv4 连接。 默认情况下,此参数处于打开状态。 它只能在启动时设置一次。IPV6_V6ONLY[::]
so_keepalive=on||[]:[]:[offkeepidlekeepintvlkeepcnt]
此参数配置 “TCP keepalive” 行为 用于侦听套接字。 如果省略此参数,则作系统的设置将为 对 socket 有效。 如果它设置为值 “”,则为套接字打开该选项。 如果它设置为值 “”,则关闭套接字的选项。 某些作系统支持在 使用 、 和 socket 选项的 per-socket 基础。 在此类系统上(目前为 Linux 2.4+、NetBSD 5+ 和 FreeBSD 9.0-STABLE),它们可以被配置 使用 、 和 参数。 可以省略一个或两个参数,在这种情况下,系统默认设置 的相应 socket 选项将生效。 例如onSO_KEEPALIVEoffSO_KEEPALIVETCP_KEEPIDLETCP_KEEPINTVLTCP_KEEPCNTkeepidlekeepintvlkeepcnt
so_keepalive=30m::10
将空闲超时 () 设置为 30 分钟, 将探测间隔 () 保留为其系统默认值, 并将 Probes count () 设置为 10 个探针。TCP_KEEPIDLETCP_KEEPINTVLTCP_KEEPCNT

语法: mail { ... }
默认值:
上下文: main

提供配置文件上下文,其中邮件服务器Directives 被指定。

语法: max_errors number;
默认值:
max_errors 5;
上下文: mail,server

该Directives出现在版本 1.21.0 中。

设置协议错误数,超过此数后,连接将关闭。

语法: protocol imap | pop3 | smtp;
默认值:
上下文: server

设置代理服务器的协议。 支持的协议包括 IMAP、POP3SMTP

如果未设置Directives,则可以自动检测协议 基于 listen Directives中指定的已知端口:

  • 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] [ipv4=on|off] [ipv6=on|off] [status_zone=zone];
resolver off;
默认值:
resolver off;
上下文: mail,server

配置用于查找客户端主机名的名称服务器 要将其传递给身份验证服务器,请执行以下作: 以及代理 SMTP 时在 XCLIENT 命令中。 例如:

resolver 127.0.0.1 [::1]:5353;

地址可以指定为域名或 IP 地址, 具有可选端口(1.3.1、1.2.2)。 如果未指定 port,则使用端口 53。 名称服务器以循环方式查询。

在版本 1.1.7 之前,只能配置单个名称服务器。 支持使用 IPv6 地址指定名称服务器 从版本 1.3.1 和 1.2.2 开始。

默认情况下,nginx 将在解析时查找 IPv4 和 IPv6 地址。 如果不需要查找 IPv4 或 IPv6 地址, (1.23.1) 或 可以指定该参数。ipv4=offipv6=off

支持将名称解析为 IPv6 地址 从 1.5.8 版本开始。

默认情况下,nginx 使用响应的 TTL 值缓存答案。 可选参数允许覆盖它:valid

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

在 1.1.9 版本之前,无法调整缓存时间。 nginx 始终缓存 5 分钟的答案。

为了防止 DNS 欺骗,建议 在适当保护的可信本地网络中配置 DNS 服务器。

可选参数 (1.17.1) 启用请求和响应的 DNS 服务器统计信息的收集 在指定的 . 该参数作为我们商业订阅的一部分提供。status_zonezone

特殊值禁用解析。off

语法: resolver_timeout time;
默认值:
resolver_timeout 30s;
上下文: mail,server

设置 DNS作的超时,例如:

resolver_timeout 5s;

语法: server { ... }
默认值:
上下文: mail

设置 服务器的配置。

语法: server_name name;
默认值:
server_name hostname;
上下文: mail,server

设置使用的服务器名称:

  • 在初始 POP3/SMTP 服务器问候语中;
  • 在 SASL CRAM-MD5 身份验证期间的盐中;
  • 在连接到 SMTP 后端时的命令中, 如果传递 XCLIENT 命令 已启用。EHLO

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

语法: timeout time;
默认值:
timeout 60s;
上下文: mail,server

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