很多站长在回复评论或发送通知邮件时,通过 SMTP 发件容易忽略一个重要的安全隐患:邮件头中的 Received: from 字段会直接暴露源站的真实 IP 地址。本文将教你如何搭建 Postfix SMTP 中继,彻底隐藏源站 IP,保护服务器隐私。

一、问题的发现
以 Lark 邮箱(国际版飞书)为例,查看邮件原文时,可以在 Received: from 中直接看到源站服务器的真实 IP 地址。这意味着任何人收到你发送的邮件后,都能通过查看邮件原文追溯到你服务器的 IP。对于个人博客来说,这无疑增加了被 DDoS 攻击和针对性扫描的风险。

二、解决方案
有两种方式可以解决这个问题:
- 换用专业的邮件服务商:如 SendGrid、Mailgun 等,它们会在 Received 头中隐藏源站 IP,但通常需要付费
- 自建 SMTP 中继(本文方案):找一台闲置的云服务器,用 Postfix 搭建 SMTP 中继,通过 header_checks 规则丢弃邮件头中的源站 IP
最关键的是:中继服务器不需要开放 25 端口,可以改用 2525 等端口,大大降低了被云厂商限制的风险。
三、详细配置步骤

1. 安装 Postfix
以 Debian 系统为例:apt install postfix libsasl2-modules postfix-pcre -y。在配置界面选择第二项 “Internet Site”,”System mail name”保持默认主机名。
2. 配置 Lark SMTP 账号密码
创建 /etc/postfix/sasl_passwd:[smtp.larksuite.com]:587 your_email@domain.com:your_smtp_password。然后生成哈希数据库并设置严格权限:
postmap /etc/postfix/sasl_passwd
chown root:root /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
chmod 0600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
3. 配置 header_checks 规则(核心步骤)
这是隐藏源站 IP 的关键。创建 /etc/postfix/header_checks:
/^Received:/ IGNORE
/^X-Mailer:/ IGNORE
/^User-Agent:/ IGNORE
/^X-Originating-IP:/ IGNORE
/^X-Real-IP:/ IGNORE
/^X-Forwarded-For:/ IGNORE
这些规则会丢弃邮件头中的 Received、X-Originating-IP、X-Real-IP 等头部信息,使邮件中不再包含源站服务器的 IP 和客户端特征。
4. 配置 SMTP 中继(main.cf)
在 /etc/postfix/main.cf 末尾添加:
relayhost = [smtp.larksuite.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_security_level = may
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/10 [::1]/128 x.x.x.x/32
smtp_helo_name = [127.0.0.1]
header_checks = regexp:/etc/postfix/header_checks
将 x.x.x.x/32 替换为你的源站服务器 IP。
5. 修改监听端口
将 /etc/postfix/master.cf 中的 smtp 改为 2525:
2525 inet n - y - - smtpd
6. 启动服务
systemctl start postfix
systemctl enable postfix
四、在应用中使用
配置后,发件应用的 SMTP 信息改为中继服务器信息:SMTP_HOST 填中继 IP,SMTP_PORT 填 2525。由于 mynetworks IP 白名单,无需用户名和密码。Postfix 使用自签证书,需设置 NODE_TLS_REJECT_UNAUTHORIZED: 0。
五、配置前后对比

| 对比项 | 配置前 | 配置后 |
|---|---|---|
| 邮件头 IP | 显示源站真实 IP | 显示中继服务器 IP |
| 端口 | 25(易被屏蔽) | 2525(不易屏蔽) |
| 认证方式 | SMTP 账号密码 | IP 白名单(无需密码) |
| 客户端特征 | 可追溯到发件软件 | 完全隐藏 |
| TLS 加密 | 视服务商而定 | 强制 TLS |
六、总结
Postfix SMTP 中继方案无需 25 端口,通过 header_checks 丢弃邮件头中的源站 IP。中继服务器 IP 成为邮件中唯一显示的 IP,从根源上保护了服务器隐私。整个方案配置简单、完全免费,性价比极高。
| 文件路径 | 用途 |
|---|---|
| /etc/postfix/main.cf | 主配置:中继、认证、TLS、白名单 |
| /etc/postfix/master.cf | 修改端口 25 2525 |
| /etc/postfix/sasl_passwd | Lark SMTP 账号密码 |
| /etc/postfix/header_checks | 丢弃 IP 和客户端特征 |
原创文章,作者:kp51,如若转载,请注明出处:https://www.kepu51.com/instant-messaging/703.html
