Sun Java System Messaging Server 6.3 管理指南

26.3.8.1 诊断和清理 .HELD 邮件

如果 MTA 检测到一个与邮件传送有关的严重问题,则邮件将被存储在 /msg-svr-base/data/queue/ channel 中后缀为 .HELD 的文件中。例如:


% ls 
ZZ0HXZ00G0EBRBCP.HELD
ZZ0HY200C0O6LGHU.HELD
ZZ0HYA006LP66O3H.HELD
ZZ0HZ7003EOQSE37.HELD

.HELD 文件的产生主要是由于以下三个原因:

循环导致的 .HELD 邮件

邮件在服务器或通道之间的来回传送称为循环。通常,出现邮件循环是因为每个服务器或通道认为另一个服务器或通道负责邮件的传送。循环邮件通常有大量的 *Received: 标题行。Received: 标题行将说明邮件循环的准确路径。 请仔细查看这些标题行中显示的主机名和所有收件人地址信息(例如,for recipient 子句或 (ORCPT recipient) 注释)。 导致这种邮件循环的原因之一是用户错误。

例如,最终用户可能设置了在两个独立的邮件主机上相互转发邮件的选项。在用户的 sesta.com 帐户上,最终用户启用了将邮件转发至其 varrius.com 帐户的设置。而用户忘记了已启用此设置,又在其 varrius.com 帐户上将邮件转发设置到 sesta.com 帐户。

错误的 MTA 配置也会导致出现循环。例如,MTA 主机 X 认为 mail.sesta.com 的邮件应由主机 Y 处理。而主机 Y 认为主机 X 应该处理 mail.sesta.com 的邮件;结果是主机 Y 将邮件返回到主机 X。

在这些情况下,MTA 忽略了邮件,而未尝试进一步的传送。出现此类问题时,请查看邮件中的标题行以确定退回邮件的服务器或通道。根据需要修复条目。

另一个导致邮件循环的常见原因是,MTA 使用某个网络名接收发送给 MTA 主机的邮件,而 MTA 没有将该网络名识别(尚未配置为识别)为其自身名称中的一个。解决方案是将额外的名称添加到其中的名称被 MTA 识别为自身名称的列表中。请注意,MTA 用来确定邮件是否正在循环的阈值是可以配置的;请参见 MAX_*RECEIVED_LINES option.dat 选项(《Sun Java System Messaging Server 6.3 Administration Reference》中的“Option File Format and Available Options”)。同时请注意, MTA 可以配置为(请参见 HELD_SNDOPR 全局 MTA 选项)只要邮件由于超出此阈值而被强制设置为 .HELD 状态,就生成一则系统日志通知。如果收到 Received count exceeded; message held. 系统日志邮件,就说明发生了邮件循环。

您也可以通过运行《Sun Java System Messaging Server 6.3 Administration Reference》中的“release”或按照以下步骤来重新发送 .HELD 邮件。

  1. 将 .HELD 扩展名将 .HELD 扩展名重命名为除 00 以外的任何 2 位数。例如,将 .HELD 重命名为 .06。


    注 –

    在重命名在重命名 .HELD 文件前,请确保邮件已停止循环。


  2. 运行 imsimta cache -sync。运行此命令将更新高速缓存。

  3. 运行 imsimta submit channelimsimta run channel

邮件可能会被再次标记为 .HELD,所以有必要多次执行这些步骤,因为 Received: 标题行会累积。如果仍存在问题,将像以前一样在同一通道下重新创建 *.HELD 文件。如果问题已经解决,则邮件将出队列并被传送。

如果您决定只是删除邮件而不尝试传送它们,请参见《Sun Java System Messaging Server 6.3 Administration Reference》中的“clean”

由于用户或域的 hold 状态导致的 .HELD 邮件

由于用户或域的 hold 状态导致的 .HELD 邮件(并且仅因这种原因导致的 .HELD 邮件)一般将存储在 hold 通道的队列区域中。即,hold 通道队列区域中的 .HELD 邮件文件可以认为是由于用户或域状态导致的 .HELD 邮件。

由于可疑特征导致的 .HELD 邮件

由于某些可疑特征导致的 .HELD 邮件必然会表现出相应特征。这些特征可以是站点已经选定为具有可疑特征的任何内容。MTA 管理员应该始终了解这些配置选项和操作。但是,如果您不是该 MTA 的唯一或原始管理员,请检查是否进行了以下方面的 MTA 配置:使用 holdlimit 通道关键字(12.5.9 多个地址扩展)、在基于地址的 *_ACCESS 映射表(在 MTA 映射文件中)中使用 $H 标志,或者在任何系统 Sieve 文件(系统级别的 imta.filter 文件,或者所有使用 sourcefilterdestinationfilter 通道关键字配置和指定的通道级别的 Sieve 过滤器;请参见12.12.4 指定邮箱过滤器文件位置)中使用 hold 操作;然后询问所有其他 MTA 管理员最近是否执行过任何手动命令行邮件 hold 操作(例如,通过 imsimta qm clean 命令) 。同时请注意,无论是来自系统 Sieve 过滤器还是来自用户的个人 Sieve 过滤器,应用 Sieve 过滤器 hold 操作时都能可选地进行记录;有关更多信息,请参见 LOG_FILTER 全局 MTA 选项(《Sun Java System Messaging Server 6.3 Administration Reference》中的“Option File Format and Available Options”)。