我最近开始在我的 postfix 服务器上配置地址,并与同事一起遇到了一个问题。
假设我有一个别名 [电子邮件保护]
如果我们发送到同一个域,即别名,则一切都运行正常并且电子邮件已送达,但让我们深入研究其他域问题,因为电子邮件立即因此错误而反弹:
<[email protected]> (expanded from <[email protected]>): host
mx.foo.net[144.76.75.247] said: 550 You must be authenticated (in
reply to RCPT TO command)
幸运的是,这个其他域名的所有者是我的同事,所以我先向他们提出了这个问题。我们做了一些调查,发现这封电子邮件不仅仅是从[电子邮件保护],而是冒充别人发送的。
为了更好地理解这个问题,我建议你看一下发送给[电子邮件保护],被 foo.net 服务器拒绝。
Delivered-To: [email protected]
Received: by 10.140.108.54 with SMTP id i51csp86667qgf;
Thu, 24 Apr 2014 04:54:02 -0700 (PDT)
X-Received: by 10.14.246.1 with SMTP id p1mr2029071eer.20.1398340441786;
Thu, 24 Apr 2014 04:54:01 -0700 (PDT)
Return-Path: <[email protected]>
Received: from bar.ru (bar.ru. [47.175.193.55])
by mx.google.com with ESMTPS id p8si7998323eew.276.2014.04.24.04.54.01
for <[email protected]>
(version=TLSv1 cipher=RC4-SHA bits=128/128);
Thu, 24 Apr 2014 04:54:01 -0700 (PDT)
Received-SPF: fail (google.com: domain of [email protected] does not designate 47.175.193.55 as permitted sender) client-ip=47.175.193.55;
Authentication-Results: mx.google.com;
spf=hardfail (google.com: domain of [email protected] does not designate 47.175.193.55 as permitted sender) [email protected];
dkim=pass [email protected]
Received: from mx.foo.net (mx.foo.net [144.76.75.247])
by bar.ru (Postfix) with ESMTPS id BC4E9BC0031
for <[email protected]>; Thu, 24 Apr 2014 15:54:00 +0400 (MSK)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=foo.net; s=default;
h=Content-Transfer-Encoding:Content-Type:Subject:To:MIME-Version:From:Date:Message-ID; bh=Sr6qzI6M/AdTYgu33PjdinGA745C3GUCsXevUC1TgDI=;
b=DpO1qnFhn+Srhuuj+2bzi4bUOoMOAr4tSRqK/sbz0gt5Ogp+RK9BJQTpix5oPoebo7M7MYIV+zHlzTdJnpPa0FSa4WTewvYxOE81CX/+k/VLQdK1SPcbdPSRACzKsS3Jq7QE9XKK1maW8s0syGbToGT/KNXHkeBKtP6QhIrUs3Y4=;
Envelope-to: [email protected]
Delivery-date: Thu, 24 Apr 2014 13:54:00 +0200
Message-ID: <[email protected]>
Date: Thu, 24 Apr 2014 14:53:54 +0300
From: Vitali R <[email protected]>
User-Agent: Mozilla/5.0 (X11; Linux i686; rv:16.0) Gecko/20121028 Thunderbird/16.0.2
MIME-Version: 1.0
To: [email protected]
Subject: hello world this is alias test
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
testest
Received-SPF: fail (google.com: domain of [email protected] does not designate 47.175.193.55 as permitted sender) client-ip=47.175.193.55;
他是正确的,11.111.111.11 确实不指向 otherdomain.com,因为 47.175.193.55 是服务器的 IP,电子邮件就是通过该服务器(通过别名)发送的。
简单来说,服务器冒充自己发送电子邮件[电子邮件保护],而实际上它是从 bar.ru 发送的,并且我的同事的服务器因此拒绝了一封信件。
我知道这可能看起来令人困惑,但请看这个。你可以向几乎任何服务器发送一封信,告诉服务器你通过电子邮件发送了这封信,但你显然无权访问该服务器。这几乎就是此处别名问题所发生的情况。
您对此类问题会作何反应?您认为拒绝电子邮件是否合适?
答案1
Postfix 接收邮件并将其转发到别名的方式是完全正确的。当然,由于发件人来自外部域,并且您已创建外部域的别名,因此接收服务器会注意到您实际上不应该从您不负责的域发送邮件。有些服务器反对向他们发送邮件,声称来自他们负责的域。这并非不合理,考虑到如今发送的垃圾邮件数量,这甚至可能是明智的。
有多种方法可以解决这个问题。
不要使用您不负责的域中的电子邮件创建别名。这有限制,但也是解决问题的最简单方法。
使用smtp_通用_映射,这将需要创建条目以将错误的地址映射到正确的地址,例如,当然,这将需要为要映射的每封电子邮件创建一个条目,并为您不知道的电子邮件创建一个通用条目:将重写任何地址为,但不包括。这会产生消除原始发件人的副作用。如果您想回复发送原始消息的人,这不是很好。
[email protected] [email protected]
@foo.net [email protected]
@foo.net
[email protected]
[email protected]
如果别名发送到的服务器是您的账户,sender_dependent_relayhost_maps可能是一个有效的解决方案,因为它允许 postfix 提供远程服务器在这种情况下要求的身份验证。缺点:它只在发送方是映射中配置的发送方时提供身份验证,当然,它只能解决单个服务器的问题。如果您只有几个类似情况的例子,那么这可能是最好的解决方法。