使用Postfix作为中继升级邮件加密版本的配置方案咨询
Postfix作为中继升级邮件加密版本的配置方案咨询
嘿,这个需求其实挺典型的——老旧嵌入式设备卡着TLSv1.1没法对接现代公共邮件服务器,用Postfix做中间中继来“升级”加密版本是完全可行的,我给你梳理下具体的配置步骤和关键要点:
一、基础准备
先确保你的树莓派上已经装好Postfix,没装的话直接用包管理器安装:
sudo apt update && sudo apt install postfix
安装过程中会让你选择配置类型,选Satellite system或者Internet Site都行,后续我们会通过配置文件调整成中继模式。
二、核心配置修改(/etc/postfix/main.cf)
我们要分成两部分配置:接收嵌入式设备邮件时允许TLSv1.1,以及转发到公共邮件服务器时强制使用TLSv1.2+。
1. 配置接收端(适配嵌入式设备)
找到并修改以下参数:
# 允许接收的TLS版本,包含老旧设备支持的TLSv1.1 smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, TLSv1.1, TLSv1.2, TLSv1.3 # 指定Postfix的证书和密钥(可以用自签证书,后面会说生成方法) smtpd_tls_cert_file = /etc/postfix/smtpd.cert smtpd_tls_key_file = /etc/postfix/smtpd.key # 允许局域网内的嵌入式设备连接(替换成你的设备IP或局域网网段) mynetworks = 127.0.0.0/8 192.168.1.0/24
如果你的嵌入式设备不验证服务器证书,可以加一行跳过验证:
smtpd_tls_ask_ccert = no
要是设备需要验证证书,就生成自签证书并导入到设备的信任存储里:
sudo postfix genkey
按照提示完成生成,证书和密钥会自动放到上面配置的路径里。
2. 配置转发端(对接公共邮件服务器)
继续在main.cf里添加/修改以下参数:
# 转发时强制使用TLSv1.2及以上版本,彻底禁用旧版本 smtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1, TLSv1.2, TLSv1.3 # 指定你的公共邮件服务器地址和端口(587是常用的提交端口) relayhost = [smtp.yourpublicserver.com]:587 # 开启SMTP认证(公共服务器几乎都需要身份验证) smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous # 强制转发时使用加密连接 smtp_tls_security_level = encrypt
三、配置SMTP认证信息
创建sasl_passwd文件存储公共邮件服务器的账号密码:
sudo nano /etc/postfix/sasl_passwd
写入内容(替换成你的实际邮箱信息):
[smtp.yourpublicserver.com]:587 your-email@example.com:your-password
然后生成哈希映射文件并设置严格权限(避免密码泄露):
sudo postmap /etc/postfix/sasl_passwd sudo chmod 600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
四、重启服务并测试
重启Postfix让配置生效:
sudo systemctl restart postfix
测试方法:
- 用嵌入式设备直接发邮件到目标地址,查看树莓派的邮件日志
/var/log/mail.log,确认接收时用了TLSv1.1,转发时用了TLSv1.2+。 - 也可以在树莓派本地快速测试:
echo "测试邮件内容" | sendmail -v your-target-email@example.com
观察日志里的TLS版本信息是否符合预期。
注意事项
- 要是用Gmail这类公共邮箱,可能需要开启应用专用密码(不推荐用普通密码或开启“不太安全的应用”)。
- 嵌入式设备如果验证证书,一定要把树莓派的自签证书导入设备的信任列表,否则设备会拒绝发送邮件。
- 定期检查
/var/log/mail.log,排查可能的连接或认证错误。
备注:内容来源于stack exchange,提问作者Hans
相关产品推荐
相关产品推荐

