了解分拣和重播目录

 

适用于: Exchange Server 2010 SP2, Exchange Server 2010 SP3

上一次修改主题: 2009-10-14

默认情况下,分拣目录和重播目录存在于每台运行 MicrosoftExchange Server 2010 并且安装了集线器传输服务器角色或边缘传输服务器角色的计算机上。复制到分拣目录或重播目录中的格式正确的电子邮件文件将被提交以进行传递。分拣目录可以由管理员使用来测试邮件流,也可以由必须创建并提交各自邮件的应用程序使用。重播目录从外部网关服务器中接收邮件,还可用于重新提交管理员从 Exchange 2010 服务器队列导出的邮件。

是否正在查找与分拣和重播目录相关的管理任务?请参阅管理连接器

目录

电子邮件文件的结构

分拣目录处理邮件的方式

重播目录如何处理邮件

分拣目录和重播目录的安全注意事项

分拣目录和重播目录的权限

电子邮件文件的结构

标准 SMTP 电子邮件由“邮件信封”和邮件内容组成。邮件信封包含传输和传递邮件所需的信息。邮件内容包含邮件头字段(统称为“邮件头”)和邮件正文。RFC 2821 中规定了邮件信封,而 RFC 2822 中规定了邮件头。

发件人撰写电子邮件并将其提交以进行传递时,该邮件包含符合 SMTP 标准所需的基本信息,例如发件人、收件人、邮件撰写日期和时间、主题行(可选)以及邮件正文(可选)。此信息包含在邮件自身中,根据定义,也包含在邮件头中。

发件人的邮件服务器使用邮件头中的发件人信息和收件人信息为邮件生成邮件信封,并将邮件传输到 Internet 以传递到收件人的邮件服务器。收件人从不会看到邮件信封,因为它是由邮件传输进程生成的,实际上并不是邮件的一部分。

每个参与邮件传输的服务器可能会将与传递邮件的服务器角色有关的邮件头字段或其他应用程序特定的邮件头字段插入邮件头。收件人使用电子邮件客户端打开邮件时,电子邮件客户端会将邮件头中比较相关的信息部分(例如发件人、收件人和主题)与邮件正文一起显示。

返回顶部

分拣目录处理邮件的方式

复制到分拣目录中的格式正确的 .eml 邮件文件将按照下列步骤进行处理以供提交:

  1. 每 5 秒钟将检查一次分拣目录中的新邮件文件。无法修改此轮询间隔。可以使用 Set-TransportServer cmdlet 的 PickupDirectoryMaxMessagesPerMinute 参数调整邮件文件的处理速度。默认值为每分钟 100 封邮件。无法打开的文件将保留在分拣目录中,并将在下一次轮询中重新对其进行评估。

  2. 将检查对分拣目录中的邮件文件设定的限制,如邮件头最大大小和最大收件人数。默认情况下,邮件头的最大大小为 64 KB,最大收件人数为 100。可以使用 Set-TransportServer cmdlet 更改这些限制。

  3. 文件由 <文件名>.eml 重命名为 <文件名>.tmp。如果 <文件名>.tmp 文件已存在,则文件将重命名为 <文件名><日期时间>.tmp。如果文件重命名失败,则将生成事件日志错误,分拣进程将继续处理下一个文件。

  4. 成功地将 .tmp 文件转换为电子邮件之后,系统将向 .tmp 文件发出一个“关闭时删除”命令。.tmp 文件显示为仍位于分拣目录,但是无法打开该文件。

  5. 邮件成功地进入传递队列之后,系统将发出“关闭”命令,.tmp 文件将会从分拣目录中删除。如果删除失败,将生成事件日志错误。如果分拣目录中存在 .tmp 文件时重新启动 MicrosoftExchange 传输服务,则所有的 .tmp 文件将重命名为 .eml 文件,并将被重新处理。这可能会导致邮件重复传输。

分拣目录中邮件文件的要求

复制到分拣目录中的邮件文件必须满足下列要求才能成功地进行传递:

  • 邮件文件必须是符合基本 SMTP 邮件格式的文本文件。支持 MIME 邮件头字段和内容。

  • 邮件文件的文件扩展名必须是 .eml。

  • 在邮件头的“发件人”或“收件人”邮件头字段中必须至少存在一个电子邮件地址。如果在“发件人”和“收件人”字段中各存在一个电子邮件地址,则“收件人”字段中的电子邮件地址将在邮件信封中用作邮件的原始发件人。

  • “发件人”字段中只能存在一个电子邮件地址。不允许存在多个电子邮件地址。如果“From”字段中只存在一个电子邮件地址,则“发件人”字段为可选项。

  • “From”字段中允许存在多个电子邮件地址,但是“发件人”字段中还必须只存在一个电子邮件地址。“发件人”字段中的地址随后将在邮件信封中用作邮件的原始发件人。

  • “收件人”、“抄送”或“密件抄送”字段中必须至少存在一个电子邮件地址。

  • 邮件头和邮件正文之间必须存在一个空行。

本示例显示一封使用可接受的分拣目录格式的纯文本邮件。

To: mary@contoso.com
From: bob@fabrikam.com
Subject: Message subject
This is the body of the message.

分拣目录邮件文件中也支持 MIME 内容。MIME 定义多种邮件内容,包括无法使用 7 位 ASCII 文本表示的语言、HTML 以及其他多媒体格式。对 MIME 及其要求的完整描述不在本主题的讨论范围之内。本示例显示一封使用可接受的分拣目录格式的简单 MIME 邮件。

To: mary@contoso.com
From: bob@fabrikam.com
Subject: Message subject
MIME-Version: 1.0
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
<HTML><BODY>
<TABLE>
<TR><TD>cell 1</TD><TD>cell 2</TD></TR>
<TR><TD>cell 3</TD><TD>cell 4</TD></TR>
</TABLE>

</BODY></HTML>

在分拣目录中为邮件文件对邮件头所做的修改

分拣目录将从邮件头中删除下列任意邮件头字段:

  • Received

  • Resent-*

  • Bcc

    注释注意:
    在邮件头的可选“密件抄送”邮件头字段中找到的任何电子邮件地址都将得到正确处理。在“密件抄送”收件人提升为不可见的邮件信封收件人后,将从邮件头中删除,以保护其身份。如果邮件仅包含“密件抄送”收件人,则“未透露的收件人”的值将添加到邮件头中的“收件人”字段。

在邮件提交过程中,分拣目录会将其自己的 Received 头字段添加到邮件中。“接收时间”邮件头字段采用以下格式。

Received: from localhost by Pickup with Microsoft SMTP Server id <ExchangeServerVersion><datetime>

如果下列邮件头字段丢失或其格式不正确,则分拣目录将对其进行修改:

  • Message-Id   如果“邮件 ID”字段丢失或者为空,则分拣目录将使用格式 <GUID>@<默认域> 添加一个“邮件 ID”字段。

  • 日期 如果“日期”字段丢失或其格式不正确,则分拣目录将添加分拣目录进行邮件处理的日期和时间。

分拣目录邮件处理中的故障

复制到分拣目录中的邮件文件可能不会成功地排入队列以等待传递。可能会出现下列类别的邮件提交故障:

  • 传递失败 格式正确的邮件文件可与无法由分拣目录成功提交以进行传递的有效发件人一起生成一个未送达报告 (NDR)。格式不正确的内容或分拣目录邮件限制发生冲突也可以导致分拣目录生成 NDR。如果在进行分拣目录邮件处理期间生成了 NDR,则原始邮件文件将附加到 NDR 邮件中,并且邮件文件将会从分拣目录中删除。

    注释注意:
    由分拣目录提交的格式正确的邮件可能会在以后遇到传递失败的问题,并将随 NDR 返回至发件人。这种失败可能由与分拣目录无关的传输问题所引起,例如邮件传递路径沿途的消息服务器故障或路由故障。
  • 死信 分类为“死信”的邮件具有严重的问题,这些问题将阻止分拣目录提交邮件进行传递。导致产生死信的另一种情况是,邮件格式正确,但是收件人无效,因为发件人无效,所以无法向发件人发送 NDR 邮件。

    确定为死信的邮件文件将保留在分拣目录,并将从 <文件名>.eml 重命名为 <文件名>.bad。如果 <文件名>.bad 文件已存在,该文件将重命名为 <文件名><日期时间>.bad。如果分拣目录中存在死信,则将生成事件日志错误,但是相同的死信邮件不会生成重复的事件日志错误。

    注释注意:
    将邮件文件复制到分拣目录以供传递之前,请始终在其他位置撰写和保存邮件文件。分拣目录每 5 秒钟轮询一次新邮件。因此,如果您尝试在分拣目录自身中撰写和保存邮件文件,则分拣目录可能会在您完成撰写之前尝试处理邮件文件。

返回顶部

重播目录如何处理邮件

复制到重播目录中的格式正确的 .eml 邮件文件将按照下列步骤进行处理以供提交:

  1. 每 5 秒钟将检查一次重播目录中的新邮件文件。无法修改此轮询间隔。可以使用 Set-TransportServer cmdlet 的 PickupDirectoryMaxMessagesPerMinute 参数调整邮件文件的处理速度。默认值为每分钟 100 封邮件。无法打开的文件将保留在重播目录中,并将在下一次轮询中重新对其进行评估。

  2. 文件由 <文件名>.eml 重命名为 <文件名>.tmp。如果 *<文件名>.*tmp 文件已存在,则文件将重命名为 <文件名><日期时间>.tmp。如果文件重命名失败,将生成事件日志错误,然后重播进程继续处理下一个文件。

  3. 成功地将 .tmp 文件转换为电子邮件之后,系统将向 .tmp 文件发出一个“关闭时删除”命令。.tmp 文件显示为仍位于重播目录,但是无法打开该文件。

  4. 邮件成功地进入传递队列之后,系统将发出“关闭”命令,.tmp 文件将会从重播目录中删除。如果删除失败,将生成事件日志错误。如果在重播目录中存在 .tmp 文件时重新启动 Microsoft Exchange 传输服务,所有 .tmp 文件将重命名为 .eml 文件并重新进行处理。这可能会导致邮件重复传输。

对重播目录中邮件文件的要求

重播目录用于将导出的 Exchange 邮件重新提交到外部网关服务器以及从外部网关服务器接收邮件。这些邮件已针对重播目录进行格式化。管理员或其他应用程序几乎或根本不需要使用重播目录撰写并提交新邮件文件。应使用分拣目录创建并提交新邮件文件。

重播目录的邮件大量使用 X-Header 字段。X-Header 是邮件头中用户定义的非正式邮件头字段。X-Header 在 RFC 2822 中未专门介绍,但是可以使用以“X-”开头的未定义邮件头字段将非正式邮件头字段添加到邮件中。在重播目录的邮件文件中使用的特定于 Exchange 2010 的 X-Header 可以实际设置邮件信封中通常存在的传递信息。使用重播目录处理从其他 Exchange 服务器导出的邮件时,需要使用此功能来保留原始邮件信息。

复制到重播目录中的邮件文件必须满足下列要求才能成功地进行传递:

  • 邮件文件必须是符合基本 SMTP 邮件格式的文本文件。支持 MIME 邮件头字段和内容。

  • 邮件文件的文件扩展名必须是 .eml。

  • X-Header 必须出现在所有常规邮件头字段的前面。

  • 邮件头字段和邮件正文之间必须存在一个空行。

重播目录中的邮件需要下表中所述的 X-Header:

  • X-Sender   此 X-Header 替换典型 SMTP 邮件中的“收件人”邮件头字段要求。必须有一个包含一个电子邮件地址的 X-Sender 字段。尽管收件人的电子邮件客户端会将“From”邮件头字段(如果存在该字段)的值显示为邮件的发件人,但是重播目录将忽略“From”邮件头字段。其他参数通常在 X-Sender 字段中,如下例所示。

    X-Sender: <bob@fabrikam.com> BODY=7bit RET=HDRS ENVID=12345ABCD auth=<someAuth>
    
    注释注意:
    这些参数是通常由发送服务器生成的邮件信封值。在导出的邮件文件中可以看到类似的参数。
    RET 指定无法传递邮件时,是将整个邮件还是只将邮件头返回给发件人。RET 的值可以是 HDRSFULL ENVID 是邮件信封标识符。BODY 指定邮件的文本编码。auth 指定邮件服务器的身份验证机制(如 RFC 2554 中所述)。
  • X-Receiver 此 X-Header 取代典型 SMTP 邮件中的“To”邮件头字段要求。必须至少存在一个包含一个电子邮件地址的 X-Receiver 字段。允许多个收件人具有多个 X-Receiver 字段。尽管收件人的电子邮件客户端会将“To”邮件头字段(如果存在该字段)的值显示为邮件的收件人,但是重播目录将忽略“To”邮件头字段。其他可选参数可能在 X-Receiver 字段中,如下例所示。

    X-Receiver: <mary@contoso.com> NOTIFY=NEVER ORcpt=mary@contoso.com
    
    注释注意:
    这些参数是通常由发送服务器生成的邮件信封值。在导出的邮件文件中可以看到类似的参数。这些参数与发送状态通知 (DSN) 邮件有关(如 RFC 1891 中所述)。
    NOTIFY 的值可以是 NEVERDELAYFAILUREORcpt 用于保留邮件的原始收件人。

对于重播目录中的邮件文件,下表中所述的 X-Header 是可选的:

  • X-CreatedBy   用于邮件头防火墙功能。如果此 X-Header 存在,则不得为空。如果 X-CreatedBy 字段不存在,则为该字段添加值 Unspecified。通常,此字段的值为 MSExchange14,但是还可以包含为发送连接器设置的非 SMTP 地址空间类型,例如 Notes

  • X-EndOfInjectedXHeaders   存在的所有 X-Header 的大小(字节数)。此 X-Header 可以作为一个标记,用于指示常规邮件头字段开始之前的最后一个 X-Header。

  • X-ExtendedMessageProps   邮件的扩展邮件属性。

  • X-HeloDomain 在初始 SMTP 协议转换期间提供的 HELO/EHLO 域字符串。

  • X-LegacyExch50   用于保留 Exchange Server 2003 生成的自定义属性(如果服务器 Exchange 2003 存在)。

  • X-Source   由 MessageSourceName 列下的队列查看器使用。如果未指定此 X-Header 的值,则使用值 Replay。此 X-Header 的其他可能值是 Smtp Receive ConnectorSmtp Send Connector

  • X-SourceIPAddress 发送服务器的 IP 地址。如果未指定 IP 地址,则此字段为 0.0.0.0。

本示例显示一封使用可接受的重播目录格式的纯文本邮件。

X-Receiver: <mary@contoso.com> NOTIFY=NEVER ORcpt=mary@contoso.com
X-Sender: <bob@fabrikam.com> BODY=7bit ENVID=12345AB auth=<someAuth>
Subject: Optional message subject
This is the body of the message.

重播目录邮件文件中还支持 MIME 内容。MIME 定义多种邮件内容,包括无法使用 7 位 ASCII 文本表示的语言、HTML 以及其他多媒体格式。对 MIME 及其要求的完整描述不在本主题的讨论范围之内。本示例显示一封使用可接受的重播目录格式的简单 MIME 邮件。

X-Receiver: <mary@contoso.com> NOTIFY=NEVER ORcpt=mary@contoso.com
X-Sender: <bob@fabrikam.com> BODY=7bit ENVID=12345ABCD auth=<someAuth>
To: mary@contoso.com
From: bob@fabrikam.com
Subject: Optional message subject
MIME-Version: 1.0
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
<HTML><BODY>
<TABLE>
<TR><TD>cell 1</TD><TD>cell 2</TD></TR>
<TR><TD>cell 3</TD><TD>cell 4</TD></TR>
</TABLE>

</BODY></HTML>

对重播目录中邮件文件的邮件头所做的修改

重播目录将“Bcc”邮件头字段从邮件文件中删除。

在邮件提交过程中,重播目录将自己的“接收时间”邮件头字段添加到邮件中。“接收时间”邮件头字段采用以下格式。

Received: from <ReceivingServerName> by Replay with <ExchangeServerVersion><DateTime>

重播目录修改邮件头中的以下邮件头字段:

  • Message-ID   如果缺少此邮件头字段或此字段为空,重播目录将使用 <GUID>@<默认域> 格式添加一个“邮件 ID”邮件头字段。

  • 日期 如果缺少此邮件头字段或此字段格式不正确,重播目录将使用重播目录处理邮件的日期和时间添加“日期”邮件头字段。

重播目录处理邮件失败

将邮件文件转换为电子邮件时的任何问题都可能会使重播目录认为该邮件无法传递(死信)。死信邮件文件存在严重的问题,例如缺少发件人、缺少收件人或格式问题。确定为死信的邮件文件将保留在重播目录,并将从 <文件名>.eml 重命名为 <文件名>.bad。如果 <文件名>.bad 文件已存在,该文件将重命名为 <文件名><日期时间>.bad。如果重播目录中存在死信,则将生成事件日志错误,但是相同的死信邮件不会生成重复的事件日志错误。

返回顶部

分拣目录和重播目录的安全注意事项

下表介绍分拣目录和重播目录共同存在的安全问题:

  • 任何在接收连接器上配置的安全性检查(例如反垃圾邮件、防病毒、发件人筛选或收件人筛选操作),都不会对通过分拣目录或重播目录提交的邮件执行。

  • 存在安全风险的分拣目录或重播目录可以充当开放中继。这样,可以使用其他服务器重新提交或“中继”邮件,以屏蔽邮件的真实来源。

下表介绍适用于重播目录的其他安全问题:

  • 通过重播目录使用的 X-Header 可以手动创建邮件信封。X-Sender 和 X-Receiver 字段中的信息可能与电子邮件客户端显示的“收件人”或“发件人”邮件头字段完全不同。这种冒充发件人和域的行为通常称为“电子欺骗”。“欺骗邮件”是这样的电子邮件:其发送地址已被修改,使其看起来好像来自某个发件人,而实际上却来自另一发件人。

  • 如果 X-CreatedBy 字段的值为 MSExchange14,则认为目标是可信的,不会应用邮件头防火墙。通过邮件头防火墙,Exchange 可以保留在可信 Exchange 2010 服务器之间传输的邮件中的 X-Header,或从传输到 Exchange 组织外部的不可信目标的邮件中删除可能会泄漏的 X-Header。可以使用这些 X-Header 在经过授权的 Exchange 2010 服务器之间共享 Exchange 2010 信息,例如垃圾邮件可信度 (SCL)、邮件签名或加密。如果向未经授权的源泄露这些信息,可能会造成潜在的安全风险。

由于存在与重播目录相关联的其他安全风险,因此应向重播目录应用较高的安全性。可以向必须生成和提交邮件的用户或应用程序授予对分拣目录的访问权限,但是这些用户或应用程序不应要求对重播目录的访问权限。

默认情况下,所有集线器传输服务器和边缘传输服务器上都会启用分拣目录和重播目录。如果组织中特定的集线器传输服务器或边缘传输服务器上不需要分拣目录或重播目录,可以在该服务器上禁用分拣目录或重播目录。有关详细信息,请参阅下列主题:

返回顶部

分拣目录和重播目录的权限

分拣目录和重播目录需要下列权限:

  • 管理员:完全控制

  • 系统:完全控制

  • 网络服务:读取、写入和删除子文件夹和文件

默认情况下,MicrosoftExchange 传输服务使用网络服务用户帐户的安全凭据来管理分拣目录和重播目录的位置和权限。网络服务帐户要求对分拣目录具有这些权限,以便可以打开 .eml 文件、重命名为 .tmp 并将其删除,或重命名为 .bad(如果邮件被分类为死信)。

可以使用 Set-TransportServer cmdlet 上的 PickupDirectoryPathReplayDirectoryPath 参数移动这两个目录的位置。能否成功地更改分拣目录的位置取决于向网络服务帐户授予的对新分拣目录位置的权利,以及是否已存在新分拣目录。如果尚未存在新分拣目录,并且网络服务帐户具有创建文件夹和在新位置应用权限所需的权利,则将新建分拣目录,并向其应用正确的权限。如果新目录已经存在,则不会检查现有文件夹权限。每次通过同时使用 PickupDirectoryPathReplayDirectoryPath 参数与 Set-TransportServer cmdlet 来移动该目录位置时,最好验证一下新目录是否存在以及其应用的权限是否正确。

返回顶部

 © 2010 Microsoft Corporation。保留所有权利。