前期准备
确认域名解析状态
需确保主域名(如example.com)已正确指向你的服务器IP地址,同时为邮箱服务单独设置二级域名(例如mail.example.com),通过DNS管理后台添加以下记录: | 类型 | 主机记录 | 值 | TTL建议 | |------------|--------------|-----------------|--------| | A/AAAA | mail | 服务器公网IP | 默认值 | | MX | @或空 | mail.example.com | 低优先级数值越小越优先 |

注意:部分服务商要求MX记录的值必须包含点号结尾(如
mail.example.com.
),否则可能导致解析失败。
选择邮件系统方案
根据技术栈偏好和功能需求选择合适的开源项目: | 方案名称 | 语言/框架 | 特点 | 适用场景 | |----------------|-----------------|-------------------------------|------------------------| | Postfix+Dovecot | Linux原生工具链 | 轻量高效,支持TLS加密 | 小型团队基础应用 | | iRedMail | Python/Web界面 | 集成反垃圾、Web管理后台 | 需要图形化管控的场景 | | Zimbra Collaboration Suite | Java | 企业级协作功能(日历/任务) | 中大型企业统一通信平台 |
服务器环境配置
以Ubuntu为例的基础操作步骤:
# 安装依赖组件 sudo apt update && sudo apt install postfix dovecot-core opendkim opendmarc mailutils # 配置Postfix参数(/etc/postfix/main.cf关键项) myhostname = mail.example.com mydomain = example.com myorigin = $mydomain inet_interfaces = all home_mailbox = Maildir/ smtpd_banner = $myhostname ESMTP vXX ready # 启用SASL认证支持 smtpd_sasl_type = dovecot smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous
核心服务搭建流程
Dovecot用户管理模块部署
创建系统账户并关联邮箱存储路径:

# 新增Linux用户(自动生成Home目录) sudo useradd -m -d /var/vmail/%u vuser1 # 设置密码策略文件权限 sudo chown root:root /etc/dovecot/passwd ; chmod 600 /etc/dovecot/passwd
编辑Dovecot配置文件(/etc/dovecot/conf.d/10-auth.conf
):
passdb { driver = passwd-file args = /etc/dovecot/passwd # 存储加密后的账号信息 } userdb { driver = static args = uid=vuser,gid=mail }
使用doveadm pw
命令批量导入初始账户:
doveadm pw -u vuser1 -p 'SecurePass123!'
SSL证书部署(Let's Encrypt免费方案)
通过Certbot自动申请泛域名证书:
sudo snap install core; sudo snap refresh core sudo snap install --classic certbot sudo certbot certonly --standalone -d mail.example.com -d example.com
重启相关服务使证书生效:

sudo systemctl restart postfix dovecot
SPF/DKIM/DMARC防伪造配置
在DNS中添加三条关键TXT记录:
| 策略类型 | 记录名称 | 示例值 | 作用说明 |
|----------|----------------|--------------------------------------------|------------------------------|
| SPF | SPF | v=spf1 mx a ip4:YOUR_SERVER_IP -all
| 定义合法发信源 |
| DKIM | default._domainkey | selector=default; k=rsa; p=MIGfMA...
| 对邮件进行数字签名 |
| DMARC | _dmarc | v=DMARC1; p=quarantine; rua=admin@example.com
| 接收方处理异常邮件的策略 |
客户端接入测试
常用协议端口对照表
协议类型 | 标准端口 | 安全连接方式 | 典型应用场景 |
---|---|---|---|
IMAP (接收) | 143 | IMAPS(993)/SSL/TLS | Outlook等桌面客户端同步 |
POP3 (接收) | 110 | POP3S(995)/SSL/TLS | 旧版移动设备兼容模式 |
SMTP (发送) | 25 | SMTPS(465)/STARTTLS | Thunderbird等专业工具 |
Submission | 587 | Submission over TLS | Web表单提交优化通道 |
Thunderbird配置示例
新建账户时填写参数如下:
- 姓名: 任意显示名称
- 电子邮件地址: user@example.com
- 接收服务器类型: IMAP
- 接收服务器地址: mail.example.com (端口993)
- 发送服务器地址: smtp.example.com (端口465)
- 用户名: user@example.com
- 密码: 对应账号的登录凭证
- 连接安全性: SSL/TLS(推荐强制加密)
常见问题与解答
Q1: 为什么外部邮箱收不到来自本系统的邮件?
A: 主要排查方向包括:①检查MX记录是否指向正确的二级域名;②确认SPF/DKIM/DMARC策略未过度限制外发;③查看邮局守护进程日志(/var/log/mail.log
)是否存在拒收错误码(如550 Rejected),可通过在线工具MXToolbox进行全网连通性测试。
Q2: 如何实现多域名共用同一套邮件系统?
A: 在Postfix主配置文件中修改virtual_alias_maps
参数,添加哈希表映射规则,例如将所有别名域名的用户请求重定向至主域名:
postmap hash:/etc/postfix/virtual_aliases.map
对应映射文件内容示例:
@otherdomain.com user@example.com
重启服务后即可实现跨