我们有一个设置,后缀通过亚马逊SES中继发送邮件。 除了电子邮件转发,所有工作都很好。
虽然这个话题至less已经在这里和这里讨论过了 ,但还是有一些我无法理解的地方。
问题是Amazon SES不会发送电子邮件,其中From:未validation。 所以当一个内部地址要转发到外部,并且发送者也是外部的,邮件将不会被发送。
为了解决这个问题,我们目前在main.cf中使用以下configuration
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: <[email protected]>
sender_canonical
/.*/ [email protected]
sender_access
/(.*)/ prepend Reply-To: <$1>
这对收到的邮件很有用。 [email protected]将邮件发送至[email protected],并将其转发至[email protected]
Reply-To: <[email protected]> X-Original-To: <[email protected]> To: [email protected] From: <[email protected]> X-Original-From: <[email protected]>
这个问题,这也发生从服务器的传出邮件。 说我[email protected]发送一封邮件,将从重写到不答复和回复将被设置。 这我想修复。 邮件标题只能被重写的传入邮件将被转发 。
我曾尝试使用正则expression式,如!/^From:(\s)?(.*@verified-domain\.com)/但到目前为止没有运气。
Postfix 2.1及以上版本支持regex和pcre表格中的条件运算符。 在你的情况下,使用这些条件的second_header_checks应该是这样的:
if !/^From:(.*)@verified-domain.com/i /^From:(.*)/i REPLACE From: <[email protected]> endif
你可以testing你的查询表,而不用实际发送这样的东西:
peter@mail:~peter $ cat msgheaders From: <[email protected]> To: [email protected] peter@mail:~peter $ postmap -hmq - regexp:/etc/postfix/second_header_checks < msgheaders From: <[email protected]> REPLACE From: <[email protected]> peter@mail:~peter $ cat msgheaders-1 From: <[email protected]> To: [email protected] peter@mail:~peter $ postmap -hmq - regexp:/etc/postfix/second_header_checks < msgheaders-1 peter@mail:~peter $
我试图做一些非常类似于这个不同的电子邮件服务,我怎么解决它(得到这个线程的帮助之后):
[email protected] smtp:localhost:9999 -o content_filter=smtp:[mx.somedomain.com]:25 -o smtpd_recipient_restrictions=permit_mynetworks,defer (这可能不理想,dbl在推送之前检查安全策略) 祝你好运哟,如果你需要更多的细节,我可以尝试和帮助。