我使用Postfix MTA並從破損的MTA(我無法修復,因爲它不在我的控制下)中獲取重要郵件,該郵件以以下格式發送:postfix pcre正則表達式來匹配和替換子字符串
RCPT TO: <+49 (681) 12345678>
我需要的是:
RCPT TO: 4968112345678
所以我要尋找一個正則表達式,而如果該字符串開頭首先檢查「RCPT TO:」如果這是真的,它需要刪除所有特殊之後的字符,因此只剩下[a-zA-Z0-9]。
後綴船舶這樣regex'es一個例子:
# Work around clients that send RCPT TO:<'[email protected]'>.
# WARNING: do not lose the parameters that follow the address.
#/^RCPT\s+TO:\s*<'([^[:space:]]+)'>(.*)/ RCPT TO:<$1>$2
但幾個小時後,我無法使它適應我的需要。
由於提前, 馬科
這按預期工作。非常感謝。我使用的是smtpd_command_filter,它是修改破損客戶端的smtp對話框的低級方法。 – mgabriel
不幸的是,它不起作用。我以「RCPT TO:」開頭的輸入不匹配,只有沒有<>的號碼匹配。但這不起作用。 – mgabriel
@mgabriel對於smtpd_command_filter試試這個正則表達式:'/^RCPT \ s + TO:\ s + <[^ a-z0-9] *([a-z0-9] +)[^ a-z0-9] *( [a-z0-9] +)[^ a-z0-9] *([a-z0-9] +)> $/RCPT TO:<$1$2$3>' – citrin