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

AlmaLinux 9环境下高度定制化Sendmail迁移至Postfix的配置适配技术咨询

AlmaLinux 9环境下高度定制化Sendmail迁移至Postfix的配置适配技术咨询

嗨,我来帮你梳理下从Sendmail迁移到Postfix时遇到的这些配置适配问题,咱们一步步拆解解决:

一、现有Sendmail access规则的迁移确认

大部分你列出的/etc/mail/access规则可以直接(或少量调整后)迁移到Postfix的/etc/postfix/access,我帮你逐一核对:

  • 中继允许规则:Sendmail的Connect:x.x.x.x RELAY完全对应Postfix的x.x.x.x RELAY(Postfix默认识别客户端地址条目,无需加Connect:前缀),像127.0.0.1 RELAY、123.44.55 RELAY这类可以直接复制;
  • 收件人允许规则:To:company.example.com OK可以直接保留格式,Postfix会识别To:前缀匹配收件人地址;
  • 发件人拦截规则:From:document@company.example.com ERROR:5.7.1:550 Fake source address这类也可直接复制,Postfix支持ERROR:格式的返回码和提示语;
  • 纯域名拦截规则:注意Sendmail里的accountants ERROR:...这类纯域名条目,Postfix默认会匹配客户端地址,如果你是要拦截发件人域名,得改成From:@accountants ERROR:5.7.1:550 Domain used to send spam,明确指定匹配发件人域名;
  • 退休用户拦截:To:aaron@ ERROR:550 No such user也可直接保留,Postfix会匹配所有收件人地址前缀为aaron@的邮件。

二、Sendmail延迟/限速规则的Postfix替代方案

你提到的greet_pause、ratecontrol、conncontrol这些Per-client的控制,Postfix没有完全同名的参数,但可以通过组合配置实现相同效果:

1. 问候延迟(GreetPause)

Sendmail的GreetPause是在服务器发送问候语前的延迟,Postfix可以通过check_client_access在access表中使用sleep动作实现:

  • 在/etc/postfix/main.cf中确保启用了客户端检查:
    smtpd_client_restrictions =
        check_client_access hash:/etc/postfix/access,
        permit_mynetworks,
        ... # 其他原有规则
    
  • 在/etc/postfix/access中添加对应条目(单位是秒,1秒=1000毫秒,所以400毫秒就是0.4):
    batchmanager.company.example.com sleep 0.4
    company.example.com sleep 0
    mailinglist.company.example.com sleep 0
    127.0.0.1 sleep 0
    friend.other.com sleep 0.02
    friendly.other.gov sleep 0.02
    10.44 sleep 0
    
  • 执行postmap /etc/postfix/access生效。

2. 消息速率限制(ClientRate)

Sendmail的ClientRate控制单位时间内的消息数量,Postfix用smtpd_client_message_rate_limit全局控制,配合access表的rate_limit动作实现Per-client配置:

  • 全局默认值(对应Sendmail的confCONNECTION_RATE_THROTTLE)在main.cf中设置:
    smtpd_client_message_rate_limit = 200
    smtpd_client_connection_rate_limit = 200 # 控制连接速率,默认窗口为60秒,对应confCONNECTION_RATE_WINDOW_SIZE
    
  • 在/etc/postfix/access中添加特定客户端的速率规则:
    123.44.55.66 rate_limit 6000
    123.44.55.77 rate_limit 60
    127.0.0.1 rate_limit 0 # 0表示不限速
    123.44.55 rate_limit 60
    
  • 执行postmap /etc/postfix/access后重载Postfix:postfix reload。

3. 并发连接限制(ClientConn)

Sendmail的ClientConn控制并发连接数,Postfix用smtpd_client_connection_count_limit全局控制,配合access表的connection_count_limit动作实现Per-client配置:

  • 全局默认值在main.cf设置(如果不需要全局限制可以留空,只配置特定客户端):
    smtpd_client_connection_count_limit = 10 # 全局默认并发数
    
  • 在/etc/postfix/access中添加特定客户端的并发规则:
    123.44.55.77 connection_count_limit 5
    123.44.55.66 connection_count_limit 500
    
  • 执行postmap /etc/postfix/access后重载服务。

三、特定域名跳过TLS(Try_TLS:NO)

Sendmail的Try_TLS:x NO对应Postfix的TLS策略映射,具体配置步骤:

  1. 在/etc/postfix/main.cf中添加TLS策略映射:
    smtp_tls_policy_maps = hash:/etc/postfix/tls_policy
    
  2. 创建/etc/postfix/tls_policy文件,添加目标域名的规则:
    yetanother.different.com none
    
    • none表示强制不使用TLS加密
  3. 执行postmap /etc/postfix/tls_policy,然后重载Postfix:postfix reload

这样Postfix发送到该域名的邮件就会跳过TLS连接,解决对方TLS配置兼容问题。

备注:内容来源于stack exchange,提问作者William Seligman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 09:38:03