编译nginx时添加--with-mail模块可启用pop3/imap/smtp邮件代理功能,但需依赖openssl、pcre和zlib开发包,并配合--with-mail_ssl_module启用tls;配置须在mail上下文中定义,且auth_http需指向外部认证服务。

编译 Nginx 时加入 --with-mail 模块,是为了启用其内置的邮件代理功能(POP3/IMAP/SMTP),但需注意:该模块默认不启用,且不提供邮件存储或用户认证服务,仅作反向代理或负载均衡使用。
确认依赖和前置条件
Nginx 邮件模块依赖 OpenSSL 和 PCRE(用于正则匹配,如 AUTH 命令解析),部分系统还需 zlib(用于压缩支持)。编译前确保已安装:
- OpenSSL 开发包(如
libssl-dev(Debian/Ubuntu)或openssl-devel(CentOS/RHEL)) - PCRE 开发库(
libpcre3-dev或pcre-devel) - zlib 开发包(
zlib1g-dev或zlib-devel)
配置编译参数并启用邮件模块
在 ./configure 步骤中显式添加 --with-mail。若需 TLS 支持(强烈建议),同时加上 --with-mail_ssl_module:
./configure \ --prefix=/usr/local/nginx \ --with-mail \ --with-mail_ssl_module \ --with-http_ssl_module \ --with-pcre \ --with-zlib
注意:--with-mail_ssl_module 必须与 --with-mail 同时存在,否则 SSL 功能在 mail 上不可用;它和 --with-http_ssl_module 是两个独立模块。
编译安装后配置 mail 块
源码编译完成后,Nginx 主配置文件(nginx.conf)需新增 mail 上下文,不能放在 http 块内:
mail {
auth_http 127.0.0.1:8080/auth-serv;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1.2 TLSv1.3;
server {
listen 110;
protocol pop3;
ssl on;
}
server {
listen 143;
protocol imap;
ssl on;
}
server {
listen 25;
protocol smtp;
ssl on;
}
}
其中 auth_http 指向外部认证服务(必须自行实现),Nginx 本身不管理用户账号或密码。
验证模块是否生效
编译安装后运行 nginx -V 2>&1 | grep -o with-mail,输出含 with-mail 即表示模块已编入。再执行 nginx -t 检查配置语法——若 mail 块配置有误(比如放错位置),会直接报错,不会静默忽略。










