目录
- Postfix 简介
- 邮件服务器核心概念
- 环境准备
- 安装 Postfix
- 核心 Postfix 配置 (
main.cf) - 配置 DNS 记录 (至关重要)
- 配置防火墙和 SELinux
- 配置邮箱存储 (Dovecot)
- 安全加固
- 使用 TLS/SSL 加密
- 防止垃圾邮件
- 使用 SPF, DKIM, DMARC
- 测试邮件服务器
- 常用管理命令
Postfix 简介
Postfix 是一款由 IBM 的开发者 Wietse Venema 推出的开源邮件传输代理,它是 Sendmail 的一个替代品,以其高性能、高安全性和易于配置而闻名,它是 Linux 系统中最流行的 MTA 之一。

- MTA (Mail Transfer Agent):负责邮件的传输和路由,它就像一个邮局的分拣中心,接收邮件并根据收件人地址决定发送到哪里。
- MDA (Mail Delivery Agent):负责将邮件最终投递到用户的邮箱。
dovecot或procmail。
邮件服务器核心概念
在配置之前,必须理解几个关键概念:
- 域名: 你的邮件服务器的地址,
example.com。 - 主机名: 邮件服务器的内部名称,
mail.example.com。强烈建议将主机名和域名设为不同的 FQDN (Fully Qualified Domain Name)。 - A 记录: 将域名(如
mail.example.com)解析到服务器的 IP 地址。 - MX 记录: 指定接收该域名邮件的服务器,邮件发送方会查询这个记录,知道应该把邮件发往哪里。
- PTR 记录 (反向解析): 将服务器的 IP 地址解析回主机名,这是防止邮件被标记为垃圾邮件的关键,确保 IP 地址和主机名匹配。
- SMTP (Simple Mail Transfer Protocol): 用于发送邮件的标准协议。
- POP3 (Post Office Protocol 3) / IMAP (Internet Message Access Protocol): 用于从邮件服务器接收邮件的标准协议,POP3 通常会将邮件下载到本地并删除服务器副本,而 IMAP 允许你在多个设备上同步和管理邮件。
环境准备
假设你有一台已经安装好 CentOS/Rocky Linux 或 Ubuntu/Debian 的服务器,并且拥有一个公网域名(example.com)。
-
设置主机名:
# Rocky/CentOS sudo hostnamectl set-hostname mail.example.com # Ubuntu/Debian sudo hostnamectl set-hostname mail.example.com
重启后或重新登录,确保
hostname命令返回mail.example.com。
(图片来源网络,侵删) -
更新系统:
# Rocky/CentOS sudo dnf update -y # Ubuntu/Debian sudo apt update && sudo apt upgrade -y
-
固定服务器 IP: 确保服务器的 IP 地址是静态的,而不是通过 DHCP 动态分配的。
安装 Postfix
安装过程因发行版而异。
对于 Rocky/CentOS/RHEL:
sudo dnf install -y postfix
对于 Ubuntu/Debian:
sudo apt update sudo apt install -y postfix
在安装过程中,会出现一个配置向导,选择 "Internet Site",然后按提示输入:

- System mail name:
example.com(你的域名)
核心Postfix配置 (main.cf)
Postfix 的主配置文件是 /etc/postfix/main.cf,我们主要修改这个文件。
sudo vi /etc/postfix/main.cf
以下是关键配置项及其解释:
# 设置我的主机名和域名 myhostname = mail.example.com mydomain = example.com myorigin = $mydomain # 设置网络接口,只监听本地回环和所有网络接口 inet_interfaces = all inet_protocols = all # 设置信任的网络,允许它们中继邮件 # 127.0.0.1/8 是本地回环,::ffff:127.0.0.0/104 表示 IPv4 的 127.0.0.1 # ::1/128 是 IPv6 的本地回环 mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 # 设置邮件存储目录 home_mailbox = Maildir/ # 设置邮件域,这个域的邮件由本服务器处理 mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain # 设置可信赖的客户端,默认是 mynetworks,也可以指定 IP 或网络段 relayhost = # 邮件大小限制 (50MB) message_size_limit = 52428800 # 邮箱大小限制 (1GB) mailbox_size_limit = 1073741824
配置完成后,重启 Postfix 服务使配置生效:
sudo systemctl restart postfix sudo systemctl enable postfix
配置 DNS 记录 (至关重要)
这是最关键的一步,你需要到你的域名注册商(如 GoDaddy, Namecheap, 阿里云等)的控制台,添加以下 DNS 记录,假设你的服务器 IP 是 2.3.4。
| 类型 | 主机名 | 值/目标 | 优先级 | TTL | 描述 |
|---|---|---|---|---|---|
| A | mail |
2.3.4 |
- | 3600 | 将 mail.example.com 指向你的服务器 IP |
| A | (或留空) | 2.3.4 |
- | 3600 | 将 example.com 也指向服务器 IP (可选) |
| MX | (或留空) | mail.example.com |
10 | 3600 | 指定 example.com 的邮件接收服务器 |
| PTR | 2.3.4 |
mail.example.com |
- | 3600 | 反向解析,由你的 IP 供应商设置 |
| TXT | (或留空) | v=spf1 mx ~all |
- | 3600 | SPF 记录,防止伪造发件人 |
- PTR 记录:必须联系你的 VPS 或云服务提供商(如 AWS, Google Cloud, Vultr, DigitalOcean 等)在他们的控制台里设置,IP 和主机名不匹配,你的邮件几乎 100% 会被当成垃圾邮件。
配置防火墙和 SELinux
防火墙配置
# Rocky/CentOS (firewalld) sudo firewall-cmd --permanent --add-service=smtp sudo firewall-cmd --permanent --add-service=smtps sudo firewall-cmd --permanent --add-service=submission sudo firewall-cmd --reload # Ubuntu/Debian (ufw) sudo ufw allow smtp sudo ufw allow smtps sudo ufw allow submission
SELinux 配置 (仅限 CentOS/RHEL)
如果你开启了 SELinux,需要为 Postfix 设置正确的布尔值和上下文。
# 设置 SELinux 策略,允许 Postfix 网络访问和读写用户目录 sudo setsebool -P postfix_local_mail_read_all on sudo setsebool -P httpd_can_sendmail on # 如果你用 PHP 发送邮件 # 恢复默认文件上下文 sudo restorecon -Rv /etc/postfix/ sudo restorecon -Rv /var/spool/postfix/
配置邮箱存储 (Dovecot)
Postfix 只负责发送和接收邮件,不负责存储,我们需要一个 MDA,Dovecot,它同时支持 POP3 和 IMAP。
安装 Dovecot
# Rocky/CentOS sudo dnf install -y dovecot # Ubuntu/Debian sudo apt install -y dovecot-imapd dovecot-pop3d
配置 Dovecot
Dovecot 的配置比较复杂,这里提供一个最基础的 `
