1.
准备工作与选购VPS
选择台湾节点的VPS(例如GCP、AWS台湾区域或本地服务商),推荐Ubuntu 20.04/22.04。准备一个域名(example.com),并确保能管理DNS与申请反向DNS(PTR)。拿到SSH登录信息后先登录:ssh root@your_vps_ip。
2.
系统更新与基础软件安装
更新系统:apt update && apt upgrade -y。安装常用工具:apt install -y vim curl wget git ufw mailutils net-tools telnet.
3.
设置主机名与DNS基础记录
设置主机名:hostnamectl set-hostname mail.example.com。DNS控制台添加:A记录 mail -> VPS公网IP;MX记录 @ -> mail.example.com 优先级10。稍后添加SPF/DKIM/DMARC/TXT记录。
4.
配置防火墙与开放端口
使用ufw:ufw allow OpenSSH; ufw allow 25/tcp; ufw allow 587/tcp; ufw allow 143/tcp; ufw allow 993/tcp; ufw enable。若只提供SMTP提交可只开放587/465。确保云服务商安全组也开放相应端口。
5.
安装Postfix作为SMTP服务器
安装:apt install -y postfix. 在安装时选择“Internet Site”,设置邮件域为 example.com。安装后编辑 /etc/postfix/main.cf,关键设置示例:myhostname = mail.example.com;mydomain = example.com;myorigin = /etc/mailname;inet_interfaces = all;mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain;mynetworks = 127.0.0.0/8。启用TLS与SASL设置见后续。
6.
安装Dovecot接收与SASL认证
安装:apt install -y dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd。配置 /etc/dovecot/dovecot.conf 与 /etc/dovecot/conf.d/10-mail.conf:mail_location = maildir:~/Maildir。启用 auth socket:在 /etc/dovecot/conf.d/10-master.conf 添加 unix_listener /var/spool/postfix/private/auth { mode = 0660 user = postfix group = postfix }。在Postfix main.cf 中添加:smtpd_sasl_type = dovecot;smtpd_sasl_path = private/auth;smtpd_sasl_auth_enable = yes。
7.
启用TLS证书(Let's Encrypt)
安装certbot:apt install -y certbot。停止占用80/443的服务或使用 webroot:certbot certonly --standalone -d mail.example.com。证书路径通常在 /etc/letsencrypt/live/mail.example.com/。在Postfix中设置:smtpd_tls_cert_file=/etc/letsencrypt/live/mail.example.com/fullchain.pem;smtpd_tls_key_file=/etc/letsencrypt/live/mail.example.com/privkey.pem;smtpd_use_tls = yes。Dovecot同样指向相应cert与key。
8.
配置OpenDKIM生成DKIM密钥并与Postfix整合
安装:apt install -y opendkim opendkim-tools。生成密钥:mkdir -p /etc/opendkim/keys/example.com && opendkim-genkey -D /etc/opendkim/keys/example.com/ -d example.com -s default。将 private key 移到 /etc/opendkim/keys/example.com/default.private。配置 /etc/opendkim.conf 和 /etc/default/opendkim,设置域与Selector(default),在Postfix main.cf 添加:milter_default_action = accept;milter_protocol = 2;smtpd_milters = inet:127.0.0.1:8891;non_smtpd_milters = inet:127.0.0.1:8891。然后在DNS添加TXT记录:default._domainkey.example.com 的值为生成的 public key。
9.
添加SPF与DMARC策略
SPF记录(TXT @):"v=spf1 mx a ip4:你的VPS公网IP -all"。DMARC记录(TXT _dmarc):"v=DMARC1; p=quarantine; rua=mailto:postmaster@example.com; ruf=mailto:postmaster@example.com; pct=100"。这个配置能减少被标记为垃圾邮件的概率。
10.
设置PTR(反向DNS)与发件信誉
PTR必须指向 mail.example.com,通常需要在VPS面板或联系供应商设置反向DNS。检查并通过 MXToolbox 等服务检测是否在黑名单。若被列入黑名单需申请解封。
11.
测试发送、接收与排查日志
重启服务:systemctl restart postfix dovecot opendkim。测试SMTP连接:openssl s_client -starttls smtp -crlf -connect mail.example.com:587。用 mail 命令或第三方邮箱发送邮件并检查 /var/log/mail.log 与 /var/log/mail.err。使用 online tools 检查 SPF/DKIM/DMARC 是否生效。
12.
安全性与运维注意事项
限制发信率、防止开放中继:在Postfix设置 smtpd_recipient_restrictions、smtpd_client_restrictions。定期更新系统与密钥,监控 /var/log/mail.log 并设置日志轮转。为防止账户被滥用可启用 fail2ban 针对 postfix/dovecot 的规则。
13.
常见故障与解决思路
若邮件被拒绝:检查 rDNS、SPF、DKIM 签名是否通过;查看 Postfix 报错如 "550 5.7.1";若无法认证,检查 SASL socket 权限与 dovecot 登录日志。端口被阻断时联系VPS提供商解封25端口或使用外发转发服务。
14.
问:如何确认我的DKIM签名是否生效?
答:发送一封测试邮件到 Gmail 或 use 一个 DKIM 验证工具,查看邮件头是否包含 "DKIM-Signature" 且在 Gmail 的 "原始邮件" 中显示 "Signed-by: example.com"。也可在命令行用 opendkim-testmsg 校验。
15.
问:为什么收件方拒收或进入垃圾箱,如何改进送达率?
答:主要检查 rDNS、SPF、DKIM、DMARC 是否正确,IP是否在黑名单,以及邮件内容是否像垃圾邮件。遵循最佳实践:少量分批发送、合理退订机制、维护良好发送历史。
16.
问:如果VPS被封禁25端口,有替代方案吗?
答:可联系VPS商解封或使用外部SMTP中继(如 SendGrid、Mailgun)通过587/465提交,或使用第三方托管邮件服务结合域名的MX记录迁移。
来源:从零开始搭建台湾vps云服务器邮件系统的完整操作指南