信封测试中没有子地址:详细信息部分

信封测试中没有子地址:详细信息部分

我尝试通过筛选脚本中的子地址:详细信息部分来过滤邮件。

目标是使用正则表达式模式,如这个简单的测试用例所示:

if envelope :detail :regex "to" ["^test$"]{                                                                                                             
  fileinto "Social";
  stop;
}
if envelope :detail ["to"] ["test"]{
  fileinto "Social";
  stop;
}

这两个脚本都不起作用。

如果我在我的 dovecot 配置中启用跟踪,我可以看到,筛选尝试从中提取详细信息的地址不再包含详细信息部分,而用于同一脚本中的标头测试的“to”标头则包含详细信息部分。

12: header test
12:   starting `:regex' match with `i;ascii-casemap' comparator:
12:   extracting `to' headers from message
12:   matching value `"[email protected]" <[email protected]>'
12:     with regex `.*blogs' [id=0] => 0
12:   finishing match with result: not matched
12: jump if result is false
12:   jumping to line 18
18: envelope test
18:   starting `:regex' match with `i;ascii-casemap' comparator:
18:   getting `to' part from message envelope
18:   extracting `detail' part from address `[email protected]'
18:   finishing match with result: not matched
18: jump if result is false
18:   jumping to line 22
22: envelope test
22:   starting `:is' match with `i;ascii-casemap' comparator:
22:   getting `to' part from message envelope
22:   extracting `detail' part from address `[email protected]'
22:   finishing match with result: not matched
22: jump if result is false
22:   jumping to line 32

那么,Dovecot 削减信封细节部分的原因可能是什么呢?

答案1

好吧,与 serverfaults 相关的问题建议终于让我走上了正确的轨道。

根据建议在这个解决方案中,问题不是 dovecot 或 sieve,而是 postfix。所以我在 postfix master.cf 中更改了以下行,以便不仅提交用户和域,还提交原始收件人地址。

# old
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
# new
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop} -a ${original_recipient}

相关内容