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

升级至Debian Stretch后Exim拒绝处理虚拟域名问题

解决Debian Stretch下Exim4虚拟域名别名失效问题

这是典型的Debian版本升级后Exim4配置逻辑变化导致的问题——从Jessie到Stretch,Exim4版本从4.84升级到了4.89,默认配置的本地域名识别规则做了不少调整,直接导致你之前的dc_other_hostnames配置不再生效。下面是一步步的排查和修复方案:

1. 先确认配置是否真的包含了你的别名域名

首先检查自动生成的Exim配置里,alias.domain.com是否被纳入本地域名列表:

grep "domainlist local_domains" /var/lib/exim4/config.autogenerated

如果输出里找不到alias.domain.com,说明你的dc_other_hostnames配置没被正确解析到最终运行的配置里,这就是问题的核心。

2. 修正update-exim4.conf.conf的格式

打开/etc/exim4/update-exim4.conf.conf,重点检查dc_other_hostnames字段的格式:

  • 多个域名要用空格或分号分隔(别用逗号)
  • 确保引号包裹正确,比如正确的写法:
    dc_other_hostnames='alias.domain.com;your-other-virtual-domain.com'
    

3. 重新生成配置并重启Exim4

保存配置后,执行以下命令让新配置生效:

update-exim4.conf
systemctl restart exim4

4. 若仍不生效,手动强制添加本地域名

有时候Stretch的Exim4默认配置会忽略dc_other_hostnames的部分条目,这时可以在自定义配置里强制声明:
编辑/etc/exim4/conf.d/main/00_local_settings,添加一行:

local_domains = +local_domains : alias.domain.com

之后再次执行update-exim4.conf和重启服务。

5. 验证修复效果

运行exim -bt hibak@alias.domain.com,如果返回类似以下结果,说明配置已经生效:

hibak@alias.domain.com
  router = localuser, transport = local_delivery

为什么Jessie没问题?

Jessie的Exim4会直接把dc_other_hostnames的所有域名无条件加入local_domains,但Stretch版本为了配置安全,调整了生成逻辑,部分场景下需要更明确的配置声明才能生效。

内容的提问来源于stack exchange,提问作者P.Péter

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:04:30