为什么要根据我的邮件服务器的 IP 而不是发件人的 IP 验证 SPF?

Hon*_*Lai 6 email email-server postfix spf

我有一个邮件服务器“example.com”,它将所有收件人为“me@example.com”的电子邮件转发到“me@gmail.com”。我的邮件服务器运行 Postfix,它使用 virtual_alias_maps 机制来执行转发。我还为“example.com”安装了 SPF 记录:

v=spf1 a include:aspmx.googlemail.com ~all
Run Code Online (Sandbox Code Playgroud)

问题是,每当有人向“me@example.com”发送邮件时,Gmail 都会根据 example.com 的 IP 地址验证 example.com SPF 记录!我认为它应该根据原始发件人的 IP 地址进行验证。

例如,我使用笔记本电脑连接家庭互联网。我按如下方式连接到 example.com 的邮件服务器:

$ telnet example.com 25
20 example.com ESMTP Postfix (Debian/GNU)
HELO my-laptop.local
250 example.com
MAIL FROM:<me@gmail.com>
250 2.1.0 Ok
RCPT TO:<me@example.com>
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
From: me@gmail.com
To: me@example.com
Subject: test

test
.
250 2.0.0 Ok: queued as CE5F42200F9
Run Code Online (Sandbox Code Playgroud)

现在,当我在 Gmail 中打开该邮件并查看其来源时,会看到以下标题:

Delivered-To: me@gmail.com
Received: by 10.231.219.195 with SMTP id hv3csp61494ibb;
        Sat, 14 Jul 2012 02:15:58 -0700 (PDT)
Received: by 10.229.135.5 with SMTP id l5mr2360326qct.5.1342257358291;
        Sat, 14 Jul 2012 02:15:58 -0700 (PDT)
Return-Path: <me@gmail.com>
Received: from example.com [EXAMPLE.COM's IP ADDRESS HERE]
        by mx.google.com with ESMTP id u9si4262071qcv.89.2012.07.14.02.15.58;
        Sat, 14 Jul 2012 02:15:58 -0700 (PDT)
Received-SPF: neutral (google.com: [EXAMPLE.COM's IP ADDRESS HERE] is neither permitted nor denied by domain of me@gmail.com) client-ip=[EXAMPLE.COM's IP ADDRESS HERE];
Authentication-Results: mx.google.com; spf=neutral (google.com: [EXAMPLE.COM's IP ADDRESS HERE] is neither permitted nor denied by domain of me@gmail.com) smtp.mail=me@gmail.com
Date: Sat, 14 Jul 2012 02:15:58 -0700 (PDT)
Message-Id: <500138ce.c995e50a.6e4a.ffffd12aSMTPIN_ADDED@mx.google.com>
Received: from my-laptop.local ([LAPTOP's IP ADDRESS HERE])
    by example.com (Postfix) with SMTP id CE5F42200F9
    for <me@example.com>; Sat, 14 Jul 2012 09:15:44 +0000 (UTC)
From: me@gmail.com
To: me@example.com
Subject: test
Run Code Online (Sandbox Code Playgroud)

正如您在 Received-SPF 和 Authentication-Results 中看到的,SPF 记录正在根据 [EXAMPLE.COM's IP ADDRESS] 而不是 [LAPTOP's IP ADDRESS] 进行验证。

为什么会发生这种情况,我该如何解决这个问题?

pQd*_*pQd 10

谷歌 [或其他任何人] 将再次验证他们看到连接到他们的 IP 地址的 spf。在这种情况下,它将是您的 postfix 服务器的 IP 地址;你无法修复它 - 这是设计使然......

按照设计,spf 在转发方面存在“问题”,除非消息被“重新打包”并且发件人地址重写为转发者之一。