【问题标题】:Regular Expressions in Office 365 Mail Flow RuleOffice 365 邮件流规则中的正则表达式
【发布时间】:2022-02-26 06:17:14
【问题描述】:

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

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

  • 在以下情况下应用此规则... 发件人位于 - 组织外部
  • 生成事件报告并将其发送给 - 我
  • 优先级 = 1
  • 使用严重级别审核此规则:低(已启用)
  • 此规则的模式:强制执行

至于正则表达式,我使用“发件人地址匹配...”选项并假设我的测试执行人员是“Foo Bar”,正则表达式是

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

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

是我的正则表达式问题还是 Exchange 规则中的其他设置有问题?

【问题讨论】:

    标签: regex office365 exchange-server


    【解决方案1】:

    我认为问题在于您使用“发件人地址匹配...”功能而不是“发件人”标头检查电子邮件信封发件人(即电子邮件地址,例如 foobar@gmail.com) .大多数(或所有)电子邮件伪造都会操纵此标头,因为其内容是将在邮件客户端中显示给接收者的值。

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

    大多数标头都是这样构建的:

    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 不接受以通配符结尾的正则表达式行。 (不知道为什么……)

    【讨论】:

    • 将条件更改为“消息头匹配”,正如您所描述的那样,这是我需要的部分。现在可以使用了,谢谢。
    【解决方案2】:

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

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

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

    使用 AutoIt 代码时:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-10
      • 1970-01-01
      • 2021-10-26
      相关资源
      最近更新 更多