香港VPS搭建企业邮件服务器:Postfix + Dovecot + DKIM/SPF/DMARC防垃圾邮件配置
企业自建邮件服务器能完全掌控邮件数据,避免第三方邮件服务的隐私风险,且年成本远低于企业邮箱订阅费。香港 VPS 国际出口稳定,是搭建面向全球收件方的企业邮件服务器的理想平台。本文提供从零到完整邮件系统的详细搭建流程。
前置要求:香港 VPS(美国 VPS 默认开放邮件端口)开放 25/465/587/993 端口需提前通过工单申请;IDC.Net 香港 VPS 默认封闭 SMTP 端口以防滥用,请在购买后提交工单说明企业邮件用途申请开放。
一、基础环境准备
# 系统:Ubuntu 22.04 LTS
# 域名:mail.yourdomain.com
# 安装依赖包
apt update && apt install -y \
postfix postfix-mysql \
dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd \
opendkim opendkim-tools \
spamassassin spamc \
certbot python3-certbot-nginx \
mailutils# 设置主机名(必须与 PTR 记录一致)
hostnamectl set-hostname mail.yourdomain.com
echo "127.0.0.1 mail.yourdomain.com mail" >> /etc/hosts二、申请 SSL 证书
<code">certbot certonly --standalone -d mail.yourdomain.com \ --agree-tos --email admin@yourdomain.com # 证书路径 # /etc/letsencrypt/live/mail.yourdomain.com/fullchain.pem # /etc/letsencrypt/live/mail.yourdomain.com/privkey.pem
三、Postfix 配置(发件服务器)
<code"># /etc/postfix/main.cf
# 基础设置
myhostname = mail.yourdomain.com
mydomain = yourdomain.com
myorigin = $mydomain
inet_interfaces = all
inet_protocols = ipv4
# 接收邮件的域名
mydestination = $myhostname, localhost.$mydomain, localhost
virtual_mailbox_domains = yourdomain.com
virtual_mailbox_base = /var/mail/vhosts
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
virtual_minimum_uid = 100
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
# TLS 配置(强制加密)
smtpd_tls_cert_file = /etc/letsencrypt/live/mail.yourdomain.com/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mail.yourdomain.com/privkey.pem
smtpd_tls_security_level = may
smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtp_tls_security_level = may
smtp_tls_loglevel = 1
# SASL 认证(允许客户端通过 587 端口发信)
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
# 反垃圾邮件基础限制
smtpd_recipient_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
reject_unauth_destination,
reject_invalid_hostname,
reject_non_fqdn_hostname,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unknown_recipient_domain
# 邮件大小限制(50MB)
message_size_limit = 52428800
# DKIM 签名(通过 Milter)
milter_default_action = accept
milter_protocol = 6
smtpd_milters = inet:localhost:12301
non_smtpd_milters = $smtpd_milters<code"># /etc/postfix/master.cf - 开放 587 提交端口 submission inet n - y - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_sasl_type=dovecot -o smtpd_sasl_path=private/auth -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
四、Dovecot 配置(收件/认证服务器)
<code"># /etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = yes
auth_mechanisms = plain login
# /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:/var/mail/vhosts/%d/%n
mail_privileged_group = mail
# /etc/dovecot/conf.d/10-ssl.conf
ssl = required
ssl_cert = </etc/letsencrypt/live/mail.yourdomain.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.yourdomain.com/privkey.pem
ssl_min_protocol = TLSv1.2
# /etc/dovecot/conf.d/10-master.conf
# 为 Postfix 提供 SASL 认证 socket
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
}五、创建邮箱用户
<code"># 创建邮件存储目录和虚拟用户
groupadd -g 5000 vmail
useradd -g vmail -u 5000 vmail -d /var/mail/vhosts -s /bin/false
mkdir -p /var/mail/vhosts/yourdomain.com
chown -R vmail:vmail /var/mail/vhosts
# 添加邮箱账号到 vmailbox
echo "admin@yourdomain.com yourdomain.com/admin/" >> /etc/postfix/vmailbox
echo "info@yourdomain.com yourdomain.com/info/" >> /etc/postfix/vmailbox
postmap /etc/postfix/vmailbox
# 设置密码(Dovecot 使用的密码文件)
cat > /etc/dovecot/users << 'EOF'
admin@yourdomain.com:{PLAIN}StrongPassword123
info@yourdomain.com:{PLAIN}AnotherPassword456
EOF
chmod 600 /etc/dovecot/users六、DKIM 签名配置(防伪造发件人)
<code"># 生成 DKIM 密钥对 mkdir -p /etc/opendkim/keys/yourdomain.com opendkim-genkey -s mail -d yourdomain.com \ -D /etc/opendkim/keys/yourdomain.com/ chown -R opendkim:opendkim /etc/opendkim/ # 查看公钥(需要添加到 DNS TXT 记录) cat /etc/opendkim/keys/yourdomain.com/mail.txt
<code"># /etc/opendkim.conf Domain yourdomain.com KeyFile /etc/opendkim/keys/yourdomain.com/mail.private Selector mail Socket inet:12301@localhost RequireSafeKeys false
七、DNS 记录配置(关键步骤)
在域名 DNS 控制面板添加以下记录:
| 类型 | 主机名 | 值 | 作用 |
|---|---|---|---|
| A | 你的 VPS IP | 邮件服务器地址 | |
| MX | @ | mail.yourdomain.com(优先级10) | 指定邮件服务器 |
| TXT | @ | v=spf1 mx a ip4:你的IP ~all | SPF:防止伪造发件人 |
| TXT | mail._domainkey | (从 mail.txt 复制) | DKIM:邮件签名验证 |
| TXT | _dmarc | v=DMARC1; p=quarantine; rua=mailto:dmarc@yourdomain.com | DMARC:SPF/DKIM综合策略 |
PTR 反向记录:联系 IDC.Net 工单,申请将 VPS IP 的 PTR 记录设为
mail.yourdomain.com。PTR 记录不正确会导致大量邮件被 Gmail/Outlook 拒收。
八、启动所有服务
<code">systemctl enable --now postfix dovecot opendkim # 测试发件 echo "测试邮件正文" | mail -s "测试主题" test@gmail.com # 检查邮件日志 tail -f /var/log/mail.log
九、客户端配置参数
| 协议 | 服务器 | 端口 | 加密 |
|---|---|---|---|
| SMTP(发件) | mail.yourdomain.com | 587 | STARTTLS |
| IMAP(收件) | mail.yourdomain.com | 993 | SSL/TLS |
| POP3(收件) | mail.yourdomain.com | 995 | SSL/TLS |
十、总结
完成以上配置后,你拥有了一个支持 SMTP/IMAP、强制 TLS 加密、带 DKIM/SPF/DMARC 三重验证的企业邮件服务器。正确配置的自建邮件服务器投递率并不低于第三方服务,且数据完全自主可控。IDC.Net 美国 VPS($199/月起)默认开放所有端口,最适合邮件服务器部署场景,详见 idc.net/us。