Sun Java System Messaging Server 6 2005Q4 管理指南

一般错误消息

MTA 无法启动时,一般错误消息显示在命令行中。本节将介绍和诊断常见的一般错误消息。


注 –

要诊断您自己的 MTA 配置,请使用 imsimta test -rewrite -debug 实用程序检查 MTA 的地址重写和通道映射进程。通过使用此实用程序,您可以检查配置而无需实际发送邮件。请参见检查 MTA 配置


MTA 子组件还可能发出本章中未介绍的其他错误消息。有关每个子组件的更多信息,请参阅 Sun Java System Messaging Server Administration Reference 中关于 MTA 命令行实用程序和配置的章节以及本指南的第 5 章至第 10 章。本节包括以下类型的错误:

mm_init 中的错误

mm_init 中的错误通常表明 MTA 配置有问题。如果运行 imsimta test -rewrite 实用程序,就会显示这些错误。其他实用程序(如 imsimta cnbuild)、通道、服务器或浏览器也可能返回此类错误。

经常遇到的 mm_init 错误包括:

别名的错误等值. . .

别名文件条目右侧部分的格式不正确。

无法打开别名包含文件. . .

无法打开别名文件所包含的文件。

发现重复的别名. . .

两个别名文件条目具有相同的左侧部分。您需要找出并删除重复项。查找提示出错行 #XXX 的错误消息,其中 XXX 是行号。您可以在此行上修复重复的别名。

通道表中的重复的主机. . .

此错误消息表示您在 MTA 配置中有两个具有相同正式主机名的通道定义。

请注意,MTA 配置文件 (imta.cnf) 的重写规则(上部)中的多余空白行将导致 MTA 把配置文件的提示解释为通道定义。请确保文件的首行不是空白行。由于经常有多个相同模式(左侧)的重写规则,这就导致 MTA 将其解释成带有非唯一正式主机名的通道定义。请检查 MTA 配置中的所有带有重复正式主机名的通道定义和文件的上部(重写规则)中所有不正确的空白行。

发现重复的映射名称. . .

此消息表示两个映射表具有相同的名称,需要删除其中一个重复的映射表。但是,映射文件中的格式化错误可能会导致 MTA 将某些内容错误地解释成映射表的名称。例如,无法正确地缩进映射表条目将导致 MTA 认为该条目的左侧实际上是映射表的名称。请检查映射文件中的常规格式并检查映射表名称。


注 –

在带有映射表名称的任一行的前后应有一行空白行。但是,在映射表的条目中间不应插入任何空白行。


映射名称太长. . .

此错误表示映射表名称太长,需要缩短。映射文件中的格式化错误可能会导致 MTA 将某些内容错误地解释成映射表名称。例如,无法正确地缩进映射表条目将导致 MTA 认为该条目的左侧实际上是映射表的名称。检查映射文件和映射表名称。

初始化 ch_ facility 时出错:编译的字符集版本不匹配

如果看到此消息,则需要通过命令 imsimta chbuild 重新编译并重新安装已编译的字符集表。有关更多信息,请参见《Sun Java System Messaging Server 6 2005Q4 Administration Reference》中的“imsimta chbuild”

初始化 ch_ facility 时出错:没有空间进入. . .

此错误消息通常表示您需要调整 MTA 字符集内部表的大小,然后使用以下命令重建已编译的字符集表:


imsimta chbuild -noimage -maximum -option
imsimta chbuild

请验证在作出此更改前是否不需要重新编译和重新启动任何其他字符集表。有关 imsimta chbuild 的更多信息,请参阅《Sun Java System Messaging Server 6 2005Q4 Administration Reference》中的“imsimta chbuild”

对于系统来说本地主机别名或本来的名称太长. . .

此错误表示本地主机别名或本来的名称太长(通道块中第二个名称或后续名称的可选右侧部分)。但是,MTA 配置文件中较早的某些语法错误(例如,重写规则中的多余空白行)可能会导致 MTA 将某些内容错误地解释成通道定义。除了检查配置文件的提示行,还要检查该行以上的其他语法错误。特别是,如果 MTA 在其中发出此错误的行是要作为重写规则,则请确保检查此行之上的多余空白行。

别名没有等值地址. . .

别名文件中的某个条目缺少右侧部分(翻译值)。

通道没有正式主机名. . .

此错误表示通道定义块缺少所需的第二行(正式主机名行)。有关通道定义块的更多信息,请参见 Sun Java System Messaging Server Administration Reference 中关于 MTA 配置和命令行实用程序的章节以及第 12 章,配置通道定义。在每个通道定义块的前后需要一个空白行,但空白行不能存在于通道定义的通道名称行和正式主机名行之间。还要注意,MTA 配置文件的重写规则部分不允许有空白行。

正式主机名太长

通道的正式主机名(通道定义块的第二行)的长度限制为 128 个八位字节。如果要尝试在通道上使用较长的正式主机名,请将其缩短成占位符名称,然后使用重写规则使较长名称与短的正式主机名匹配。如果使用 l(本地)通道主机名,您可能会看到此情况。例如:


Original l Channel:
!delivery channel to local /var/mail store
l subdirs 20 viaaliasrequired maxjobs 7 pool LOCAL_POOL
walleroo.pocofronitas.thisnameismuchtoolongandreallymakesnosensebutitisan
example.monkey.gorilla.orangutan.antidisestablismentarianism.newt.salaman
der.lizard.gecko.komododragon.com

Create Place Holder:
!delivery channel to local /var/mail store 
l subdirs 20 viaaliasrequired maxjobs 7 pool LOCAL_POOL
newt

Create Rewrite Rule:
newt.salamander.lizard.gecko.komododragon.com   $U%$D@newt

请注意,使用 l(本地)通道时,需要使用 REVERSE 映射表。有关用法和语法的信息,请参阅 Sun Java System Messaging Server Administration Reference 中关于 MTA 配置的章节。

MTA 配置文件中较早的某些语法错误(例如,重写规则中的多余空白行)可能会导致 MTA 将某些内容错误地解释成通道定义。这可能会导致将预定的重写规则解释为正式主机名。除了检查配置文件的提示行,还要检查该行以上的其他语法错误。特别是,如果 MTA 在其中发出此错误的行是要作为重写规则,请确保检查此行之上的多余空白行。

编译的配置版本不匹配

imsimta cnbuild 实用程序的功能之一是将 MTA 配置信息编译为可以快速装入的图像。编译的格式定义相当严格,经常在 MTA 的不同版本之间发生重大更改。修补程序发行版的部分可能会出现较小的更改。

发生此类更改时,内部版本部分也将更改,以便可以检测到不兼容的格式。检测到不兼容的格式时,MTA 组件将停止,并显示上述错误。此问题的解决方案是使用命令 imsimta cnbuild 生成一个新的、编译的配置。

还有个好办法是使用 imsimta restart 命令重新启动所有常驻 MTA 服务器进程,这样可以获得更新的配置信息。

交换空间错误

要确保操作正确,在邮件服务系统上配置足够的交换空间很重要。所需交换空间的容量将根据配置而有所不同。一般的协调建议是,交换空间的容量应该至少是主内存容量的三倍。

如下所示的错误消息表示交换空间不足:

jbc_channels: chan_execute [1]: 分叉失败: 空间不足

您可能会在作业控制器日志文件中看到此错误。其他交换空间错误将根据配置而有所不同。

使用以下命令可以确定剩余的交换空间以及您已使用的交换空间:

文件打开或创建错误

为发送邮件,MTA 将读取配置文件并在 MTA 邮件队列目录中创建邮件文件。配置文件必须可由 MTA 或使用 MTA 的 SDK 编写的任何程序读取。在安装期间,可将适当的权限指定给这些文件。创建配置文件的 MTA 实用程序和过程也可指定权限。如果这些文件受系统管理员、其他授权的用户或某些站点特定过程的保护,则 MTA 可能无法读取配置信息。这将导致“文件打开”错误或不可预测的行为。如果读取配置文件时遇到问题,imsimta test -rewrite 实用程序将报告附加信息。请参见《Sun Java System Messaging Server 6 2005Q4 Administration Reference》中的“imsimta test”

如果 MTA 表现为从授权的帐户(而不是非授权帐户)运行时,则 MTA 表目录中的文件权限可能是导致该问题的原因。检查配置文件及其目录的权限。请参见检查重要文件的拥有权

“文件创建”错误通常表示在 MTA 邮件队列目录中创建邮件文件时发生的问题。要诊断文件创建问题,请参见检查邮件队列目录

非法主机/域错误

当通过浏览器为 MTA 提供地址时,可能会看见此错误。或者,该错误可能被延迟并作为错误返回邮件消息的部分被返回。两种情况下,此错误消息均表示 MTA 无法将邮件传送到指定的主机。要确定不会将邮件发送到指定主机的原因,应按以下故障排除过程进行:

SMTP 通道中的错误:os_smtp_* 错误

如下所示的错误不一定是 MTA 错误:os_smtp_* 错误,如 os_smtp_open、os_smtp_read 和 os_smtp_write 错误。这些错误是 MTA 报告在网络层遇到的问题时生成的。例如,os_smtp_open 错误表示无法打开与远程端的网络连接。由于寻址错误或通道配置错误,MTA 可能会配置为与无效系统连接。os_smtp_* 错误通常是由于 DNS 或网络连接性问题所致,如果这是以前的工作通道或地址时,这种可能性更大。os_smtp_read 或 os_smtp_write 错误通常表示其他端异常中止了连接或由于网络问题而异常中止了连接。

网络和 DNS 问题在本质上通常是瞬态的。通常不必担心偶尔的 os_smtp_* 错误。但是,如果不断地看到这些错误,可能表示有潜在的网络问题。

要获取有关特定 os_smtp_* 错误的详细信息,请在所述通道上启用调试。审查将显示所尝试的 SMTP 对话的详细信息的调试通道日志文件。特别是要查看在 SMTP 对话期间出现网络问题的时间。时间可以暗示网络问题和远程端问题的类型。在某些情况下,您可能还需要执行网络级别调试(例如,TCP/IP 软件包跟踪)来确定已发送或已接收的内容。