在CentOS系统中搭建邮件服务器需要综合考虑多个组件的配置,包括MTA(邮件传输代理)、MDA(邮件分发代理)、DNS记录、安全认证等,本文将以Postfix作为MTA、Dovecot作为MDA,结合SSL证书和SPF/DKIM/DMARC记录,详细讲解完整搭建流程。

环境准备与基础安装
首先确保系统为最小化安装的CentOS 7/8,并更新系统至最新状态:
yum update -y yum install -y wget curl vim
关闭SELinux和防火墙(生产环境建议配置规则而非直接关闭):
setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config systemctl stop firewalld systemctl disable firewalld
为邮件服务器设置静态主机名,
hostnamectl set-hostname mail.example.com echo "192.168.1.100 mail.example.com" >> /etc/hosts
安装与配置Postfix(MTA)
Postfix负责邮件的传输与中继,是邮件服务器的核心组件。

安装Postfix
yum install -y postfix
配置Postfix主文件
编辑/etc/postfix/main.cf,关键参数如下:
myhostname = mail.example.com # 邮件服务器主机名 mydomain = example.com # 域名 myorigin = $mydomain # 邮件发件人域名 inet_interfaces = all # 监听所有网络接口 mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain # 允许接收的域名 mynetworks = 127.0.0.0/8, 192.168.1.0/24 # 允许中继的网络 home_mailbox = Maildir/ # 邮件存储格式为Maildir
启动并设置开机自启
systemctl enable postfix systemctl start postfix
安装与配置Dovecot(MDA)
Dovecot负责邮件的接收与存储,支持IMAP/POP3协议。
安装Dovecot
yum install -y dovecot
配置Dovecot核心文件
编辑/etc/dovecot/dovecot.conf,启用协议:
protocols = imap pop3 lmtp
配置邮件存储格式
编辑/etc/dovecot/conf.d/10-mail.conf,确保与Postfix的home_mailbox一致:

mail_location = maildir:~/Maildir
配置认证机制
编辑/etc/dovecot/conf.d/10-auth.conf,启用系统用户认证:
disable_plaintext_auth = yes # 禁止明文认证 auth_mechanisms = plain login
配置系统用户认证
编辑/etc/dovecot/conf.d/10-master.conf,添加Postfix认证接口:
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
}
启动Dovecot并设置自启
systemctl enable dovecot systemctl start dovecot
配置SSL证书(加密传输)
使用Let's Encrypt免费证书(需提前解析域名):
yum install -y certbot certbot certonly --standalone -d mail.example.com
将证书文件复制到Dovecot目录并配置权限:
cp /etc/letsencrypt/live/mail.example.com/fullchain.pem /etc/dovecot/ cp /etc/letsencrypt/live/mail.example.com/privkey.pem /etc/dovecot/ chmod 600 /etc/dovecot/*.pem
配置Dovecot SSL
编辑/etc/dovecot/conf.d/10-ssl.conf:
ssl = required ssl_cert = </etc/dovecot/fullchain.pem ssl_key = </etc/dovecot/privkey.pem
添加系统用户与测试邮件
创建系统用户作为邮箱账户:
useradd -m zhangsan passwd zhangsan # 设置密码
使用mailx测试发送邮件:
echo "Test mail body" | mail -s "Test Subject" zhangsan@example.com
查看邮件日志确认是否成功:
tail -f /var/log/maillog
配置DNS记录
邮件服务器需正确配置DNS记录,确保邮件可正常收发,以下是常见记录示例:
| 记录类型 | 记录值 | 说明 |
|---|---|---|
| A | 168.1.100 | mail.example.com的IP地址 |
| MX | 10 mail.example.com | 邮件交换记录,优先级10 |
| TXT | v=spf1 mx ~all | SPF记录,允许本域MX服务器发送邮件 |
| TXT | v=DKIM1; k=rsa; p=公钥内容 | DKIM记录(需生成密钥对) |
| TXT | v=DMARC1; p=quarantine | DMARC记录,策略为隔离 |
生成DKIM密钥
yum install -y opendkim opendkim-genkey -b 2048 -d example.com -s mail chown opendkim:opendkim /etc/opendkim/keys/example.com/mail.*
将生成的公钥(mail.txt内容)添加到DNS的TXT记录中。
常见问题排查
- 邮件发送失败:检查
/var/log/maillog中的错误信息,常见原因包括DNS解析错误、防火墙拦截或Postfix配置错误。 - 邮件被误判为垃圾邮件:确保SPF、DKIM、DMARC记录正确配置,并测试邮件头中的认证结果。
相关问答FAQs
Q1: 如何查看邮件服务器的运行状态?
A1: 可通过以下命令检查:
- 查看Postfix状态:
systemctl status postfix - 查看Dovecot状态:
systemctl status dovecot - 查看邮件日志:
tail -f /var/log/maillog - 测试SMTP连接:
telnet mail.example.com 25
Q2: 邮件服务器如何防止被 relay(滥用中继)?
A2: 防止邮件中继需配置以下措施:
- 在Postfix的
main.cf中设置mynetworks,仅允许信任的网络IP(如内网段); - 启用
smtpd_relay_restrictions参数,限制非认证用户的中继权限:smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
- 定期检查
/var/log/maillog中的异常发送行为,及时封禁恶意IP。
