Postfix
為特定的“to”地址重寫“from”
我們有一個設置,其中 postfix 通過 Amazon SES 中繼發送郵件。除電子郵件轉發外,一切正常。
雖然至少在這里和這裡已經討論過這個話題,但仍有一些我無法理解的觀點。
問題是 Amazon SES 不會發送
From:
未驗證的電子郵件。因此,當內部地址要轉發到外部並且發件人也是外部時,郵件將不會被發送。為了解決這個問題,我們目前在 main.cf 中使用以下配置
header_checks = regexp:/etc/postfix/first_header_checks smtp_header_checks = regexp:/etc/postfix/second_header_checks sender_canonical_maps = regexp:/etc/postfix/sender_canonical sender_canonical_classes = envelope_sender smtpd_data_restrictions = check_sender_access pcre:/etc/postfix/sender_access
使用 first_header_checks
/^From:(\s)?(.*)/i PREPEND X-Original-From: $2 /^To:(\s)?(.*)$/i PREPEND X-Original-To: $2
second_header_checks
/^From:(.*)/i REPLACE From: <no-reply@verified-domain.com>
sender_canonical
/.*/ user@verified-domain.com
sender_access
/(.*)/ prepend Reply-To: <$1>
這對於傳入的郵件非常有用。user@external.com 將郵件發送到 me@verified-domain.com 並轉發到 new@another-external.com
Reply-To: <user@external.com> X-Original-To: <me@verified-domain.com> To: new@another-external.com From: <no-reply@verified-domain.com> X-Original-From: <user@external.com>
問題是,從伺服器傳出的郵件也會發生這種情況。假設 me@verified-domain.com 發送了一封郵件,發件人被重寫為無回复,並且將設置回复。我想解決這個問題。郵件標題應該只為將被轉發的傳入郵件重寫。
我嘗試過使用正則表達式,
!/^From:(\s)?(.*@verified-domain\.com)/
但到目前為止沒有運氣。
Postfix 2.1 及更高版本支持
regex
和pcre
表中的條件運算符。在您的情況下second_header_checks
,使用這些條件應該如下所示:if !/^From:(.*)@verified-domain.com/i /^From:(.*)/i REPLACE From: <no-reply@verified-domain.com> endif
您可以測試您的查找表,而無需實際發送如下任何內容:
peter@mail:~peter $ cat msgheaders From: <peter@external.com> To: new@another-external.com peter@mail:~peter $ postmap -hmq - regexp:/etc/postfix/second_header_checks < msgheaders From: <peter@external.com> REPLACE From: <no-reply@verified-domain.com> peter@mail:~peter $ cat msgheaders-1 From: <peter@verified-domain.com> To: new@another-external.com peter@mail:~peter $ postmap -hmq - regexp:/etc/postfix/second_header_checks < msgheaders-1 peter@mail:~peter $