Postfix

為特定的“to”地址重寫“from”

  • July 19, 2019

我們有一個設置,其中 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 及更高版本支持regexpcre表中的條件運算符。在您的情況下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 $ 

引用自:https://serverfault.com/questions/833906