公司有员工离职前给全公司人群发一份离职邮件,近日老板比较不爽,认为这样的负能量会影响士气,要求禁止此类邮件发生。部门领导给的办法是根据关键字禁止。先按领导的意思办咯,立刻开始测试。正则表达式
刚开始觉得那不是很简单么,就跟OUTLOOK内设置就好了。因而按下面的步骤处理:ide
找到“组织配置”->“集线器传输”->"传输规则"页面,在页面内右键“新建传输规则”。测试
在起好规则名字后,选择条件窗口内,勾选“主题字段包含特定词语时”,并添加要检查的词语,而后下一步设置好处理操做措施。网站
建完后的结果以下:ui
用命令行执行:New-TransportRule -Name '测试规则' -Comments '' -Priority '0' -Enabled $true -SubjectContainsWords '告别' -DeleteMessage $truespa
设置完测试时,傻眼了,只能精确匹配。关键字前或后随便加一个字规则就不能生效了。不是写的“包含”吗?微软你在玩什么?官方网站上竟然这么写:精确匹配!并且*号什么的都不能用!那还用个卵!命令行
只有换一种思路,找其余方法了。通过坚苦卓绝地努力,在官方文档内(https://technet.microsoft.com/zh-cn/library/dd638183(v=exchg.141).aspx) 的表3“传输规则谓词中使用的属性类型”中发现了这个玩意儿:3d
就是嘛,正则表达式是能够用的嘛。这就好办了。赶忙点击那个“传输规则中的正则表达式”,打开网页:https://technet.microsoft.com/zh-cn/library/aa997187(v=exchg.141).aspx 哈哈,一目了然了。原来上面那种精确匹配的是“简单表达式”,我应该用的是(并且正常状况也是用这个多点吧)“正则表达式”。orm
用正则表达式实现:blog
在选择条件时,应该勾选“主题字段与文本模式匹配时”,而不是“包含特定词语”!
而后在“指定文本模式”窗口内,只须要输入计划过滤的词语,就能够实现非精确匹配了。
用命令行实现:New-TransportRule -Name '禁止离职群发邮件' -Comments '' -Priority '0' -Enabled $true -SubjectMatchesPatterns '告别' -DeleteMessage $true
添加多个词语:
Set-TransportRule -Identity '禁止离职群发邮件' -Name '禁止离职群发邮件' -Comments '' -SubjectMatchesPatterns '告别','离职','分别','离开'
设置过程当中,还有一个比较有趣的玩意儿,就是关于“*”通配符的做用。刚开始觉得先后都要加了*才能实现模糊匹配。后来才发现什么都不加就能够了。那么加了是什么个意思呢?通过测试,原来*加到前面是不容许的:
若是词语是两个汉字,“*”加到词语的后面和加到词语中间都是同样的效果,都表示这两个字前面后面中间均可以加其余字符而模糊匹配。
若是是三个以上的汉字,状况很复杂,通过一天测试,仍无法找到规律。
查询状态:
第一种:
C:\Windows\system32>get-transportrule "测试规则" |format-list
SubjectContainsWords : {告别}
第二种:
C:\Windows\system32>Get-TransportRule "禁止离职群发邮件" | format-list
SubjectMatchesPatterns : {告别, 离职, 分别, 离开}