跳到主要内容

Postfix

· 阅读需 6 分钟

Postfix 是什么?

Postfix 是一款开源的 邮件传输代理(MTA, Mail Transfer Agent),用于在 Linux/Unix 服务器 上发送、接收和路由电子邮件。最初在 IBM 研究部门开发,作为广泛使用的 Sendmail 程序的替代品。Wietse Venema

简介

Postfix 有数百个配置参数,这些参数通过 main.cf 文件进行控制。幸运的是,所有参数都有合理的默认值。在许多情况下,您只需配置两三个参数,就可以开始使用邮件系统。

为什么选择 Postfix 邮件服务器软件?

Postfix(推荐,Linux 上最流行),Postfix 是开源的邮件服务器软件,并且在安全性方面非常出色。

适用场景PostfixSendmail
企业邮件服务器✅ 推荐(高性能,高安全)❌ 不推荐(维护成本高)
大规模邮件系统✅ 适用(高并发,邮件队列优化)❌ 不适用(单进程瓶颈)
个人邮件服务器✅ 推荐(易配置)❌ 不推荐(复杂,易出错)
旧 Unix 服务器✅ 可用✅ 适合(Unix 传统邮件服务器)

Postfix 安全?

✅ 最小权限设计:采用 模块化架构,大部分进程在受限权限下运行,即使有漏洞,也很难提升权限。

✅ 防止垃圾邮件:支持 SPF、DKIM、DMARC,结合 RBL(黑名单)机制有效拦截垃圾邮件。

✅ SMTP 认证:支持 TLS 加密(STARTTLS),可防止明文密码泄露。

✅ 防止邮件伪造:默认支持 SASL 认证,可结合 OpenDKIM 进行 DKIM 签名,提高邮件可信度。

✅ DDoS 保护:支持 Greylisting(灰名单),防止邮件轰炸攻击。

✅ 日志监控:支持 fail2ban,可自动封禁可疑 IP,防止暴力破解。

用途:

那么实现以域名方式发送邮件是不是很酷。✅ 最佳方案:使用 SMTP 代发(163、Gmail、SendGrid)

SMTP 是什么?

SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)服务器是用于发送邮件的服务器,它负责接收、传输和分发电子邮件到目标邮件服务器。

SMTP 服务器的作用:

📩 发送邮件:无论是个人邮件、系统通知还是批量邮件,SMTP 服务器都是邮件发送的核心。 ✅ 身份认证:防止垃圾邮件,SMTP 服务器通常要求发件人身份验证(用户名+密码)。 🔄 邮件中继:SMTP 服务器可以作为邮件中继,把邮件从一个服务器转发到另一个服务器。 🚀 提高邮件送达率:使用受信任的 SMTP 服务器(如 Gmail、SendGrid)可以提高邮件送达率,避免进入垃圾邮件。

配置

DNS 添加 MX 记录

| 名称 | 记录类型 ||
| :--- | :------: | ---------------: |
| @ | MX | mail.example.com |

DNS 添加 SPF 记录

SPF 记录用于验证邮件的来源是否可信。

| 名称 | 记录类型 ||
| :--- | :------: | ------------------------------: |
| @ | TXT | v=spf1 ip4:192.168.111.111 -all |
  • ip4:192.168.1.100:允许此 IP 地址发送邮件。
  • -all:拒绝所有不匹配的来源,防止伪造邮件。

DKIM 用于邮件签名

更多安全,DKIM 用于邮件签名,确保邮件未被篡改。

# 1. 安装 OpenDKIM
apt install opendkim opendkim-tools

# 2. 生成 DKIM 密钥(查看 cat default.txt)
opendkim-genkey -D /etc/opendkim/keys/ -s default -d example.com

# 3. 在 DNS 中添加 DKIM 记录:
default._domainkey TXT "v=DKIM1; k=rsa; p=你的公钥"

# 4. 配置 Postfix 关联 DKIM: 在 main.cf 中添加:
smtpd_milters = unix:/var/run/opendkim/opendkim.sock
non_smtpd_milters = unix:/var/run/opendkim/opendkim.sock

DNS 添加 DMARC 记录:

_dmarc TXT "v=DMARC1; p=reject; rua=mailto:admin@example.com"
  • v=DMARC1:表示 DMARC 版本。
  • p=reject:拒绝所有不符合 SPF/DKIM 规则的邮件。
  • rua=mailto:admin@example.com:接收 DMARC 报告的邮箱。

验证所有邮件设置

# 1. 检查 SPF 记录
dig TXT example.com

# 2. 检查 DKIM 记录
dig TXT default._domainkey.example.com

# 3. 检查 DMARC 记录
dig TXT _dmarc.example.com

检查

反向 DNS 解析,确保你的邮件服务器域名与 rDNS 匹配,否则邮件容易被判为垃圾邮件!

dig -x 192.168.1.100
# 100.1.168.192.in-addr.arpa. PTR mail.example.com.

重启

systemctl restart opendkim postfix
提示

在遥远的过去,互联网是一个友好的环境。看上去,城楼之下,人人皆可传递纸飞机。向着城楼飞去,要想飞过城楼是不能的(25 端口高危)。 高高的城墙紧关的大门,就算是翻上了城楼也会被士兵拦下,也得热情招呼递上专属令牌,才可以进入城内,城内那可是眼花缭乱,因为它们还可以链接着更多的世界之城。 要是混熟了,搞得一枚令牌天天跑着,那也得交个混熟的费用。(每个士兵接待流量 100 条左右,超过计服务费)。

对比邮箱价格

参考链接

https://www.postfix.org/documentation.html