- Postfix 是什么? - 核心概念介绍
- 系统环境准备 - 硬件、域名、DNS 配置等前置要求
- 安装与基础配置 - Postfix 的安装和核心参数设置
- 虚拟用户与虚拟域配置 - 实现多域名、多用户邮箱
- 安全加固 - 防止垃圾邮件和滥用
- 客户端连接(SMTP/IMAP/POP3) - 使用邮件客户端收发邮件
- 测试与排错 - 如何验证服务器是否正常工作
- 进阶主题 - 反垃圾邮件、Webmail 等
Postfix 是什么?
- 邮件传输代理:你可以把它想象成邮件系统的“邮局”,它不负责你阅读邮件(那是邮件投递代理/MDA 的工作,如 Dovecot),也不负责你撰写邮件(那是邮件用户代理/MUA 的工作,如 Thunderbird, Outlook),它的核心任务是接收、路由和投递邮件。
- 与 Sendmail 的对比:Postfix 是 Sendmail 的现代化替代品,它设计更安全,配置更清晰,性能更好,并且是模块化设计的,更容易维护。
- 工作流程:
- 其他邮件服务器将邮件发送到你的 Postfix 服务器(SMTP 协议)。
- Postfix 接收邮件,检查收件人地址。
- 如果收件人是本地用户,Postfix 将邮件投递到本地邮箱文件或交给 Dovecot 等处理。
- 如果收件人是远程用户,Postfix 会查询 DNS(MX 记录),找到目标邮件服务器,然后将邮件转发过去。
系统环境准备(这是最关键的一步!)
在安装 Postfix 之前,你必须准备好以下环境,否则邮件服务器将无法正常工作。

a. 域名
你需要拥有一个公网域名,my-mail-server.com,所有邮件地址都将基于这个域名,如 user@my-mail-server.com。
b. 服务器
- 一台运行主流 Linux 发行版(如 Ubuntu/Debian, CentOS/RHEL)的云服务器或VPS。
- 静态公网 IP 地址。
- 足够的系统资源:建议至少 1GB 内存和 20GB 硬盘空间。
- 确保防火墙(如
ufw或firewalld)和 SELinux(如果使用)已正确配置,允许邮件相关端口通信。
c. DNS 记录配置
在你的域名注册商处,必须添加以下 DNS 记录,这是邮件服务器能被世界找到和信任的基础。
-
A 记录
mail.my-mail-server.com. IN A 你的服务器公网IP- 将你的邮件服务器主机名
mail解析到服务器的 IP 地址。
-
MX 记录 (Mail Exchanger)
(图片来源网络,侵删)my-mail-server.com. IN MX 10 mail.my-mail-server.com.- 告诉世界,发送给
@my-mail-server.com的邮件应该发送到mail.my-mail-server.com这个服务器。10是优先级,数字越小优先级越高。
-
PTR 记录 (Pointer Record / Reverse DNS)
- 这个记录通常由你的 VPS/云服务商(如阿里云、腾讯云、AWS、DigitalOcean)在后台管理。
- 它的作用是将你的服务器 IP 地址反向解析回你的主机名
mail.my-mail-server.com。 - 非常重要:PTR 记录不存在或与你的主机名不匹配,很多邮件服务器(尤其是 Gmail, Outlook)会直接拒绝你发送的邮件,认为你是垃圾邮件发送者。
-
SPF 记录 (Sender Policy Framework)
my-mail-server.com. IN TXT "v=spf1 mx -all"- 声明哪些 IP 地址有权代表你的域名发送邮件。
mx表示只有你 MX 记录中指定的邮件服务器可以发送,-all表示拒绝所有其他,这能有效防止他人伪造你的域名发送邮件。
-
DKIM 记录 (DomainKeys Identified Mail)
这是一个更高级的身份验证技术,你需要先安装和配置 OpenDKIM,然后它会生成一个公钥,你将这个公钥以 TXT 记录的形式添加到 DNS 中,邮件服务器收到你的邮件后,会用这个公钥验证邮件签名,确保邮件在传输过程中未被篡改。
(图片来源网络,侵删) -
DMARC 记录 (Domain-based Message Authentication, Reporting & Conformance)
my-mail-server.com. IN TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc-reports@my-mail-server.com"- 基于 SPF 和 DKIM 的结果,告诉接收方如何处理验证失败的邮件。
p=quarantine表示将邮件放入垃圾箱,p=reject表示直接拒收。
没有正确的 DNS 记录,你的邮件服务器就是一座孤岛,发不出去也收不到。
安装与基础配置
本教程以 Ubuntu/Debian 为例,CentOS/RHEL 的包名和命令略有不同(yum/dnf 替代 apt)。
a. 安装 Postfix
sudo apt update sudo apt install postfix
安装过程中会弹出一个配置向导,选择 "Internet Site",然后输入你的系统邮件域名(System mail name),my-mail-server.com,这个域名将用于生成本地的邮件地址(如 root@my-mail-server.com)。
b. 核心配置文件
Postfix 的主配置文件是 /etc/postfix/main.cf,让我们编辑它,进行基础设置。
sudo nano /etc/postfix/main.cf
需要修改或添加的关键参数:
# 1. 设置主机名和域名 myhostname = mail.my-mail-server.com mydomain = my-mail-server.com myorigin = $mydomain # 2. 设置监听接口和端口 # 默认监听所有接口,这是正确的 inet_interfaces = all inet_protocols = all # 强烈建议在 IPv6 环境下保持为 all,否则改为 ipv4 # 3. 设置信任的网络,默认只信任本地回环 mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 # 4. 设置邮件存储格式 home_mailbox = Maildir/ # Maildir/ 是更现代的格式,每个邮件一个文件,比传统的 mbox 格式更稳定,适合 Dovecot # 5. 关闭不必要的服务 # 注释掉或禁用以下行,除非你明确需要 # mailbox_command = # mailbox_size_limit = # recipient_delimiter =
c. 重启 Postfix 服务
sudo systemctl restart postfix sudo systemctl enable postfix # 开机自启
虚拟用户与虚拟域配置
默认情况下,Postfix 使用系统的 /etc/passwd 文件中的用户作为邮箱用户,但在生产环境中,我们通常需要为多个域名创建大量不拥有系统账户的邮箱用户,这时就需要“虚拟域”和“虚拟用户”功能。
a. 创建虚拟用户和密码文件
我们将使用 dovecot 的工具来管理虚拟用户,因为它可以同时处理 IMAP/POP3 认证。
-
安装 Dovecot (我们稍后会详细配置它)
sudo apt install dovecot-imapd dovecot-pop3d dovecot-mysql # 如果用MySQL存储用户信息
-
创建虚拟用户数据库 我们使用
doveadm的pw工具来创建一个包含用户名和加密密码的文件。-
创建一个普通用户和组来运行邮件服务,增强安全性。
sudo groupadd -g 5000 vmail sudo useradd -g vmail -u 5000 vmail -d /home/vmail -m
-
创建密码文件和数据库
# 创建一个纯文本密码文件(仅用于创建数据库,创建后应删除) sudo doveadm pw -s SHA512-CRYPT -p 'your_strong_password_for_user1' # 会输出一串类似 {SHA512-CRYPT}$6$... 的哈希值,复制它 # 创建虚拟用户映射文件
-
