Ip

當通過 SMTP 從一個本地郵箱發送到另一個郵箱時,由於客戶端 IP 而不是伺服器在消息中的原因,導入到 Gmail 的電子郵件的 SPF 失敗

  • January 30, 2020

我們有一個帶有域的 linux (Debian) VPS(比如說 example.com 和 MX mail.example.com),它設置了 SPF。dovecot+exim 正在執行。除此之外,還有直接管理員。

當我向外國伺服器發送郵件時,一切都很好。消息中有伺服器 IP,並且 SPF 檢查正常。

一些數據已更改(域等):

Received: from mail.example.com (mail.example.com. [188.40.153.39])
   by mx.google.com with ESMTPS id ***.7.2015.02.18.04.09.46
   for <*@gmail.com>
   (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
   Wed, 18 Feb 2015 04:09:47 -0800 (PST)
Received-SPF: pass (google.com: domain of test@example.com designates 188.40.153.39 as permitted sender) client-ip=188.40.153.39;

但是當我將它從本地郵箱發送到另一個本地郵箱,然後通過 POP3 將郵件發送到 gmail 時,我遇到了 SPF 問題,因為郵件包含原始客戶端 IP 地址並且 SPF 檢查失敗。

Authentication-Results: mx.google.com;
  spf=fail (google.com: domain of test@example.com does not designate 82.160.100.10 as permitted sender) smtp.mail=test@example.com
Received-SPF: fail (google.com: domain of test@example.com does not designate 82.160.100.10 as permitted sender) client-ip=82.160.100.10;

82.160.100.10 是原始發件人的 IP。

由於這個問題,我們的內部通信往往在 gmail 中被標記為垃圾郵件,以供那些通過它檢查他們的盒子的人。

任何想法如何解決這個問題?


編輯:測試郵件的標頭(更改了我們的 IP 和域)

  1. 從一個盒子發送到另一個盒子的電子郵件 - 來自 Thunderbird 客戶端的標頭:
Return-path: <ldev@example.com>
Envelope-to: zbyszek@example.com
Delivery-date: Thu, 19 Feb 2015 11:41:20 +0100
Received: from nat10.net08-g2.isko.net.pl ([82.160.100.10] helo=[11.0.0.22])
   by mail.example.com with esmtpsa (TLSv1.2:DHE-RSA-AES128-SHA:128)
   (Exim 4.83)
   (envelope-from <ldev@example.com>)
   id 1YOOPC-0005Ud-Qq
   for zbyszek@example.com; Thu, 19 Feb 2015 11:41:20 +0100
Message-ID: <54E5BDCE.5040207@example.com>
Date: Thu, 19 Feb 2015 11:41:18 +0100
From: Head Developer <ldev@example.com>
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.4.0
MIME-Version: 1.0
To: Zbyszek <zbyszek@example.com>
Subject: This is test
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit
  1. gmail收到後相同的郵件(通過POP3自動定期導入):
Delivered-To: *@gmail.com
Received: by 10.140.86.210 with SMTP id p76csp775880qgd;
   Thu, 19 Feb 2015 02:47:12 -0800 (PST)
X-Received: by 10.140.102.165 with SMTP id w34mr10762910qge.26.1424342832562;
   Thu, 19 Feb 2015 02:47:12 -0800 (PST)
Authentication-Results: mx.google.com;
  spf=fail (google.com: domain of ldev@example.com does not designate 82.160.100.10 as permitted sender) smtp.mail=ldev@example.com
Received-SPF: fail (google.com: domain of ldev@example.com does not designate 82.160.100.10 as permitted sender) client-ip=82.160.100.10;
Received: by 10.224.31.8 with POP3 id w8mf619596qac.5;
   Thu, 19 Feb 2015 02:47:12 -0800 (PST)
X-Gmail-Fetch-Info: zbyszek@example.com 2 mail.example.com 110 zbyszek@example.com
Return-path: <ldev@example.com>
Envelope-to: zbyszek@example.com
Delivery-date: Thu, 19 Feb 2015 11:41:20 +0100
Received: from nat10.net08-g2.isko.net.pl ([82.160.100.10] helo=[11.0.0.22])
   by mail.example.com with esmtpsa (TLSv1.2:DHE-RSA-AES128-SHA:128)
   (Exim 4.83)
   (envelope-from <ldev@example.com>)
   id 1YOOXn-0005j5-Tm
   for zbyszek@example.com; Thu, 19 Feb 2015 11:41:20 +0100
Message-ID: <54E5BDCE.5040207@example.com>
Date: Thu, 19 Feb 2015 11:41:18 +0100
From: Head Developer <ldev@example.com>
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.4.0
MIME-Version: 1.0
To: Zbyszek <zbyszek@example.com>
Subject: This is test
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit

編輯:一些額外的資訊

  • 發送方式是 SMTP(我使用郵箱 ldev@example.com 從家裡的 Thunderbird 發送電子郵件到同一伺服器 zbyszek@example.com 上的另一個郵箱)
  • 82.160.100.10 是我的家庭 IP,nat10.net08-g2.isko.net.pl 是我的家庭主機名,它解析為該 IP
  • 10.140.102.165 是 gmail 伺服器 IP
  • 11.0.0.22 是我家庭網路中的本地 IP
  • 郵件伺服器 IP 不在任何標頭中(如果它在那裡,它將是 188.40.153.39)。
  • 主機名 mail.example.com 指向郵件伺服器 IP
  • 域 IP 不在任何標頭中(如果有,我會將其更改為 85.17.23.59)
  • 域具有正確的 MX 條目(指向子域 mail.example.com)
  • SPF 記錄:“v=spf1 a mx ip4:188.40.153.39 -all”

編輯:發現的 IP 不那麼敏感

免責聲明:這個答案是猜測之一,直到 GMail 人確認它。

看起來這是 GMail 錯誤地處理了您在此處獲取的電子郵件。有些人在這裡這里這裡也報告了與你類似的情況

問題是:GMail 在通過 POP3 獲取電子郵件後掃描電子郵件時也部署了 SPF 措施。

通常 SPF 檢查在 SMTP 事務中通過檢查發件人地址和客戶端 IP 地址的域部分來進行。但在 POP3 中,GMail 必須解析 header 並找到最後一個Receivedheader。

Received: from nat10.net08-g2.* ([*.160.100.10] helo=[11.0.0.22])
   by mail.example.com with esmtpsa (TLSv1.2:DHE-RSA-AES128-SHA:128)
   (Exim 4.83)
   (envelope-from <ldev@example.com>)
   id 1YOOXn-0005j5-Tm
   for zbyszek@example.com; Thu, 19 Feb 2015 11:41:20 +0100

這是從您的伺服器獲取的原始電子郵件。它表明您的電子郵件接受來自*.160.100.10發件人 ldev@example.com 的電子郵件。在這個階段**,Gmail 偽裝成您的伺服器**並檢查發件人地址 (example.com) 和客戶端 IP 地址 (*.160.100.10) 的域部分。結果是預期的:

SPF 軟失敗,因為 ldev@example.com 的域未將 *.160.100.10 指定為允許的發件人

作為解決方法,您可以將 Gmail 過濾器設置為從不將您的電子郵件標記為垃圾郵件。

引用自:https://serverfault.com/questions/669584