我们需要根据RFC5321解析Received:
电子邮件报头。我们需要提取邮件具有traversed.Also的域\ IP,我们需要确定IP是否是内部IP。是否已经有一个库可以提供帮助,特别是在C\C++中。
例如,
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“服务器。
谢谢
发布于 2009-02-02 19:29:59
“已接收”行使用的格式在RFC2821中定义,正则表达式无法解析它。
(您无论如何都可以尝试,对于已知软件生成的一个有限的标头子集,您可能会成功,但当您将其附加到在现实世界邮件中发现的一系列奇怪的东西时,它将失败。)
使用现有的RFC2821解析器,您应该可以,但否则,您应该会失败,并编写软件来处理它。不要以任何重要的东西为基础,比如围绕它的安全系统。
我们需要提取"by“服务器。
‘'from’更有可能是有用的。“by”行中给出的主机名是由主机本身看到的,因此不能保证它将是可公开解析的FQDN。当然,您并不倾向于在那里获得有效的(TCP-Info)。
发布于 2012-02-10 08:08:05
有一个Perl Received module,它是SpamAssassin代码的分支。它返回带有相关信息的Received
报头的散列。例如
{ ip => '64.12.136.4',
id => '875522',
by => 'xxx.com',
helo => 'imo-m01.mx.aol.com' }
发布于 2009-02-02 17:59:13
vmime应该很好,任何邮件库都可以让你这么做。
https://stackoverflow.com/questions/504136
复制相似问题