邮件模块#
核心邮件模块实现了邮件代理服务器的基本功能:包括支持 SMTP、IMAP 和 POP3 协议、配置服务器块、邮件请求路由、用户认证以及 SSL/TLS 支持以保护邮件连接。
本节中的其他模块扩展了此功能,使您能够灵活地配置和优化邮件服务器以满足各种场景和需求。
当从 源代码构建 时,默认情况下不会构建此模块;它应该通过 默认 — server 设置服务器接受请求的套接字的 address 和 port。可以仅指定端口。地址也可以是主机名,例如: IPv6 地址用方括号指定: UNIX 域套接字使用 重要 不同的服务器必须在不同的 address:port 对上监听。 允许指定在此端口上接受的所有连接应处于 SSL 模式。 listen 指令可以具有几个与套接字相关的系统调用的附加参数。 设置 设置监听套接字的接收缓冲区大小( 设置监听套接字的发送缓冲区大小( 此参数指示为给定的 address:port 对进行单独的 此参数通过 IPV6_V6ONLY 套接字选项确定在通配符地址 [::] 上监听的 IPv6 套接字是否仅接受 IPv6 连接,还是同时接受 IPv6 和 IPv4 连接。默认情况下启用此参数。它只能在启动时设置一次。 如果省略此参数,则操作系统的设置将对套接字生效。 为套接字启用 SO_KEEPALIVE 选项。 为套接字禁用 SO_KEEPALIVE 选项。 某些操作系统支持使用 例如, 将把空闲超时(TCP_KEEPIDLE)设置为 30 分钟,保持探测间隔(TCP_KEEPINTVL)为系统默认,并将探测计数(TCP_KEEPCNT)设置为 10 次探测。 提供邮件服务器指令指定的配置文件上下文。 Added in version 1.7.0. 设置在身份验证期间发出的最大命令数,以增强对 DoS 攻击的保护。 设置发生协议错误后关闭连接的次数。 设置代理服务器的协议。支持的协议有 IMAP、POP3 和 SMTP。 如果未设置该指令,则可以根据 从源代码构建时,可以使用 默认 mail, server 配置用于查找客户端主机名的名称服务器,以将其传递给 认证服务器,以及在代理 SMTP 时的 XCLIENT 命令。例如: 地址可以指定为域名或 IP 地址,带有可选的端口。如果未指定端口,则使用端口 53。名称服务器以轮询方式查询。 默认情况下,Angie 使用响应的 TTL 值缓存答案。可选的 valid 参数允许覆盖它: 可选 valid 参数允许覆盖缓存条目的有效性 默认情况下,Angie 在解析时将查找 IPv4 和 IPv6 地址。 禁用 IPv4 地址的查找。 禁用 IPv6 地址的查找。 可选 参数,启用指定区域的统计收集。 小技巧 为防止 DNS 欺骗,建议在适当安全的受信任本地网络中配置 DNS 服务器。 提示 当在 Docker 中运行时,使用其内部 DNS 服务器地址,例如 设置 DNS 操作的超时时间,例如: 设置服务器的配置。 设置服务器名称的使用: 在初始 POP3/SMTP 服务器问候中; 在 SASL CRAM-MD5 身份验证期间的盐值中; 在连接到 SMTP 后端时的 EHLO 命令中,如果启用了 XCLIENT 命令的传递。 如果未指定该指令,则使用机器的 hostname。 设置在开始代理到后端之前使用的超时时间。--with-mail
构建选项 启用。在来自 我们仓库 的软件包和镜像中,该模块包含在构建中。配置示例#
worker_processes auto;
error_log /var/log/angie/error.log info;
events {
worker_connections 1024;
}
mail {
server_name mail.example.com;
auth_http localhost:9000/cgi-bin/auth.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#
listen
address[:port] [ssl
] [proxy_protocol
] [backlog=
number] [rcvbuf=
size] [sndbuf=
size] [bind
] [ipv6only=
on
| off
] [reuseport
] [so_keepalive=
on|off|[keepidle]:[keepintvl]:[keepcnt]];listen 127.0.0.1:110;
listen *:110;
listen 110; # same as *:110
listen localhost:110;
listen [::1]:110;
listen [::]:110;
unix:
前缀指定:listen unix:/var/run/angie.sock;
ssl
proxy_protocol
backlog=
numberlisten()
调用中的 backlog 参数,限制待处理连接的最大队列长度。默认情况下,FreeBSD、DragonFly BSD 和 macOS 上的 backlog
设置为 -1
,而其他平台上设置为 511。rcvbuf=
sizeSO_RCVBUF
选项)。sndbuf=
sizeSO_SNDBUF
选项)。bind
bind()
调用。事实是,如果有多个 listen 指令具有相同的 port 但不同的地址,而其中一条 listen
指令在给定端口上监听所有地址 (*:port
),Angie 将仅 bind()
到 *:port。需要注意的是,在这种情况下,将调用 getsockname()
系统调用以确定接受连接的地址。如果使用了 backlog
、rcvbuf
、sndbuf
、ipv6only
、reuseport
或 so_keepalive
参数,则对于给定的 address:port 对将始终进行单独的 bind()
调用。ipv6only=on
| off
so_keepalive=on
| off
| [keepidle]:[keepintvl]:[keepcnt]
配置监听套接字的 "TCP keepalive" 行为。''
on
off
TCP_KEEPIDLE
、TCP_KEEPINTVL
和 TCP_KEEPCNT
套接字选项在每个套接字上设置 TCP keepalive 参数。在此类系统上(目前,Linux 2.4+、NetBSD 5+ 和 FreeBSD 9.0-STABLE),可以使用 keepidle、keepintvl 和 keepcnt 参数进行配置。可以省略一个或两个参数,此时相应套接字选项的系统默认设置将生效。so_keepalive=30m::10
mail#
max_commands#
max_errors#
protocol#
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
address ... [valid=
time] [ipv4=
on
| off
] [ipv6=
on
| off
] [status_zone=
zone];resolver off;
resolver 127.0.0.53 [::1]:5353;
valid
resolver 127.0.0.53 [::1]:5353 valid=30s;
ipv4=off
ipv6=off
status_zone
127.0.0.11
。resolver_timeout#
resolver_timeout 5s;
server#
server_name#
timeout#