我正在我的VPS上设置一个邮件服务器,为了防止垃圾邮件和被标记为垃圾邮件,我启用了SPF,DKIM和DMARC。但是,我不想托管自己的邮箱,所以我将收到的邮件转发到外部邮件帐户,例如Gmail。转发的问题是它破坏了SPF检查。这可以通过使用SRS来修复,SRS重写发件人地址以匹配邮件服务器的地址。
在发送邮件时,我已经将Gmail配置为通过我的邮件服务器发送邮件。在这种情况下,SPF、DKIM和DMARC将通过,但只有当SRS被禁用时,否则SRS将导致发送地址域不再与FROM标头域匹配,这是DMARC传递的一个要求。
因此,我的问题是,如何在转发时启用SRS,但在发送时阻止它启用?
这里是一些更多的背景。邮件服务器正在运行Ubuntu12.04 LTS,并使用以下软件:
据我所知,有一些邮件客户端需要PTR、MX、EHLO和邮件横幅引用相同的域。而且,由于我使用VPS的不仅仅是一个邮件服务器,所以我选择将它们设置为VPS的主机名,比如vps.tld。
要启用PostSRSD,必须向/etc/postfix/main.cf添加以下行:
sender_canonical_maps = tcp:127.0.0.1:10001
sender_canonical_classes = envelope_sender
recipient_canonical_maps = tcp:127.0.0.1:10002
recipient_canonical_classes = envelope_recipient, header_recipient但这将使SRS在一般情况下,而不仅仅是在转发时。这似乎是邮件服务器的一个常见用例,所以我希望有一个解决方案。
以下是请求的postconf -n的输出:
alias_maps = hash:/etc/postfix/aliases
append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
milter_default_action = accept
mydestination = vps.tld, localhost
mydomain = vps.tld
myhostname = vps.tld
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
non_smtpd_milters = $smtpd_milters
recipient_canonical_classes = envelope_recipient, header_recipient
recipient_canonical_maps = tcp:127.0.0.1:10002
recipient_delimiter = +
sender_canonical_classes = envelope_sender
sender_canonical_maps = tcp:127.0.0.1:10001
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtp_tls_loglevel = 1
smtp_tls_security_level = may
smtpd_milters = inet:127.0.0.1:8891, inet:127.0.0.1:8893
virtual_alias_domains = domain1.tld domain2.tld domain3.tld
virtual_alias_maps = hash:/etc/postfix/virtual发布于 2015-07-17 13:56:54
解决我的问题的一个方法是让SRS_EXCLUDE_DOMAINS设置的PostSRSD包含我发送邮件的所有域。我之前已经尝试过了,甚至在发布这个问题之前,但是在定义了这个设置之后,PostSRSD就不会再启动了,所以我希望有一个不同的解决方案。显然,PostSRSD在此设置上有一个错误,因为上面的注释清楚地指出,可以使用空格分隔域:按空格或逗号分隔多个域。但这样做将使其无法启动。用逗号替换空格可以修复这个问题。
我没有解决这个问题,因为我对其他解决办法很感兴趣。
发布于 2016-06-01 18:42:46
如果您这样做,您可以动态地排除域,而不是(或者除了) SRS_EXCLUDE_DOMAINS:
sender_canonical_maps = mysql:/etc/postfix/no-srs.cf,tcp:127.0.0.1:10001
recipient_canonical_maps = mysql:/etc/postfix/no-srs.cf, tcp:127.0.0.1:10002我发现这个非常有用的信息,这里有更多的细节和例子:https://github.com/roehling/postsrsd/issues/42#issuecomment-149690471
https://serverfault.com/questions/706227
复制相似问题