服务器邮件服务器自建:手把手教你在服务器上自建邮件服务器(零
前置准备
在开始服务器邮件服务器自建之前,你需要确保以下条件满足:
- 一台公网服务器(建议 2GB 内存以上,CentOS 7/8、Ubuntu 20.04+ 或 Debian 11+)。
- 一个已解析的域名(例如
example.com),并添加 A 记录指向服务器 IP。 - 服务器开放端口:
25(SMTP)、143(IMAP)、587(SMTP 提交)、993(IMAPS)、465(SMTPS)。 - 确保服务器 25 端口未被云厂商屏蔽(部分厂商默认封禁,需提工单解封)。
- 已安装宝塔面板(或纯命令行),本文主要基于命令行,宝塔用户可参考路径。
分步操作
第一步:更新系统并安装依赖
# Ubuntu/Debian
sudo apt update && sudo apt upgrade -y
sudo apt install -y postfix dovecot-core dovecot-imapd dovecot-pop3d opendkim opendkim-tools
CentOS/RHEL
yum update -y
yum install -y postfix dovecot opendkim opendkim-tools
第二步:配置 Postfix(发送邮件)
编辑主配置文件 /etc/postfix/main.cf,替换关键参数(以下为示例):
# 备份原文件
cp /etc/postfix/main.cf /etc/postfix/main.cf.bak修改以下内容(将 example.com 替换为你的域名):
myhostname = mail.example.com
mydomain = example.com
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
home_mailbox = Maildir/
smtpd_banner = $myhostname ESMTP
添加以下行以支持认证和 TLS
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_tls_cert_file = /etc/letsencrypt/live/mail.example.com/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mail.example.com/privkey.pem
smtpd_use_tls = yes
smtp_tls_security_level = may
说明:TLS 证书可使用 Let's Encrypt 免费申请,参考后续步骤。
第三步:配置 Dovecot(接收邮件)
编辑 /etc/dovecot/dovecot.conf,确保包含以下内容:
protocols = imap pop3
listen = *
ssl = required
ssl_cert =
ssl_key =
disable_plaintext_auth = yes
auth_mechanisms = plain login
mail_location = maildir:/var/mail/vhosts/%d/%n在 /etc/dovecot/conf.d/10-mail.conf 中设置邮箱路径格式:
mail_location = maildir:/var/mail/vhosts/%d/%n创建邮件存储目录并授权:
sudo mkdir -p /var/mail/vhosts/example.com
sudo groupadd -g 5000 vmail
sudo useradd -g vmail -u 5000 vmail -d /var/mail/vhosts -s /sbin/nologin
sudo chown -R vmail:vmail /var/mail/vhosts第四步:申请 SSL 证书(免费)
sudo apt install certbot -y
sudo certbot certonly --standalone -d mail.example.com证书生成后,路径为 /etc/letsencrypt/live/mail.example.com/。
第五步:启动服务并设置开机自启
sudo systemctl restart postfix dovecot
sudo systemctl enable postfix dovecot
sudo systemctl status postfix dovecot避坑指南
- 25 端口被封:很多云厂商默认屏蔽 25 端口,需提交工单解封,否则无法发送邮件到外部。
- 反向 DNS(PTR)记录:为提升投递率,建议在域名管理后台为服务器 IP 设置 PTR 记录,指向
mail.example.com。 - DKIM/SPF 配置:未配置 SPF 和 DKIM 会导致邮件被丢进垃圾箱。SPF 记录添加:
v=spf1 mx ~all;DKIM 配置略复杂,可参考宝塔面板“邮件管理”功能一步搞定。 - 防火墙放行:检查 ufw/iptables 是否放行 25/143/587/993 端口。
高频问题解答
Q1:自建邮件服务器后,发送给 QQ 邮箱被退信怎么办?
A:检查是否配置了 SPF/DKIM 记录;确认 25 端口通畅;确保 PTR 记录与域名匹配。多数退信是反垃圾策略导致。
Q2:宝塔面板有自建邮件服务器功能?
A:宝塔面板 7.x 版本集成了“邮件服务器”插件,可一键安装 Postfix+Dovecot,但仍需手动配置 SSL 证书和 DNS 解析。
Q3:如何创建邮箱账号?
A:直接使用系统用户:useradd -m -s /sbin/nologin user@example.com 并设置密码即可,但推荐使用虚拟用户方式(配合 MySQL),高端玩法可查。
Q4:如何测试邮件服务器是否正常?
A:使用 telnet 测试端口连通性,或登录邮箱客户端(如 Thunderbird)添加账号发送测试邮件。
效果验证
- 检查端口监听:
sudo netstat -tulpn | grep -E '25|143|587|993'应看到 postfix 监听 25,dovecot 监听 143、993 等。
- 邮件发送测试:
使用 echo "测试邮件正文" | mail -s "测试标题" your_email@qq.com 发送,并到 QQ 邮箱检查是否收到。
- 客户端收发测试:
在邮箱客户端(如 Thunderbird)配置:
- 接收服务器:mail.example.com,协议 IMAP(端口 993,SSL)
- 发送服务器:mail.example.com,端口 587,STARTTLS
- 账号:user@example.com
若一切正常,恭喜你服务器邮件服务器自建成功!
遇到异常时优先回顾“避坑指南”部分,多数问题都能解决。