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

如何在Dovecot Sieve中配置移除邮件特定附件?

在Docker-Mailserver的Dovecot Sieve中移除特定附件的配置方案

问题原因

你使用的replace指令属于Dovecot Pigeonhole的sieve_replace扩展,默认情况下Docker-Mailserver的Dovecot并未启用该扩展,因此系统无法识别这个关键字。

必要准备:启用sieve_replace扩展

  1. 在宿主机创建自定义Dovecot配置文件(比如99-sieve-replace.conf),内容如下:
    plugin {
      sieve_plugins = $sieve_plugins sieve_replace
    }
    
  2. 通过Docker挂载将该文件加入容器:
    • 若使用docker-compose,在volumes段添加:
      - ./path/to/99-sieve-replace.conf:/etc/dovecot/conf.d/99-sieve-replace.conf:ro
      
    • 若使用docker run,添加参数:
      -v ./path/to/99-sieve-replace.conf:/etc/dovecot/conf.d/99-sieve-replace.conf:ro
      
  3. 重启Docker-Mailserver容器,使配置生效。

最简Sieve规则配置(以移除.exe附件为例)

  1. 创建全局Sieve规则文件default.sieve,内容如下:
    require ["replace", "mime", "editheader"];
    
    # 匹配包含.exe后缀的附件
    if anyof(
        header :contains "Content-Type" "application/x-msdownload",
        header :matches "Content-Disposition" "*filename=*.exe*"
    ) {
        # 删除附件关联的MIME头信息
        deleteheader :mime "Content-Type";
        deleteheader :mime "Content-Disposition";
        deleteheader :mime "Content-Transfer-Encoding";
        # 替换正文内容提示用户附件已移除
        replace :mime :contenttype "text/plain" "此邮件原本包含附件,已被移除。";
        replace :mime :contenttype "text/html" "<p>此邮件原本包含附件,已被移除。</p>";
    }
    
  2. 编译Sieve文件(可进入容器执行):
    sievec /etc/dovecot/sieve/default.sieve
    
  3. 将编译后的default.svbin和原default.sieve挂载到容器的/etc/dovecot/sieve/目录,或直接放入Docker-Mailserver的config/sieve/目录(根据你的挂载配置调整)。

验证配置

  1. 进入容器执行以下命令,确认sieve_replace已加载:
    dovecot -n | grep sieve_plugins
    
    输出结果中需包含sieve_replace。
  2. 发送携带.exe附件的测试邮件,检查收件箱是否收到提示信息且附件已被移除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 10:17:30