首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >解析电子邮件"Received:“标头

解析电子邮件"Received:“标头
EN

Stack Overflow用户
提问于 2009-02-02 17:51:15
回答 8查看 6.2K关注 0票数 8

我们需要根据RFC5321解析Received:电子邮件报头。我们需要提取邮件具有traversed.Also的域\ IP,我们需要确定IP是否是内部IP。是否已经有一个库可以提供帮助,特别是在C\C++中。

例如,

代码语言:javascript
运行
复制
Received: from server.mymailhost.com (mail.mymailhost.com [126.43.75.123])
    by pilot01.cl.msu.edu (8.10.2/8.10.2) with ESMTP id NAA23597;
    Fri, 12 Jul 2002 16:11:20 -0400 (EDT)

我们需要提取"by“服务器。

谢谢

EN

回答 8

Stack Overflow用户

发布于 2009-02-02 19:29:59

“已接收”行使用的格式在RFC2821中定义,正则表达式无法解析它。

(您无论如何都可以尝试,对于已知软件生成的一个有限的标头子集,您可能会成功,但当您将其附加到在现实世界邮件中发现的一系列奇怪的东西时,它将失败。)

使用现有的RFC2821解析器,您应该可以,但否则,您应该会失败,并编写软件来处理它。不要以任何重要的东西为基础,比如围绕它的安全系统。

我们需要提取"by“服务器。

‘'from’更有可能是有用的。“by”行中给出的主机名是由主机本身看到的,因此不能保证它将是可公开解析的FQDN。当然,您并不倾向于在那里获得有效的(TCP-Info)。

票数 5
EN

Stack Overflow用户

发布于 2012-02-10 08:08:05

有一个Perl Received module,它是SpamAssassin代码的分支。它返回带有相关信息的Received报头的散列。例如

代码语言:javascript
运行
复制
{ ip => '64.12.136.4', 
  id => '875522', 
  by => 'xxx.com',
  helo => 'imo-m01.mx.aol.com' }
票数 4
EN

Stack Overflow用户

发布于 2009-02-02 17:59:13

vmime应该很好,任何邮件库都可以让你这么做。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/504136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档