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

Exim4配置ACL拦截特定域名失效问题排查求助

Exim4 拦截qq.com发件人规则失效问题排查与修复

问题根源分析

第一种配置的错误点

  1. 条件参数误用:domains = +deny_sender 匹配的是收件人域名,而非发件人域名,完全不符合拦截发件人的需求,应该使用sender_domains参数匹配发件人域名。
  2. domainlist格式错误:/etc/exim4/deny_sender中写*@qq.com、.*@qq.com是错误的,domainlist用于匹配域名,只需直接写入域名qq.com即可,不需要@前缀或通配符前缀。

第二种配置的错误点

  1. 文件路径不匹配:配置中指定的文件是/etc/exim4/deny_senders(末尾多了s),但实际文件是deny_sender,路径不一致导致lookup无法找到规则,自然不会生效。
  2. lookup逻辑可选优化:如果是拦截整个域名,直接匹配sender_address_domain(发件人域名部分)比匹配完整sender_address更高效。

正确配置方案

方案一:使用domainlist匹配发件人域名

  1. 修改exim4.conf配置:
    # 定义要拦截的发件人域名列表
    domainlist deny_sender_domains = /etc/exim4/deny_sender_domains
    ...
    begin acl
    acl_check_sender:
      deny
        sender_domains = +deny_sender_domains
        message = Mail rejected; Sender domain qq.com is blocked
    
  2. 创建/修改/etc/exim4/deny_sender_domains文件,内容仅需:
    qq.com
    

方案二:使用lookup匹配发件人地址/域名

如果需要更灵活的匹配(比如拦截特定邮箱而非整个域名),可以用lookup:

  1. 修改exim4.conf的ACL规则:
    begin acl
    acl_check_sender:
      deny
        # 匹配发件人域名是否在拦截列表中
        condition = ${lookup{$sender_address_domain}lsearch{/etc/exim4/deny_sender_domains}{yes}{no}}
        message = Mail rejected; Sender domain qq.com is blocked
    
    若要拦截完整邮箱地址,改为:
    condition = ${lookup{$sender_address}lsearch{/etc/exim4/deny_sender_addresses}{yes}{no}}
    
  2. 对应文件内容:
    • 拦截域名:/etc/exim4/deny_sender_domains写入qq.com
    • 拦截完整地址:/etc/exim4/deny_sender_addresses写入*@qq.com

生效步骤

  1. 检查配置语法是否正确:
    exim -bV
    
  2. 重启Exim服务:
    systemctl restart exim4
    
  3. 可选:模拟SMTP会话测试规则(替换yourdomain.com为你的服务器域名):
    exim -bh 127.0.0.1
    # 输入以下内容测试
    HELO test
    MAIL FROM:<test@qq.com>
    
    如果规则生效,会直接返回拒绝信息。

内容的提问来源于stack exchange,提问作者terra3110

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 03:52:40