當通過 SMTP 從一個本地郵箱發送到另一個郵箱時,由於客戶端 IP 而不是伺服器在消息中的原因,導入到 Gmail 的電子郵件的 SPF 失敗
我們有一個帶有域的 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 和域)
- 從一個盒子發送到另一個盒子的電子郵件 - 來自 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
- 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 並找到最後一個
Received
header。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 過濾器設置為從不將您的電子郵件標記為垃圾郵件。