Office 365 邮件流规则中的正则表达式

Regular Expressions in Office 365 Mail Flow Rule

我试图在 Office 365 Exchange 中使用正则表达式邮件流规则来匹配假装是我公司高管的入站电子邮件。但是,我正在努力寻找规则接受的正则表达式,并使其足够广泛以捕获任何域。

我在测试规则中设置了以下项目:

至于正则表达式,我使用选项 "The sender address matches..." 并假设我的测试执行程序是 "Foo Bar",正则表达式是

foo\s*bar.*@.*\.\w*

我创建了一个 gmail 帐户 "Foo Bar, foobar@gmail.com" 并向我的工作帐户发送了测试电子邮件,但我没有收到发送给我的事件报告。

问题出在我的正则表达式上,还是 Exchange 规则中的某些其他设置?

我认为问题在于您正在使用 "The sender address matches..." 函数而不是 "From" Header。大多数(或所有)电子邮件伪造都操纵这个 header 因为它的内容是将在邮件客户端中显示给接收者的值。

我已经在我的 Exchange 2016 服务器上对此进行了测试(ECP 应该类似于 Office 365),这是我的解决方案: ECP mail flow rule screenshot

大多数 header 的构建方式如下:

  1. Foo Bar <foo.bar@example.com>
  2. Foo, Bar <foo.bar@example.com>

这个正则表达式匹配这些例子:

(?i)Foo.*Bar.*[a]*

(Regex101 live demo and explination)

我不得不在末尾添加这个未使用的正则表达式部分 ([a]*),因为 Exchange 不接受以通配符结尾的正则表达式行。 (我不知道为什么...)

我还发现邮件流规则中的正则表达式本身在语言类型引用方面非常特别。在 C# 中可行的内容并不总是可以转移到正则表达式的邮件流规则编辑器中。我使用 https://regex101.com/ 来编译应该工作的内容,然后使用“代码生成器”工具,然后选择“AutoIt”作为语言。 window 中的表达式在邮件流规则中完美运行。

示例: 我想在回复或转发时添加一个特定的签名(因为我们通过邮件流申请);正则表达式:

(^(?!RE:))(^(?!FW:)) 

使用 AutoIt 代码时:

'(?im)(^(?!RE:))(^(?!FW:))'