email - 在筛选中测试 "Received"电子邮件 header

标签 email sieve-language

这是我如何配置 sieve 以将发送到 [nameA|nameB|nameC]@example.org 的所有邮件转发到我的私有(private)电子邮件地址的示例。

if address :localpart :is ["To","Cc","Bcc"]
 ["nameA", "nameB", "nameC"] {
    redirect "<my private email address>";
    stop;
}

但有时,电子邮件不会被转发,因为它被发送到的地址隐藏在“已接收” header 中的某个地方。

Received: from ###server### ([###ip_address###])
    by ###server### with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256)
    (Exim 4.84)
    (envelope-from <###email_address###>)
    id 1alDM0-0000yT-60
    for nameA@example.org; Wed, 30 Mar 2016 12:28:00 +0200

是否也有一种有效的方法可以在筛选规则中捕获这些电子邮件?

最佳答案

这里有一个 XY 问题。您实际上想在这里做的是根据传递到的地址进行过滤,而不是标题中的地址。 (尽管可能不直观, header 中的地址可能与它被传送到的地址无关,而这正是 Bcc 的工作方式。)

针对实际 SMTP 信封进行测试的命令是 envelope .

require "envelope";
if envelope :localpart :is "to" ["nameA", "nameB", "nameC"] {
    redirect "<my private email address>";
    stop;
}

这将处理所有发送到这些名称的邮件,无论它们是否出现在邮件 header 中。

关于email - 在筛选中测试 "Received"电子邮件 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36306660/

相关文章:

regex - 如何匹配第一对方括号内的所有内容

php - 为什么不推荐使用 PHP 邮件功能发送批量电子邮件?

email - 新产品到达 magento 时自动向客户发送邮件提醒

php - 带附件的电子邮件 Cron 作业

sieve-language - Sieve 将邮件随机分配到文件夹

thunderbird - Sieve addflag "$label1"在 Thunderbird 中不显示

cakephp - 如何通过电子邮件控制Web应用程序?或者如何通过发送电子邮件来运行php脚本?

email - 使用 Gmail 设置 Emacs Rmail

"Received"电子邮件 header 的正则表达式匹配时间

regex - 筛邮件正则表达式不起作用