公司有員工離職前給全公司人羣發一份離職郵件,近日老闆比較不爽,認爲這樣的負能量會影響士氣,要求禁止此類郵件發生。部門領導給的辦法是根據關鍵字禁止。先按領導的意思辦咯,立刻開始測試。正則表達式
剛開始覺得那不是很簡單麼,就跟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 : {告別, 離職, 分別, 離開}