
我在 Ubuntu 伺服器上使用 postfix-pcre。如果我使用以下命令測試 header_checks 配置
postmap -q 'To: "Markus Schlei" <[email protected]>' regexp:/etc/postfix/header_checks
我收到以下警告訊息:
postmap:警告:正規表示式對應 /etc/postfix/header_checks,第 36 行:前面的正規表示式無效。
而且它並不拒絕我的測試。在第 36 行我得到了這個程式碼:
/^To:.*\@(?!(gmail\.com)).*/ REJECT Test-Nr-1
我想拒絕所有與以下內容不符的訊息gmail.com
編輯1:我發現,如果我刪除“(?(..)」警告訊息消失了,但它的作用與我想要的相反。
答案1
你應該知道有POSIX正規表示式和PCRE正規表示式。
您正在使用一個負前瞻( ?!
) 與正規表示式桌子。這種類型的正規表示式僅受 PCRE 正規表示式表支援。
若要了解 Postfix 系統支援哪些類型的查找表,請使用「postconf -m」指令。
如果列出了 pcre,則只需切換到 pcre 表而不是 regexp 表。如果沒有,則必須安裝後綴PCR。