使用Nginx作为反向代理来公开邮件服务器可以带来以下好处: - 隐藏后端真实邮件服务器的IP地址 - 提供SSL/TLS终止功能 - 实现负载均衡 - 简化证书管理
mail.yourdomain.com A 记录指向Nginx服务器IP
yourdomain.com MX 记录指向mail.yourdomain.com
编辑Nginx配置文件(通常在/etc/nginx/nginx.conf
或/etc/nginx/conf.d/mail.conf
):
stream {
# IMAPS (SSL加密的IMAP)
server {
listen 993;
proxy_pass backend_mail_server:993;
proxy_ssl on;
proxy_ssl_verify off; # 如果使用自签名证书
}
# POP3S (SSL加密的POP3)
server {
listen 995;
proxy_pass backend_mail_server:995;
proxy_ssl on;
proxy_ssl_verify off;
}
# SMTPS (SSL加密的SMTP)
server {
listen 465;
proxy_pass backend_mail_server:465;
proxy_ssl on;
proxy_ssl_verify off;
}
# SMTP提交端口(587)
server {
listen 587;
proxy_pass backend_mail_server:587;
}
}
http {
server {
listen 80;
server_name mail.yourdomain.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name mail.yourdomain.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://backend_webmail_server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
确保后端邮件服务器: 1. 配置为接受来自Nginx服务器的连接 2. 更新SPF记录包含Nginx服务器IP 3. 配置DKIM/DMARC记录
开放必要的端口:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 25/tcp
sudo ufw allow 587/tcp
sudo ufw allow 465/tcp
sudo ufw allow 993/tcp
sudo ufw allow 995/tcp
测试Nginx配置:
sudo nginx -t
重启Nginx:
sudo systemctl restart nginx
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256...';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
upstream mail_servers {
server mail1.example.com:993;
server mail2.example.com:993;
}
server {
listen 993;
proxy_pass mail_servers;
proxy_ssl on;
}
通过以上配置,您可以安全地将邮件服务器通过Nginx反向代理公开到互联网,同时保持后端服务器的安全性和灵活性。