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

请求编写规范的最小Sieve脚本实现特定邮件复制逻辑

请求编写规范的最小Sieve脚本实现特定邮件复制逻辑

没问题,结合你提到的Delivered-To头信息以及对地址匹配准确性的要求,我给你写一个符合RFC规范的最小Sieve脚本,完美满足你的需求:

require ["redirect", "address", "lowercase"];

if address :lowercase "delivered-to" "foo@mydomain.fr" {
    if not anyof(
        address :lowercase "to" "bar@mydomain.fr",
        address :lowercase "cc" "bar@mydomain.fr"
    ) {
        redirect "bar@mydomain.fr";
        # 如果你的服务商默认会移除原邮件,添加下面这行明确保留到收件箱;否则可省略
        # keep;
    }
}

脚本细节说明:

  • require语句:声明脚本依赖的Sieve标准扩展——address用于精准解析邮件地址(自动忽略显示名称,比如"Foo Alias" <foo@mydomain.fr>这种格式),lowercase实现大小写不敏感匹配,redirect用于发送邮件副本。
  • 外层条件判断:address :lowercase "delivered-to" "foo@mydomain.fr"确保只触发那些最终投递到foo@mydomain.fr的邮件,不管是直接发送、Bcc还是通过其他地址转发过来的,都能准确识别。
  • 内层排除逻辑:not anyof(...)用来过滤掉已经把bar@mydomain.fr列为收件人(To/Cc)的邮件,避免重复发送。这里同样用address :lowercase做匹配,完全不用担心显示名称、大小写或者字符串误匹配的问题。
  • redirect命令:发送邮件副本到bar@mydomain.fr,原邮件默认会保留在你的收件箱;如果你的服务商有特殊处理逻辑,可以取消注释keep语句强制保留。

额外注意事项:

  • 先确认你的邮件服务商支持address和lowercase这两个Sieve扩展(它们都是标准扩展,绝大多数支持Sieve的服务商都会提供)。
  • 测试时可以分场景验证:比如用Bcc发送到foo@mydomain.fr,检查是否触发副本;再发送一封To:foo+Cc:bar的邮件,确认不会重复发送给bar。
  • 如果后续需要添加更多别名规则,只需要在外层if里用or扩展条件即可,比如:
    if anyof(
        address :lowercase "delivered-to" "foo@mydomain.fr",
        address :lowercase "delivered-to" "baz@mydomain.fr"
    ) {
        # 后续逻辑不变
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 07:39:31