我遇到了几个问题,我的服务器和域名使用 Exim 发送的 SMTP 邮件被某些其他域名阻止,这部分原因可能是某些服务器设置导致某些可选的严格 MessageLabs 过滤器失效其中一个问题是,我的电子邮件使用服务器主机名作为其 HELO,而不是邮件服务器,导致与相应的 MX 记录不匹配,我已经修复了。
但是,检查我的新电子邮件标头时,服务器主机名仍然潜伏在那里(下面的示例标头),在 DKIM 签名和用于撰写电子邮件的 PC 的 PC 名称和 IP 地址之后,以及对 的引用esmtpsa
。
出现在标题中这个位置的主机名的含义和作用是什么?
对于通过 Exim 发送的此类电子邮件,这是预期行为吗?还是可能被视为域不匹配并表明电子邮件可能不合法的怪癖?
根据它与我撰写电子邮件的 PC 的 IP 和名称的接近程度,以及对 的引用esmtpsa
,我怀疑它与 SMTP 身份验证有关,可能追踪发送电子邮件所涉及的每个框以确认没有被感染的僵尸网络或类似的东西,但这只是我的猜测。鉴于我最近遇到的一些问题,即触发一些联系人使用的非常严格的公司过滤器,我非常希望让与 SMTP 身份验证有关的一切变得完美。
这是一个电子邮件标头示例我当前的 EXIM 设置正在生成,取自在 Outlook 中编写并发送到 Gmail 的电子邮件。遗憾的是,我无法将相关行加粗,但你可以按 Ctrl-F 键server.my-host-domain.com
,这是唯一发生的:
Delivered-To: [email protected]
Received: by XX.XX.XX.XX with SMTP id b67csp2867807oig;
Thu, 25 Feb 2016 01:29:56 -0800 (PST)
X-Received: by YY.YY.YY.YY with SMTP id c144mr20309773oib.108.1456392596947;
Thu, 25 Feb 2016 01:29:56 -0800 (PST)
Return-Path: <[email protected]>
Received: from mail.my-domain.com (mail.my-domain.com. [MY.DOM.AIN.IP])
by mx.google.com with ESMTPS id t83si5898326oig.81.2016.02.25.01.29.56
for <[email protected]>
(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
Thu, 25 Feb 2016 01:29:56 -0800 (PST)
Received-SPF: pass (google.com: domain of [email protected] designates MY.DOM.AIN.IP as permitted sender) client-ip=MY.DOM.AIN.IP;
Authentication-Results: mx.google.com;
spf=pass (google.com: domain of [email protected] designates MY.DOM.AIN.IP as permitted sender) [email protected];
dkim=pass [email protected]
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=my-domain.com; s=mail;
h=Content-Type:MIME-Version:Message-ID:Date:Subject:To:From; bh=tYDwf48ibFqt0fGVMwP/XE776YX3eIVAbPEdH+zTGMs=;
b=vhicxFvzf3hvv8fYxOfb7tgzWK3Sk8f7OUCm8v2CBiUH/GX9ddDIhDPNwxnIhExHbwHdj7/TqpgTMOXPekIsqRRDNT/j5mofqWfuvj9l4+7Lqb3/pxDmj+QSx+89hJu8msOvfnix/SKtv2Kf1OFHRi63LxZjGM/1+xuCBfrLrzM=;
Received: from [MY.PC'S.IP.ADDR] (helo=PCname)
by server.my-host-domain.com with esmtpsa (UNKNOWN:AES256-GCM-SHA384:256)
(Exim 4.72)
(envelope-from <mail.my-domain.com>)
id 1aYsF8-00020u-H6
for [email protected]; Thu, 25 Feb 2016 09:29:55 +0000
From: "My Name" <[email protected]>
To: <[email protected]>
Subject: Test email
Date: Thu, 25 Feb 2016 09:29:48 -0000
Message-ID: <[email protected]>
MIME-Version: 1.0
Content-Type: multipart/alternative;
boundary="----=_NextPart_000_0016_01D16FAF.154AAB30"
X-Mailer: Microsoft Outlook 16.0
Thread-Index: AdFvrvTde9zi+r6IQ3OmsfVq1pbzow==
Content-Language: en-gb
我特别想知道服务器主机名出现在这里是否会带来任何问题,与 和mx
域不匹配。理想情况下,我希望域和域完全独立,因为对于我在同一个框中管理的所有域而言,它们代表不同的独立操作,但如果此时在电子邮件标头中显示服务器主机名有好处或没有坏处,我很乐意在这里妥协。HELO
from
my-domain.com
my-host-domain.com
如果这确实是需要修复的问题,我当然欢迎任何关于如何修复此问题的提示,但我最感兴趣的是 Exim 以这种方式生成此电子邮件标头的意义和含义。我很有信心我可以在我的 EXIM 设置中更改这一点,但我想了解进行此类更改的含义。
Centos Linux VPS,带有 Dovecot 的 Exim 4.72。XX.XX.XX.XX
和YY.YY.YY.YY
代表两个我不认识的 IP 地址,我无法找到有关 的有用信息whois
,我假设它们与接收端的 Google 邮件服务器有关。
答案1
看来您对这两个 Received 标头之间的区别很感兴趣。最上面的一个:
Received: from mail.my-domain.com (mail.my-domain.com. [MY.DOM.AIN.IP])
by mx.google.com with ESMTPS id ...
只是接收邮件服务器首先记录 Exim 邮件服务器在连接时用来标识自己的主机名的结果。(您可以使用primary_hostname=
Exim 设置)。
之间( )是根据您的 SMTP 连接所源自的 IP 地址执行的反向 DNS 查找 mx.google.com 的结果主机名和 IP 地址。
由于 Exim 使用的主机名与您的反向 DNS 记录解析方式相匹配,因此一切正常。
后续标头由您自己的 Exim 邮件服务器记录:
Received: from [MY.PC'S.IP.ADDR] (helo=PCname)
by server.my-host-domain.com with esmtpsa ...
并包含类似信息。helo=PCname
源自 SMTP 协议,通过让客户端使用以下任一方式标识自己来启动新的 SMTP 连接helo
或者ehlo
动词。对于运行 Outlook 的 PC,可能没有“正确的”反向 DNS 记录,因此只有您的 IP 地址被记录。
这by server.my-host-domain.com
就是 exim 如何识别哪个local_interfaces
收到了 SMTP 连接,即哪个 IP 地址,但转换为主机名。
如果您的服务器只有一个 IP 地址:在您自己的服务器上,查询返回的主机名与您的实际反向 DNS 记录不同,这很可能是由于 中的外部 IP 地址条目造成的/etc/hosts
。您可以通过比较dig -x <ip-address>
和getent hosts <ip-address>
另请参阅此问答关于修改已接收标头。
答案2
我自己从来没有使用过 Exim,但是环顾四周后发现了这一点:
尝试编辑 exim.conf(可能位于 /etc/exim.conf)。将“local_from_check”从 true 更改为 false。然后继续使用 drupal 发送邮件,看看它是否有效,对我来说是有效的。这样做有效的原因是,如果您的用户帐户不是“受信任”的,Exim 将修改“发件人:”标头。