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

搭配cPanel的Exim如何仅过滤被转发的邮件

搭配cPanel的Exim如何仅过滤被转发的邮件

嘿,我完全懂你的需求——只想对通过转发规则过来的邮件做过滤,直接发送到forward@example.com这类目标地址的邮件完全不动对吧?结合cPanel+Exim的环境,给你几个靠谱的解决方案:

核心思路:区分原始收件人与当前收件人

Exim在处理转发邮件时,会记录两个关键的收件人信息:

  • $original_recipient:邮件最初被投递到的地址(也就是你设置转发的源地址,比如email@example.com)
  • $local_part@$domain:当前正在处理的最终收件人地址(也就是转发目标,比如forward@example.com)

当这两个地址不一致时,就说明这是一封被转发过来的邮件,而非直接发送到目标地址的。

具体实现(系统级sysfilter)

你已经创建了/usr/local/cpanel/etc/exim/sysfilter/options/forward_filter文件,现在只需要在里面添加过滤逻辑:

通用过滤所有转发邮件

如果想对所有被转发的邮件生效,用这个条件:

if $original_recipient ne $local_part@$domain
then
  # 这里写你的过滤操作,比如添加标记头部、修改内容、转发到其他地址等
  add_header X-Forwarded-Filtered: "This email was forwarded and filtered"
  
  # 举个例子:如果是转发到forward@example.com的邮件,自动重定向到另一个地址
  if $local_part@$domain is "forward@example.com"
  then
    redirect filtered-forward@example.com
  endif
endif

针对特定转发对过滤

如果只想处理email@example.com→forward@example.com和email2@example.com→forward2@example.com这两组转发,条件可以更精准:

# 处理第一组转发
if $original_recipient is "email@example.com" and $local_part@$domain is "forward@example.com"
then
  # 这里写针对这组的过滤操作
  add_header X-Filtered-From-Example: Yes
endif

# 处理第二组转发
if $original_recipient is "email2@example.com" and $local_part@$domain is "forward2@example.com"
then
  # 这里写针对这组的过滤操作
  add_header X-Filtered-From-Example2: Yes
endif

注意事项

  1. 修改完sysfilter文件后,记得重启Exim服务才能生效:
    service exim restart
    
    也可以在WHM面板的「服务管理」里找到Exim重启。
  2. 之前尝试的.forward文件在cPanel环境下可能不生效,因为cPanel默认用自己的过滤器系统管理用户级转发,系统级的sysfilter更适合你的需求。
  3. 可以根据实际需求调整过滤操作,比如自动回复、丢弃邮件、修改主题等,Exim的sysfilter支持很多操作,你可以按需编写。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 08:24:27