CentOS 7 搭建 Postfix + Dovecot 邮件系统并配置 SMTP、POP3、IMAP 与 TLS

📅 2026/7/21 14:44:25
CentOS 7 搭建 Postfix + Dovecot 邮件系统并配置 SMTP、POP3、IMAP 与 TLS
CentOS 7 搭建 Postfix Dovecot 邮件系统并配置 SMTP、POP3、IMAP 与 TLS1. 服务介绍Postfix 是邮件传输代理MTA负责通过 SMTP 接收、投递和转发邮件Dovecot 提供 POP3、IMAP 和用户认证让客户端读取邮箱。两者组合后可搭建基础邮件系统并通过 TLS 保护客户端认证和邮件传输。本实验配置域名解析、本地域账号、Maildir 邮箱、SMTP AUTH、Submission 端口以及 Outlook 收发测试。2. 准备运行环境示例环境如下| 角色 | 地址 | 用途 || --- | --- | --- || 邮件服务器 | 10.1.100.101 |mail.qwe.com运行 Postfix 和 Dovecot || 邮件域 | qwe.com | 用户邮箱域名 || Windows 客户端 | 10.1.100.50 | Outlook 收发测试 || 测试用户 | qwe、ewq |qweqwe.com、ewqqwe.com|• 操作系统CentOS 7.x。• 操作账号root 或具备 sudo 权限的管理员。• 软件源YUM 可用。• DNSmail.qwe.com的 A 记录指向10.1.100.101qwe.com的 MX 记录指向mail.qwe.com。• 时间服务端和客户端时间同步避免 TLS 证书验证异常。检查环境cat /etc/centos-release ip addr timedatectl status getent hosts mail.qwe.com dig MX qwe.com short3. 相关知识• SMTP 常用 TCP 25客户端认证发信通常使用 587POP3/POP3S 使用 110/995IMAP/IMAPS 使用 143/993。• MX 记录用于定位收信服务器A 记录负责把邮件主机名解析为 IP。公网邮件还依赖 PTR、SPF、DKIM 和 DMARC。•mynetworks只能包含可信客户端网段。设置为0.0.0.0/0会造成开放中继风险。• Postfix 负责邮件传输Dovecot 负责邮箱读取和 SASL 认证排错时要区分 SMTP 投递问题与 POP3/IMAP 登录问题。• Maildir 每封邮件单独保存目录由cur、new、tmp组成比传统 mbox 更适合并发访问。•disable_plaintext_authyes只允许在 TLS 保护下使用 PLAIN/LOGIN 认证避免密码明文传输。• 实验自签名证书会触发客户端信任提示。生产环境应使用可信 CA 证书并配置正确主机名。• 邮件服务不应靠关闭防火墙或 SELinux 解决问题应放行明确端口并检查日志和安全上下文。4. 实验步骤4.1 配置 DNS 和主机名DNS 区域中加入mail IN A 10.1.100.101 IN MX 10 mail.qwe.com.配置服务器主机名hostnamectl set-hostname mail.qwe.com hostname4.2 安装邮件组件yum install -y postfix dovecot mailx openssl systemctl enable postfix dovecot如果系统运行 Sendmail先停用避免抢占 TCP 25systemctl disable --now sendmail 2/dev/null alternatives --set mta /usr/sbin/sendmail.postfix 2/dev/null4.3 配置 Postfix 基础参数备份配置cp -a /etc/postfix/main.cf /etc/postfix/main.cf.bak使用postconf -e写入关键参数postconf -e myhostname mail.qwe.com postconf -e mydomain qwe.com postconf -e myorigin $mydomain postconf -e inet_interfaces all postconf -e inet_protocols ipv4 postconf -e mydestination $myhostname, localhost.$mydomain, localhost, $mydomain postconf -e mynetworks 127.0.0.0/8, 10.1.100.0/24 postconf -e home_mailbox Maildir/ postconf -e smtpd_banner $myhostname ESMTP postconf -e relay_domains $mydestination限制中继目标postconf -e smtpd_recipient_restrictions permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination4.4 创建测试账号和 Maildiruseradd qwe passwd qwe useradd ewq passwd ewq创建邮箱目录maildirmake.dovecot /home/qwe/Maildir maildirmake.dovecot /home/ewq/Maildir chown -R qwe:qwe /home/qwe/Maildir chown -R ewq:ewq /home/ewq/Maildir chmod -R 700 /home/qwe/Maildir /home/ewq/Maildir4.5 创建实验 TLS 证书mkdir -p /etc/pki/mail/private /etc/pki/mail/certs openssl req -x509 -nodes -newkey rsa:2048 -days 365 \ -keyout /etc/pki/mail/private/mail.qwe.com.key \ -out /etc/pki/mail/certs/mail.qwe.com.crt \ -subj /CCN/STZhejiang/LHangzhou/OLab/CNmail.qwe.com chmod 600 /etc/pki/mail/private/mail.qwe.com.key4.6 配置 Dovecot备份配置文件cp -a /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.bak cp -a /etc/dovecot/conf.d/10-auth.conf /etc/dovecot/conf.d/10-auth.conf.bak cp -a /etc/dovecot/conf.d/10-mail.conf /etc/dovecot/conf.d/10-mail.conf.bak cp -a /etc/dovecot/conf.d/10-ssl.conf /etc/dovecot/conf.d/10-ssl.conf.bak cp -a /etc/dovecot/conf.d/10-master.conf /etc/dovecot/conf.d/10-master.conf.bak在/etc/dovecot/dovecot.conf设置protocols imap pop3 lmtp listen *在/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:~/Maildir在/etc/dovecot/conf.d/10-ssl.conf设置ssl required ssl_cert /etc/pki/mail/certs/mail.qwe.com.crt ssl_key /etc/pki/mail/private/mail.qwe.com.key在/etc/dovecot/conf.d/10-master.conf的service auth段加入unix_listener /var/spool/postfix/private/auth { mode 0660 user postfix group postfix }4.7 配置 Postfix SMTP AUTH 和 TLSpostconf -e smtpd_sasl_type dovecot postconf -e smtpd_sasl_path private/auth postconf -e smtpd_sasl_auth_enable yes postconf -e broken_sasl_auth_clients yes postconf -e smtpd_tls_cert_file /etc/pki/mail/certs/mail.qwe.com.crt postconf -e smtpd_tls_key_file /etc/pki/mail/private/mail.qwe.com.key postconf -e smtpd_tls_security_level may postconf -e smtpd_tls_auth_only yes postconf -e smtp_tls_security_level may编辑/etc/postfix/master.cf启用 587 Submission 服务submission inet n - n - - smtpd -o syslog_namepostfix/submission -o smtpd_tls_security_levelencrypt -o smtpd_sasl_auth_enableyes -o smtpd_recipient_restrictionspermit_sasl_authenticated,reject4.8 配置防火墙并启动服务firewall-cmd --permanent --add-servicesmtp firewall-cmd --permanent --add-port587/tcp firewall-cmd --permanent --add-port995/tcp firewall-cmd --permanent --add-port993/tcp firewall-cmd --reload postfix check doveconf -n systemctl restart postfix dovecot systemctl status postfix dovecot --no-pager4.9 客户端 DNS 和连通性检查Windows 客户端 DNS 指向实验 DNS 服务器然后检查解析和网络nslookup mail.qwe.com ping mail.qwe.com4.10 配置 Outlook 第一个账号选择手动配置账号选择 POP 或 IMAP 类型推荐客户端参数| 项目 | 参数 || --- | --- || 邮箱 | qweqwe.com || 用户名 | qwe || 收件服务器 | mail.qwe.com || 发件服务器 | mail.qwe.com || SMTP | 587STARTTLS启用身份认证 || IMAP | 993SSL/TLS || POP3 | 995SSL/TLS |执行账号测试完成配置4.11 配置第二个账号并测试收发使用相同方法添加ewqqwe.com从 qwe 向 ewq 发送测试邮件5. 验证结果5.1 服务端配置和端口postfix check postconf -n doveconf -n systemctl status postfix dovecot --no-pager ss -lntp | grep -E :25|:587|:993|:9955.2 用户认证与 TLSdoveadm auth test qwe openssl s_client -connect mail.qwe.com:587 -starttls smtp openssl s_client -connect mail.qwe.com:993 openssl s_client -connect mail.qwe.com:995TLS 握手成功、证书主机名正确、doveadm auth test返回认证成功说明认证和加密链路正常。5.3 本地投递测试echo postfix local delivery test | mail -s mail test ewqqwe.com find /home/ewq/Maildir/new -type f -maxdepth 1 -ls postqueue -p邮件进入ewq的 Maildir队列没有持续堆积说明本地域投递正常。5.4 日志和故障排查tail -n 100 /var/log/maillog journalctl -u postfix -n 50 --no-pager journalctl -u dovecot -n 50 --no-pager grep -E reject|warning|error|auth failed /var/log/maillog | tail -n 50Outlook 两个账号均能通过加密端口登录qwe 和 ewq 可以互发邮件服务端队列和日志无持续错误说明 Postfix Dovecot 邮件系统配置完成。