我需要创建一个外发邮件过滤器。如果“收件人”包含指定的电子邮件地址,则复制邮件。我有:
# rule:[Copy to slack]
if address :contains "to" "[email protected]"
{
redirect :copy "[email protected]";
}
我尝试
# rule:[Copy to slack]
if address :contains "to" "[email protected]"
{
redirect :copy "[email protected]";
}
或者
# rule:[Copy to ]
if address :contains "to" "[email protected]"
{
fileinto "INBOX.Redmine";
}
但每次过滤器都不起作用。
这仅当我从“收件人”或其他本地邮件中的地址发送时才有效。
有任何想法吗?
答案1
它不起作用,因为它不能以这种方式工作:如果您正在发送邮件,您会将其直接发送到端口 465 到 Postfix - 不会执行任何 Sieve 脚本。
如果您想使用筛选语言来处理外发邮件,您将不得不付出更多的努力,因为它不能很好地集成到常用软件中,至少不如 Dovecot 中的 Pigeonhole Sieve 集成那么好,它只会在两个特定用例中触发:
- 收到邮件时,又称最终交付发往 Dovecot 管理的邮箱的邮件阶段,或
- 管理邮箱,特别是本地或 IMAP 连接的客户端对 Dovecot 管理的邮箱的操作。
值得注意的是,该集成不会处理邮件提交的情况:虽然 Dovecot 确实包含提交代理,但它通常根本不涉及该方向,并且在极少数情况下使用它,然后仍然不处理 Sieve。
您现在有几种选择:
- 在存储到“已发送”邮箱的邮件上触发脚本(但不会对未存储在该邮箱中的邮件起作用)
- 用 Postfix 的内置功能替换您的脚本。收件人密件抄送地图想到
- 配置 postfix
header_checks
以简单地拒绝不符合您的策略的邮件(例如,跳过所需的收件人:标题,然后拒绝所有不完整的版本) - 在某些过滤器中配置副本
- 配置一个(最好是新的本地)地址,将其扩展到您想要接收邮件的两个地址,让用户将邮件发送到那里
- 将该收件人的邮件通过管道传输到脚本,可能是使用 Sieve 脚本的脚本(这不太可能:现有软件无法很好地支持在 LDA 用例之外使用 Sieve)