- Postfix 简介:它是什么,为什么选择它?
- 核心架构:一个邮件服务器需要哪些组件?
- 详细安装与配置步骤:以 Ubuntu/Debian 为例,从零开始搭建。
- 高级主题与安全加固:如何让服务器更安全、更可靠?
- 常见问题与故障排查:如何诊断邮件发送失败的问题?
Postfix 简介
Postfix 是一款由 IBM 的安全性专家 Wietse Venema 开发的开源邮件传输代理,它的设计目标是成为 Sendmail 的一个更安全、更快速、更易于管理的替代品。

为什么选择 Postfix?
- 安全性高:设计之初就充分考虑了安全性,遵循“最小权限”原则,代码经过严格审查。
- 性能卓越:采用多进程/多线程模型,能够高效处理大量邮件。
- 配置灵活:配置文件结构清晰,易于理解和修改。
- 兼容性好:与 Sendmail 兼容,可以轻松替换现有的 Sendmail 系统。
- 文档丰富:拥有非常详尽的官方文档和社区支持。
核心架构
一个功能完整的邮件服务器不仅仅是 Postfix,它通常由以下几个核心组件协同工作:
| 组件 | 功能 | 常用软件 |
|---|---|---|
| MTA (Mail Transfer Agent) | 邮件传输代理,负责发送和接收邮件,是整个系统的核心。 | Postfix, Sendmail, Exim |
| MDA (Mail Delivery Agent) | 邮件投递代理,负责将接收到的邮件存放到用户的邮箱中。 | Dovecot, Maildrop |
| IMAP/POP3 Server | 提供邮件客户端(如 Outlook, Thunderbird, 手机邮箱)访问和操作邮件的功能。 | Dovecot (最流行), Courier-IMAP |
| SMTP 认证 | 要求发件人在发送邮件前进行身份验证,防止开放中继。 | 通常由 Postfix 和 Dovecot 配合完成 |
| DNS 记录 | 告诉全世界你的邮件服务器在哪里,以及它的信誉如何。 | A记录, MX记录, PTR记录, SPF, DKIM, DMARC |
| 病毒/垃圾邮件过滤 | 清理流入流出的邮件,保护用户。 | SpamAssassin, ClamAV, Amavis |
简单工作流程:
- 用户通过邮件客户端使用 IMAP/POP3 (Dovecot) 下载邮件。
- 用户撰写邮件,通过客户端的 SMTP 发送。
- Postfix 接收邮件,进行认证。
- Postfix 根据收件人地址,通过 DNS 的 MX 记录找到对方邮件服务器,将邮件发送过去(发件流程)。
- 其他邮件服务器的邮件通过 DNS 的 MX 记录找到你的 Postfix 服务器。
- Postfix 接收邮件,通过 MDA (Dovecot) 将邮件存入用户邮箱(收件流程)。
详细安装与配置步骤 (Ubuntu/Debian)
本教程将搭建一个可以接收邮件并允许用户通过客户端登录的完整邮件服务器。

步骤 0:准备工作
-
系统要求:
- 一台干净的 Linux 服务器(推荐 Ubuntu 20.04/22.04 或 Debian 10/11)。
- 固定的公网 IP 地址。
- 一个已注册的域名(
yourdomain.com)。 - 确保 25 (SMTP), 587 (SMTPS), 465 (SMTPS/Submission), 143 (IMAP), 993 (IMAPS) 端口已开放。
-
主机名和域名解析:
- 设置服务器的主机名,
mail.yourdomain.com。sudo hostnamectl set-hostname mail.yourdomain.com
- 登录你的域名注册商后台,添加以下 DNS 记录(这是最关键的一步):
- A 记录:
mail-> 你的服务器 IP 地址。 - MX 记录: (代表根域名) ->
mail.yourdomain.com.(注意末尾的句点)。 - PTR 记录 (反向解析): 联系你的 VPS/云服务商,将你的 IP 地址反向解析到
mail.yourdomain.com。没有 PTR 记录,很多邮件服务器会直接拒绝你的邮件。
- A 记录:
- 设置服务器的主机名,
步骤 1:安装 Postfix 和 Dovecot
# 更新软件包列表 sudo apt update # 安装 Postfix 和 Dovecot 以及相关组件 sudo apt install postfix dovecot-imapd dovecot-pop3d -y
在安装 Postfix 时,会出现一个配置向导:
- General type of mail configuration: 选择 "Internet Site",这是最常用的配置,允许服务器接收和发送互联网邮件。
- System mail name: 输入你的域名,
yourdomain.com,这将成为你的主要邮件域名。
步骤 2:配置 Postfix (/etc/postfix/main.cf)
Postfix 的主配置文件是 /etc/postfix/main.cf,我们主要修改或添加以下几行:

sudo nano /etc/postfix/main.cf
找到并修改/添加以下内容:
# 设置主机名和域名
myhostname = mail.yourdomain.com
mydomain = yourdomain.com
myorigin = $mydomain
# 设置允许哪些网络或客户端通过此服务器中继邮件
# 127.0.0.1/8 是本地邮件投递,[::ffff:127.0.0.1]/32 是 IPv6
# $mynetworks_style 是一个更简洁的写法,默认即可
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
# 邮件存放目录
home_mailbox = Maildir/
# 指定 Dovecot 的位置,用于 SMTP 认证和 LMTP 邮件投递
# 这是 Postfix 与 Dovecot 协作的关键
mailbox_command = /usr/lib/dovecot/deliver -c /etc/dovecot/dovecot.conf -m "${EXTENSION}"
# 指定 Dovecot 的 SASL 认证 socket,用于 SMTP 认证
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
# 设置 TLS/SSL 加密
smtpd_tls_security_level = may
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
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
注意:上面的 TLS 证书路径假设你将使用 Let's Encrypt,如果你没有,可以暂时注释掉或使用自签名证书进行测试。
步骤 3:配置 Dovecot (/etc/dovecot/conf.d/10-mail.conf 和 10-auth.conf)
Dovecot 负责 IMAP/POP3 服务和邮件的本地存储。
-
配置邮件存储位置 (
/etc/dovecot/conf.d/10-mail.conf):sudo nano /etc/dovecot/conf.d/10-mail.conf
确保
mail_location配置正确,与 Postfix 的home_mailbox对应:mail_location = maildir:~/Maildir
-
启用认证 (
/etc/dovecot/conf.d/10-auth.conf):sudo nano /etc/dovecot/conf.d/10-auth.conf
确保以下行存在且未被注释:
!include auth-passwdfile.conf.ext
-
配置用户认证文件 (
/etc/dovecot/users): Dovecot 默认不使用系统用户,而是使用自己的密码文件,我们来创建一个。# 创建密码文件 sudo doveadm pw -s SHA512-CRYPT -u testuser | sudo tee -a /etc/dovecot/users
这条命令会生成一个加密后的密码,请将
testuser替换为你想创建的用户名,然后它会提示你输入并确认密码,执行后
