ker*_*ero 6 email-server postfix amazon-web-services amazon-ses
我们有一个设置,其中 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
Run Code Online (Sandbox Code Playgroud)
使用first_header_checks
/^From:(\s)?(.*)/i PREPEND X-Original-From: $2
/^To:(\s)?(.*)$/i PREPEND X-Original-To: $2
Run Code Online (Sandbox Code Playgroud)
第二个标头检查
/^From:(.*)/i REPLACE From: <no-reply@verified-domain.com>
Run Code Online (Sandbox Code Playgroud)
发件人_规范
/.*/ user@verified-domain.com
Run Code Online (Sandbox Code Playgroud)
发件人访问权限
/(.*)/ prepend Reply-To: <$1>
Run Code Online (Sandbox Code Playgroud)
这对于收到的邮件非常有效。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>
Run Code Online (Sandbox Code Playgroud)
问题是,从服务器发出的邮件也会发生这种情况。假设 me@verified-domain.com 发送一封邮件,发件人被重写为无回复,并且将设置回复。我想解决这个问题。邮件标头应该只针对将要转发的传入邮件进行重写。
我尝试过使用像!/^From:(\s)?(.*@verified-domain\.com)/but 这样的正则表达式,到目前为止还没有成功。
Postfix 2.1 及更高版本支持regex和pcre表中的条件运算符。在您的情况下,second_header_checks使用这些条件应该如下所示:
if !/^From:(.*)@verified-domain.com/i
/^From:(.*)/i REPLACE From: <no-reply@verified-domain.com>
endif
Run Code Online (Sandbox Code Playgroud)
您可以测试您的查找表,而无需实际发送如下内容:
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 $
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10982 次 |
| 最近记录: |