Postfix配置咨询:实现25端口非加密连接、587端口TLS加密连接
Postfix配置咨询:实现25端口非加密连接、587端口TLS加密连接
嗨,我来帮你搞定这个Postfix端口差异化配置的问题~你担心修改main.cf会影响全局服务是对的,不过Postfix的master.cf支持给每个监听端口单独设置参数,完全可以实现25端口非加密、587端口强制TLS加密的需求,不用改动main.cf的全局配置。
具体配置步骤:
1. 修改master.cf文件
你需要给25端口(smtp服务)和587端口分别添加专属的-o参数,覆盖main.cf的全局设置。修改后的代码片段如下:
# ========================================================================== # service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (no) (never) (100) # ========================================================================== # 25端口:禁用TLS,关闭SASL认证,使用非加密连接 smtp inet n - n - - smtpd -v -o smtpd_tls_security_level=none -o smtpd_use_tls=no -o smtpd_sasl_auth_enable=no # 587端口:强制TLS加密,开启SASL认证,仅允许TLS下的认证 587 inet n - n - - smtpd -v -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_tls_auth_only=yes -o smtpd_relay_restrictions=permit_sasl_authenticated,reject # 下面的默认配置可以保留,不用改动 #smtp inet n - n - 1 postscreen #smtpd pass - - n - - smtpd #dnsblog unix - - n - 0 dnsblog #tlsproxy unix - - n - 0 tlsproxy #submission inet n - n - - smtpd # -o syslog_name=postfix/submission # -o smtpd_tls_security_level=encrypt # -o smtpd_sasl_auth_enable=yes # -o smtpd_tls_auth_only=yes # -o smtpd_reject_unlisted_recipient=no # -o smtpd_client_restrictions=$mua_client_restrictions # -o smtpd_helo_restrictions=$mua_helo_restrictions # -o smtpd_sender_restrictions=$mua_sender_restrictions # -o smtpd_recipient_restrictions= # -o smtpd_relay_restrictions=permit_sasl_authenticated,reject # -o milter_macro_daemon_name=ORIGINATING #smtps inet n - n - - smtpd # -o syslog_name=postfix/smtps # -o smtpd_tls_wrappermode=yes # -o smtpd_sasl_auth_enable=yes
参数说明:
25端口的关键参数:
-o smtpd_tls_security_level=none:完全禁用TLS,强制非加密连接-o smtpd_use_tls=no:关闭服务端的TLS支持-o smtpd_sasl_auth_enable=no:关闭SASL认证(25端口通常用于接收外部邮件或开放中继,不需要用户认证)
587端口的关键参数:
-o syslog_name=postfix/submission:让587端口的日志单独标记,方便排查问题-o smtpd_tls_security_level=encrypt:强制客户端使用TLS加密连接-o smtpd_sasl_auth_enable=yes:开启SASL认证(配合你的Cyrus-SASL+LDAP配置)-o smtpd_tls_auth_only=yes:仅允许在TLS加密连接下进行认证,避免明文传输密码-o smtpd_relay_restrictions=permit_sasl_authenticated,reject:只允许已认证的用户通过587端口中继邮件,防止滥用
2. 验证配置并重启服务
修改完成后,先检查配置是否有语法错误:
postfix check
如果没有报错,重启Postfix服务:
systemctl restart postfix
3. 测试连接
- 测试25端口:用telnet连接,应该看不到
STARTTLS的提示:
telnet your-server-ip 25
- 测试587端口:用openssl测试TLS连接是否正常:
openssl s_client -connect your-server-ip:587 -starttls smtp
如果成功,会显示证书信息和加密套件详情。
为什么这样做?
Postfix中master.cf里的-o参数优先级高于main.cf的全局配置,所以我们可以给每个监听端口单独定义规则,完全不会影响其他服务的全局设置,完美解决你的需求。
备注:内容来源于stack exchange,提问作者csx4
相关产品推荐
相关产品推荐

