2009-09-22 24 views
-1

什么是SMTP信封和SMTP标题以及这些标题之间的关系是什么?我如何用Perl提取它们?如何用Perl提取SMTP信封和标题?

+0

为了描述你如何找到它们,你需要描述你所使用的平台和语言 – AnthonyWJones 2009-09-22 09:55:49

+0

想要在linux和perl中找到 – joe 2009-09-22 10:10:56

+0

那么SMTP在RFC中有描述。 http://tools.ietf.org/html/rfc2812正如我以前说过的,在你来这里之前,你可以做很多事情来帮助你自己。 – 2009-09-22 16:57:55

回答

4

SMTP邮件包含一组标题,如From,To,CC,Subject和一系列其他内容。

当邮件被邮件传输代理(即SMTP服务器)移动时,SMTP信封只是给予标准SMTP邮件前缀的一小组标头的名称。最常见的包络标头是X发送者,X接收者和接收。

例如,微软SMTP服务器将消息放入其Drop文件夹时,会将X-Sender和一系列X-Receiver头添加到消息的顶部。每个邮箱会有一个X接收器与Drop文件夹所在域相匹配。

另一个示例是SMTP服务器从另一个SMTP服务器收到消息时添加Receive:标头。这个标题给出了交换的各种细节。因此,大多数在tinternet上的电子邮件一旦到达最终目的地就会有一系列接收标题,指示邮件到达时的SMTP服务器跳转。当邮件最终移动到POP3邮箱时,通常服务器会删除X-Sender,X-Receiver标头。

访问头

在Windows平台上我发现访问信封头的唯一方法是简单地打开和解析EML文件。它是一个非常简单的格式(namevalue CR LF)。

再次在Windows平台上,可以使用基于CDOSYS.dll COM对象集访问主要消息标头和正文部分集。你会如何在我不知道的其他平台上做到这一点。然而,根据信封标题,标题格式非常简单,它可以访问需要更多创意编码的正文部分。

+0

其他MTA会将标题添加为X-Envelope-From:和X-Envelope-To: – 2009-09-22 10:02:49

4

信封是通过“MAIL FROM:”和“RCPT TO:”命令在初始会话期间发送给服务器的寻址信息。

SMTP标头是DATA命令发出后发送的标题行的集合。

你如何找到它们取决于你如何/从哪里获得信息,我们需要更多的线索来尝试回答。

1

你可以在这里想到三件不同的事情。在SMTP MTA之间交换了指令(消息在每个跳转期间)......由MUA生成的标题和由MTA沿给定消息遍历的路由添加(或修改)的标题。

“信封”是指提供给MTA的信息(通常是最近或最终目的地MTA)。发件人在SMTP连接中的DATA指令之后包含一组标题(通过空白行与消息正文分开......但仔细检查RFC是否特别应该是CR/LF对)。请注意,本地MTA可能会添加额外的标题,甚至可能会在存储或转发邮件之前修改某些标题。

(通常它应该只添加Received-by:标头)。

某些MTA配置为添加X-Envelope-To:和/或X-Envelope-From:标头。其中一些仍然会过滤这些标题的内容(例如,以防止盲目复制)。 (Senario:原始MUA有一个BCC:行目录,许多人在邮件中复制了一些人,他们的名字在CC:标题中都显示为彼此;对于每个收件人域(MX结果),MTA只会发布RCPT TO:仅适用于主机如果适当的结果(其自己的集线器,智能主机或任何有效的MX用于目标)的地址的子集---因此任何共享MX彼此的接收者的子集将在由MTA生成的X-Envelope-To:头文件,这些头文件对于处理这个细节是粗略的)。

也不是说Envelope-From行只包含由SMTP交换中的HELO FROM:或EHLO FROM:指令提供的主机/域名。它不能用作回复地址,例如回复。