电子邮件标题分析器

时间:2013-01-10 09:55:33

标签: php email

不要为我的问题投票。

我正在创建此页http://www.iptrackeronline.com/email-header-analysis.php之类的工具来分析电子邮件标题。

我正在使用正则表达式获取用户的IP地址。但是在'Received'标题部分有很多ip地址,我想忽略所有其他IP地址并获取用户原始IP地址。

示例电子邮件标题:IP - 70.183.59.6

Return-path: <user@example.com>
Received: from mac.com ([10.13.11.252])
  by ms031.mac.com (Sun Java System Messaging Server 6.2-8.04 (built Feb 28
  2007)) with ESMTP id <0JMI007ZN7PETGC0@ms031.mac.com> for user@example.com; Thu,
  09 Aug 2007 04:24:50 -0700 (PDT)
Received: from mail.dsis.net (mail.dsis.net [70.183.59.5])
  by mac.com (Xserve/smtpin22/MantshX 4.0) with ESMTP id l79BOnNS000101
  for <user@example.com>; Thu, 09 Aug 2007 04:24:49 -0700 (PDT)
Received: from [192.168.2.77] (70.183.59.6) by mail.dsis.net with ESMTP
  (EIMS X 3.3.2) for <user@example.com>; Thu, 09 Aug 2007 04:24:49 -0700
Date: Thu, 09 Aug 2007 04:24:57 -0700
From: Frank Sender <sender@example.com>
Subject: Test
To: Joe User <user@example.com>
Message-id: <61086DBD-252B-46D2-A54C-263FE5E02B41@example.com>
MIME-version: 1.0 (Apple Message framework v752.2)
X-Mailer: Apple Mail (2.752.2)
Content-type: text/plain; charset=US-ASCII; format=flowed
Content-transfer-encoding: 7bit

如果您知道任何可以获取IP地址的电子邮件解析器,请给我链接。

1 个答案:

答案 0 :(得分:2)

我实际上认为没有正则表达式会更容易:这些标题按行组织,因此从上到下遍历行并根据行的第一个单词存储行。

Received:标题总是以相反的顺序排列,即当您从上到下阅读时,您将遇到的最后一个标题是距离发件人最近的服务器。这意味着,如果您需要Received:记录,只需将其存储为单个条目,就可以覆盖之前遇到的那些。

最后一点:如果标头包含X-Originating-IP标头,该标头将包含实际发件人的IP地址。