企业邮件服务器完整搭建:Postfix + Dovecot + DKIM/DMARC配置与反垃圾实战
自建企业邮件服务器可以完全掌控邮件数据,摆脱对第三方邮件服务的依赖,并使用自定义域名。本文给出Postfix(SMTP发送)+ Dovecot(IMAP接收)的完整搭建方案,以及SPF/DKIM/DMARC三位一体的反欺诈配置。
一、自建邮件服务器前的评估
| 考量项 | 自建邮件服务器 | 第三方邮件服务 |
|---|---|---|
| 数据隐私 | 完全自主 | 数据在第三方 |
| 维护复杂度 | 高(需要持续维护) | 低(服务商负责) |
| 月费 | VPS费用(已有则无额外费用) | $6~15/用户/月 |
| 发信到达率 | 需要精心配置 | 高(知名服务商IP信誉好) |
| 适合场景 | 技术团队、有合规要求 | 快速启动、非技术团队 |
二、安装Postfix和Dovecot
<code"># 设置系统hostname(必须与邮件域名一致)
hostnamectl set-hostname mail.yourdomain.com
echo "127.0.0.1 mail.yourdomain.com mail" >> /etc/hosts
# 安装必要组件
apt install postfix dovecot-core dovecot-imapd dovecot-lmtpd \
opendkim opendkim-tools spamassassin \
certbot -y
# 安装时Postfix配置选择:
# Internet Site → 输入邮件域名 yourdomain.com三、SSL证书申请
<code"># 申请邮件服务器SSL证书(停止Nginx后再申请) systemctl stop nginx certbot certonly --standalone -d mail.yourdomain.com systemctl start nginx # 设置证书更新后重启邮件服务 cat > /etc/letsencrypt/renewal-hooks/deploy/mail.sh << 'EOF' #!/bin/bash systemctl reload postfix systemctl reload dovecot EOF chmod +x /etc/letsencrypt/renewal-hooks/deploy/mail.sh
四、Postfix(SMTP)配置
<code"># /etc/postfix/main.cf
myhostname = mail.yourdomain.com
mydomain = yourdomain.com
myorigin = $mydomain
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mynetworks = 127.0.0.0/8
# 收件箱存储(Maildir格式)
home_mailbox = Maildir/
mailbox_command =
# SSL/TLS配置(发送)
smtp_tls_security_level = may
smtp_tls_loglevel = 1
smtp_tls_cert_file = /etc/letsencrypt/live/mail.yourdomain.com/fullchain.pem
smtp_tls_key_file = /etc/letsencrypt/live/mail.yourdomain.com/privkey.pem
# SSL/TLS配置(接收)
smtpd_tls_security_level = may
smtpd_use_tls = yes
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_session_cache_database = btree:${data_directory}/smtpd_scache
# 安全限制(防止成为开放中继)
smtpd_relay_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_unauth_destination
# SASL认证(用户登录发信)
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
# DKIM集成
milter_protocol = 6
milter_default_action = accept
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
# 邮件大小限制(25MB)
message_size_limit = 26214400<code"># /etc/postfix/master.cf 开启端口
# 587端口(SUBMISSION,推荐客户端使用)
submission inet n - y - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# 465端口(SMTPS)
smtps inet n - y - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes五、Dovecot(IMAP)配置
<code"># /etc/dovecot/dovecot.conf
protocols = imap lmtp
# 用户认证
auth_mechanisms = plain login
# SSL配置
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
# 邮箱格式
mail_location = maildir:~/Maildir
# SASL认证(给Postfix使用)
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
}
# LMTP(Postfix投递邮件给Dovecot)
service lmtp {
unix_listener /var/spool/postfix/private/dovecot-lmtp {
mode = 0600
user = postfix
group = postfix
}
}
# 日志
log_path = /var/log/dovecot.log六、创建邮箱用户
<code"># 创建系统用户(每个邮箱对应一个系统用户) useradd -m -s /sbin/nologin alice echo "alice:邮箱密码" | chpasswd useradd -m -s /sbin/nologin bob echo "bob:邮箱密码" | chpasswd # 测试发信 echo "Test email" | mail -s "测试邮件" alice@yourdomain.com
七、SPF / DKIM / DMARC 配置
SPF记录(在DNS中添加)
<code"># 类型:TXT # 名称:@(根域名) # 值:v=spf1 mx a ip4:你的VPS公网IP -all # 含义:只允许MX记录和指定IP发送邮件,其他来源拒绝 # 验证SPF dig TXT yourdomain.com | grep spf
DKIM签名
<code"># 生成DKIM密钥 mkdir -p /etc/dkimkeys opendkim-genkey -s mail -d yourdomain.com -D /etc/dkimkeys/ chown opendkim:opendkim /etc/dkimkeys/* # 查看公钥(需要添加到DNS) cat /etc/dkimkeys/mail.txt # 类型:TXT # 名称:mail._domainkey # 值:v=DKIM1; k=rsa; p=MIIBIjAN...(公钥内容) # /etc/opendkim.conf Domain yourdomain.com KeyFile /etc/dkimkeys/mail.private Selector mail Socket inet:8891@localhost UserID opendkim:opendkim UMask 007 Canonicalization relaxed/simple systemctl enable opendkim systemctl start opendkim
DMARC记录
<code"># 类型:TXT # 名称:_dmarc # 值:v=DMARC1; p=quarantine; rua=mailto:dmarc-report@yourdomain.com; pct=100 # # p=none → 只监控,不做任何处理(初始阶段建议) # p=quarantine → 不通过的邮件进入垃圾箱 # p=reject → 严格拒绝所有不通过的邮件
八、DNS完整配置
| 类型 | 名称 | 值 | TTL |
|---|---|---|---|
| MX | @ | mail.yourdomain.com(优先级10) | 3600 |
| A | VPS公网IP | 3600 | |
| TXT | @ | v=spf1 mx a ip4:VPS公网IP -all | 3600 |
| TXT | mail._domainkey | v=DKIM1; k=rsa; p=公钥... | 3600 |
| TXT | _dmarc | v=DMARC1; p=quarantine; ... | 3600 |
| PTR | VPS公网IP(联系IDC设置) | mail.yourdomain.com | - |
九、邮件到达率验证
<code"># 使用在线工具验证邮件配置 # 1. mail-tester.com → 发送测试邮件,查看10分评分 # 2. mxtoolbox.com → 检查DNS记录、黑名单状态 # 3. dkimvalidator.com → 验证DKIM签名 # 检查是否在黑名单 mxtoolbox.com/blacklists.aspx → 输入VPS公网IP
十、总结
自建企业邮件服务器的核心是三个方面:Postfix/Dovecot正确配置(邮件收发)、SPF/DKIM/DMARC三记录完整(确保到达率和防欺诈)、PTR反向DNS设置(避免被标记为垃圾邮件)。IDC.Net香港服务器支持申请PTR记录,可联系客服设置,这是自建邮件服务器不可缺少的步骤。IDC.Net香港VPS提供独立IP,邮件服务器所需的端口25、587、465、993均可正常使用。
版权声明:
作者:后浪云
链接:https://idc.net/help/442891/
文章版权归作者所有,未经允许请勿转载。
THE END
