香港VPS搭建企业邮件服务器:Postfix + Dovecot + DKIM/SPF/DMARC防垃圾邮件配置

香港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 控制面板添加以下记录:

类型主机名作用
Amail你的 VPS IP邮件服务器地址
MX@mail.yourdomain.com(优先级10)指定邮件服务器
TXT@v=spf1 mx a ip4:你的IP ~allSPF:防止伪造发件人
TXTmail._domainkey(从 mail.txt 复制)DKIM:邮件签名验证
TXT_dmarcv=DMARC1; p=quarantine; rua=mailto:dmarc@yourdomain.comDMARC: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.com587STARTTLS
IMAP(收件)mail.yourdomain.com993SSL/TLS
POP3(收件)mail.yourdomain.com995SSL/TLS

十、总结

完成以上配置后,你拥有了一个支持 SMTP/IMAP、强制 TLS 加密、带 DKIM/SPF/DMARC 三重验证的企业邮件服务器。正确配置的自建邮件服务器投递率并不低于第三方服务,且数据完全自主可控。IDC.Net 美国 VPS($199/月起)默认开放所有端口,最适合邮件服务器部署场景,详见 idc.net/us



Telegram