使用 ESMTP 标头发送原始电子邮件时,通过 IMAP 从我们的邮箱导入邮件时 Gmail SPF 检查失败

Zby*_*zek 0 smtp gmail spf exim dovecot

我们有一个奇怪的情况:

  • 我们收到一封带有 ESMTP 标头的电子邮件
  • 我们的服务器接受了,没关系
  • 我们在 Gmail 中导入该邮件,就像我们邮箱中的任何其他电子邮件一样
  • Gmail 使 SPF 检查失败
  • Gmail 使用我们的服务器 IP 地址和邮件发件人域进行检查(原文如此!)

我们在本地邮箱之间的邮件也有类似的问题(但 Gmail 使用我们的服务器域和客户端的 IP):当通过 SMTP 从一个本地邮箱发送到另一个本地邮箱时,由于客户端 IP 而不是服务器的邮件,导入到 Gmail 的电子邮件的 SPF 失败

例子:

Received-SPF: fail (google.com: domain of example@msit.gov.pl does not designate 188.40.153.39 as permitted sender) client-ip=188.40.153.39;
Authentication-Results: mx.google.com;
   spf=fail (google.com: domain of example@msit.gov.pl does not designate 188.40.153.39 as permitted sender) smtp.mail=example@msit.gov.pl
Run Code Online (Sandbox Code Playgroud)
  • 188.40.153.39 是我们的 VPS IP
  • example@msit.gov.pl 是发件人
  • example@webvizarts.com 是接收者

更多标题:

Delivered-To: example@gmail.com
Received: by 10.194.168.164 with SMTP id zx4csp522020wjb;
    Thu, 19 Feb 2015 06:26:04 -0800 (PST)
X-Received: by 10.180.219.66 with SMTP id pm2mr10333511wic.91.1424355964017;
    Thu, 19 Feb 2015 06:26:04 -0800 (PST)
Return-Path: <example@msit.gov.pl>
Received: from server.webvizarts.com  (server.webvizarts.com . [188.40.153.39])
    by mx.google.com with ESMTPS id ge6si41332059wjd.24.2015.02.19.06.26.03
    for <example@gmail.com>
    (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
    Thu, 19 Feb 2015 06:26:04 -0800 (PST)
Received-SPF: fail (google.com: domain of example@msit.gov.pl does not designate 188.40.153.39 as permitted sender) client-ip=188.40.153.39;
Authentication-Results: mx.google.com;
   spf=fail (google.com: domain of example@msit.gov.pl does not designate 188.40.153.39 as permitted sender) smtp.mail=example@msit.gov.pl
Received: from mx.msit.gov.pl ([77.252.152.34])
    by server.webvizarts.com  with esmtp (Exim 4.83)
    (envelope-from <example@msit.gov.pl>)
    id 1YOS3G-0003eP-T2
    for example@webvizarts.com; Thu, 19 Feb 2015 15:26:03 +0100
Received: from msit.gov.pl (unknown [192.168.10.30])
    by mx.msit.gov.pl (Postfix) with ESMTPS id 5BE2F3B64
    for <example@webvizarts.com>; Thu, 19 Feb 2015 15:24:48 +0100 (CET)
Received: from EX3.sport.local (192.168.10.30) by EX3.sport.local
 (192.168.10.30) with Microsoft SMTP Server (TLS) id 15.0.1044.25; Thu, 19 Feb
 2015 15:22:45 +0100
Received: from EX3.sport.local ([fe80::b8ed:df29:c87:77d2]) by EX3.sport.local
 ([fe80::b8ed:df29:c87:77d2%15]) with mapi id 15.00.1044.021; Thu, 19 Feb 2015
 15:22:45 +0100
From: John Smith <example@msit.gov.pl>
To: Christopher Smith <example@webvizarts.com>
Subject: Re: Some sensitive subject
Thread-Topic: Some sensitive subject
X-MS-Has-Attach: yes
X-MS-TNEF-Correlator:
x-ms-exchange-transport-fromentityheader: Hosted
x-originating-ip: [192.168.0.102]
Run Code Online (Sandbox Code Playgroud)

模糊的标题、邮箱名称和人名。

我们在基于 Debian 的 VPS 上有 dovecot+exim。

我们寻找一些解决方案来避免这种情况。Gmail 方面的实施是否有缺陷,或者我们可以做些什么?

编辑:根据评论,它转发错误地被视为导入

seb*_*bix 5

[...]
我们在 Gmail 中导入该邮件,就像从我们的邮箱中导入任何其他电子邮件一样
[...]

这是错误的,因为邮件标头说明了一些不同的内容:

Received: from server.webvizarts.com  (server.webvizarts.com . [188.40.153.39])
    by mx.google.com with ESMTPS id ge6si41332059wjd.24.2015.02.19.06.26.03
    for <example@gmail.com>
    (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
    Thu, 19 Feb 2015 06:26:04 -0800 (PST)
Run Code Online (Sandbox Code Playgroud)

电子邮件由server.webvizarts.comto mx.google.comfor转发example@gmail.com。显然没有设置信封从:

Authentication-Results: mx.google.com;
   spf=fail (google.com: domain of example@msit.gov.pl does not designate 188.40.153.39 as permitted sender) smtp.mail=example@msit.gov.pl
Run Code Online (Sandbox Code Playgroud)

显然信封的 from 仍然是example@msit.gov.pl

我能想到你在这里的三个选择:

  1. 使用Sender Rewriting Scheme重写信封,例如使用postfix-srsd
  2. 在发送/中继之前,在 gmail 进行身份验证
  3. 将邮件从你的服务器推送到 Gmail 的 IMAP/POP3 邮箱,或者让他们通过 Gmail 从你的服务器拉取邮件(我不知道哪个更容易)