You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 15:04:29