这份白皮书阐述如何识别和解决 IBM® Lotus® Domino® 8 邮件路由问题。本白皮书解释了使用哪个调试工具、怎样使用以及如何分析调试结果,目的是帮助客户亲自调试邮件路由问题。支持工程师也可以通过这份白皮书加深对调试结果的理解,以及将其用作识别和解决常见邮件路由问题的手册。
IBM Lotus Domino 是一个广泛使用的消息系统,根据客户的报告,它最常见的问题是邮件路由问题。大部分情况下,问题都很简单并且可以自行解决(例如,网络连接和 DNS 不可用);但是,在某些场景下,很难找出问题的根源。
在诊断这种问题时,技术支持工程师经常要求客户启用某个调试工具。因此,您不禁会想:使用调试参数捕捉什么信息? IBM 如何分析调试结果以识别问题?
在这份白皮书中,我们展示如何诊断以下问题,解释诊断邮件路由问题的各个步骤:
通过学习这些技术,客户应该能够亲自诊断并解决以上问题。
|
我们先看一下 Lotus Domino 邮件系统路由邮件的基本步骤:
默认情况下,Lotus Domino 使用 NRPC(也称为 Lotus Notes 路由或 Notes 路由协议)在服务器之间传输邮件。 Notes 路由使用 Domino Directory 中的信息确定将邮件发送到哪里,并将邮件从发送者的邮件服务器移动到接收者的邮件服务器。
发送者的服务器上的路由器决定接收消息的下一个服务器,即通向消息目的地的路径的下一站。每个服务器使用自己的路由表计算通向目标服务器的路径的下一站。当消息到达目标服务器时,其上的路由器就将它投递到接收者的邮件文件。
当您使用 Notes 地址给接收者发送邮件时(例如 Jane Doe/Acme),路由器将从 MAIL.
BOX 选择一条消息,以确定邮件的路径。路由器首先在 Domino Directory 中查找接收者 Jane Doe/Acme 的 Person 文档。
Person 文档包含 Jane Doe 的邮件服务器的名称。路由器使用从该信息获得的网络信息(即路由表)确定消息的下一站。路由器如何分发消息取决于接收者的邮件文件的位置,其位置可以是:
将消息传输给同一服务器上的接收者
如果路由器在检查接收者的 Person 文档之后,发现其邮件服务器与发送者服务器相同,它将把消息投递到接收者的邮件文件。
在同一 NNN 中将消息传输给另一个服务器上的接收者
如果发送者不在相同的邮件服务器上,路由器将检查 Domino Directory 以确定服务器是否在相同的 Domino 域中。如果在 Domino Directory 中找到目标服务器的 Server 文档,路由器将检查该文档以确定该服务器的网络信息。
在 Ports、Notes Network Ports 和 Server 文档选项卡上,服务器被分配了一个或多个 NNN 。 NNN 是在特定 Domino 域中的一组服务器,它们共享一个通用的协议,并且由 LAN 或调制解调器连接起来。
注意:在相同域中的服务器不一定在同一个 NNN 中,而共享同一个 NNN 的服务器一般都在同一个 Domino 域中。
如果两个服务器共享一个 NNN,路由器立即将消息从发送者服务器上的 MAIL.BOX 文件路由到接收者服务器上的 MAIL.BOX 文件。然后,接收者服务器上的路由器将消息发送到接收者的邮件文件。因为邮件在 NNN 中是自动路由的,所以您不必创建其他连接或文档。
将消息传输给同一个 Domino 域中的不同 NNN 的接收者
如果发送者和接收者的邮件服务器在相同的 Domino 域中,但不共享同一个邮件服务器或 NNN,那么要使传输能够继续下去,必须在这两个网络之间建立某种连接。您可以使用以下方式之一在 NNN 之间建立一个连接:
Connection 文档提供在 NNN 之间路由邮件的信息之后,源网络和目标网络就可以存在不同的 Domino 域中。该文档包含路由器查找目标网络所需的全部信息。
默认情况下,Lotus Domino 使用 Notes 路由协议在服务器之间传输邮件,但您可以配置 Domino,让它使用 SMTP 路由邮件。
使用 SMTP 路由的消息传输被执行为两个服务器之间的点对点交换。发送 SMTP 服务器直接联系接受 SMTP 服务器,并建立一个双向传输通道。通过 SMTP 发送消息需要:
Lotus Domino 支持借助 SMTP 监听器任务和 SMTP 路由器通过 SMTP 发送和接收邮件,您可以分别启用它们。
SMTP 监听器任务处理入站 SMTP 连接,并通过这些连接将收到的消息发送到 MAIL.BOX 。它不处理这些消息的后续投递和传输。您可以在 Server 文档的 Basic 选项卡上配置 SMTP 监听器任务,让其接收邮件(见图 1)。
SMTP 的路由器任务和处理 Notes 路由的任务是一样的。当 MAIL.BOX 中的消息需要传输到另一个服务器时,路由器将确定其目的地,以及是通过 Notes 路由还是 SMTP 发送它。
SMTP 在默认情况下是禁用的。要配置 Domino 服务器让其使用 SMTP 发送邮件,您必须更改 Configuration Settings 文档上的 Router/SMTP 选项卡的 Basics(见图 2)。您可以将 Lotus Domino 配置为使用 SMTP 将邮件发送到目的地,不管是在本地
Internet 域内部还是其外部。
在同时支持 SMTP 和 Notes 路由的服务器上,路由器每次检测到 MAIL.BOX 中有新消息时,它就会选择用于传输消息的协议。
路由器的决定基于消息的地址和格式,以及服务器是配置为在本地 Domino 域内部使用
SMTP 发送消息,还是配置为在本地 Internet 域外部使用 SMTP 发送消息,或者同时配置为这两者。
使用 SMTP 将邮件发送到本地域地址
在本地 Domino 域中启用 SMTP 允许路由器在将邮件传输到相同 Domino 域中的另一个 Domino 服务器时把 SMTP 用作可选路由协议。
当将服务器配置为在本地 Domino 域中使用 SMTP 发送消息时,您有以下选择:
采用 Notes 富文本格式的消息将通过 Notes 路由发送。
如果存放在 MAIL.BOX 中的消息为 Notes 格式,那么路由器会将其转换成 MIME 格式再发送。
当路由器在 MAIL.BOX 中选择一条消息时,它会读取消息的地址以确定接收者是否在本地域中。如果接收者是本地的,路由器就在 Domino Directory 的 ($Users) 视图中查找包含该地址的 Person 文档。
如果允许在该域中使用 SMTP,并且消息的格式与该设置指定的格式一致,那么路由器将(1)使用 TCP/IP 连接到目标服务器,(2)建立一个 SMTP 连接,以及(3)传输消息。
默认情况下,在本地 Domino 域中启用 SMTP 允许路由器使用 SMTP 将邮件传输到该域中的其他 Domino SMTP 主机。
现在,您已经可以限制 SMTP 在本地域的使用,从而使只有在同一个 NNN 的服务器之间传输的消息能够使用 SMTP 。
为此,在 Configuration Settings 文档的 Router/SMTP 选项卡的 Basics 上,将“ Servers within the local Domino domain are reachable via SMTP over TCPIP ”设置为“ Always ”(见图 3)。
如果接收服务器正在运行 SMTP 监听器,配置为在本地 Domino 域中发送 SMTP 的服务器通常使用 SMTP 将 MIME 消息发送到同一个 NNN 中的目标服务器。对于 Notes 格式的消息,仅当服务器被配置为通过 SMTP 发送所有消息时,路由器才会通过 SMTP 发送它们。
在本地 Internet 域外部通过 SMTP 发送消息
将 Domino 设置为可以通过 SMTP 向外部 Internet 域发送消息允许服务器将出站Internet 邮件直接传输到接收域中的主机,或间接传输到 Internet 主机。
如果 MAIL.BOX 中的消息拥有包含 @ 符号的接收地址,并且拥有不能在本地 Domino 域中解析的域部分(@ 符合右边的地址部分),那么路由器将把该消息的目标服务器标识为非本地的。
非本地的地址可以是 RFC 831 Internet 地址(域部分包含一个点号,其形式为localpart@org.domain),或在另一个 Domino 域中的地址(包括外域,比如传呼机或传真网关)。
为了确定一个 Internet 地址是否为本地地址,路由器将检查该地址的域部分,看它是否与任何在 Domino Directory 中的 Global Domain 文档中定义的本地 Internet 域相匹配。本地 Internet 域包含在 Local 主 Internet 域和 Global Domain 文档中的 Alternate Internet 域别名字段中列出的任何域。
如果没有 Global Domain 文档,路由器将比较接收者地址中的域和服务器的主机名。例如,如果消息的接收地址为 jdoe@mailhost3.acme.com 并且路由器位于服务器 mailhub.acme.com 上,那么路由器就知道接收者在本地 Internet 域中。
将 Domino 邮件系统连接到 Internet
因为 Lotus Domino 使用基于 Internet 标准的 SMTP 路由协议路由邮件,所以很容易就可以将 Domino 系统配置为从外部 Internet 域接收和发送邮件。
对于出站邮件,您可以使用网关路由架构(只有被指定的服务器才能使用 SMTP 将邮件路由到外部域),或将所有邮件服务器设置为使用 SMTP 将邮件路由到外部域。
对于入站邮件,您需要决定如何将进入您的 Internet 域的邮件从防火墙路由到
Domino 服务器。如何设置入站邮件取决于您的组织使用单个 Internet 域名还是多个 Internet 域名,以及服务器的分布方式。
使用中转主机
中转主机是连接到 Internet 并且转发或中转入站或出站 Internet 邮件的 SMTP 服务器或防火墙。中转主机还可以是映射到多个 MX 记录的 DNS 名。
要将 Domino 配置为使用中转主机,您可以使用发送服务器上的 Configuration
Settings 文档上的两个字段(见图 4)。一定要将中转主机的 DNS 或主机名添加到 “ Relay host for messages leaving the local Internet domain ”字段,并启用“ SMTP
used when sending messages outside of the local Internet domain ”字段。
使用 Notes 路由将出站 Internet 邮件传输到 SMTP 服务器
在不使用 SMTP 路由邮件的内部 Domino 服务器上,Lotus Domino 使用 Notes 路由来将出站 Internet 消息传输到 Domino SMTP 服务器,后者随后直接或通过中转主机将该消息传输到 Internet 。
要配置使用 Notes 路由将 Internet 邮件传输到 Domino SMTP 服务器的服务器,您必须使用 Foreign SMTP Domain 文档和 SMTP Connection 文档。
现在您可以了解 NRPC 和 SMTP 邮件路由是如何在 Lotus Domino 中工作的,接下来我们将讲解如何诊断和解决一些常见的问题。
如果邮件没有:
1. 收集控制台日志或 Log.nsf 中的投递失败报告(DFR)以及所有相关的错误。如果投递失败显示(否则,转到第 3 步):
2. 检查 MAIL.BOX 中过期或被阻止的消息,并禁用杀毒软件看看能否解决问题。 [Done]
3. 收集控制台日志或 Log.nsf 中的投递失败报告以及所有相关的错误。如果投递失败显示(否则,转到第 4 步):
4. 在服务器控制台上发出命令 “ tell router show ”:
如果您收到:
1. 开始 Notes Client 问题诊断脚本:
2. 搜索 Lotus Support Web 站点 动态地了解 DFR ;如果未能找到或仍然不能解决问题,请向 Technical Support 寻求帮助。 [DONE]
3. 在 Domino 服务器上打开 MAIL.BOX 文件。如果您:
4.处于 DEAD 状态的消息。如果不能向前或向后路由,那么它就处于 DEAD 状态。原始消息将不能到达接收者处。返回给发送者的投递失败消息同样失败。这常常出现在虚假的发送者地址中(SPAM)。 [DONE]
5.处于 HOLD 状态的消息。消息被暂停的理由仅有 3 个:
6.消息未决。在服务器的控制台上发出一个“ tell router show ”命令。如果它表明您的消息的目的地为:
如果看不到消息的目的地,请转到步骤 9 。
7. 在 Log.nsf 中检查控制台日志或 Mail Routing Events 视图,看看消息是否被发送到下一站:
8. 消息处于 Wait 状态有 2 个原因:
9. 在服务器的控制台上发出show tasks命令。如果您看到:
10. 查看列标题“ Reason of last error ”,如果它显示:
如果没有出现以上问题,请向 Lotus Support 寻求帮助。 [DONE]
11. 如果您看到一个路由器线程的状态为 DISPATCHING,该问题常常与 DNS 相关。确保正确填充 Microsoft® Windows® 注册表中的 所有 NameServer 键:
\H KEY_LOCAL_MACH IN E\SYSTEM\CU RRENTCONTROLSET\SERVI CES\TC PI P\PARAMATERS\I NTERFACES
。
12. 使用 Telnet 在端口 25(SMTP)和端口 1325(NRPC)上测试远程服务器的连接:
13. “远程系统为未知 TCP/IP 主机”错误表明 DNS 不能将主机名解析为 IP 地址(回到步骤 11)。
如果您:
1. 在 Domino 控制台上发出show tasks命令;如果您:
2. 收集在 Log.nsf 或控制台日志中看到的 DFR 和任何相关的错误。请向 Lotus Support 寻求帮助。 [DONE]
3. 检查 DNS 中针对您的 Internet 域的 MX 记录。(有一些网站为此提供帮助,例如 www.dnsstuff.com)。如果 MX 记录:
4. 进入 Server 文档的 Basics 选项卡,并找到“ SMTP Listener Task ”字段。检查它是否被设置为 ENABLED,然后在服务器控制台上发出load smtp命令(见步骤 1)。
5. 第三方软件可能被配置为在端口 25 进行监听,然后通过另一个端口将邮件传输给
Lotus Domino(通常是端口 26)。检查您是否在端口 25 上运行第三方 SMTP 监听器:
6. 在外部网络和 Domino 环境之间有一个非 Domino 网关:
7. 使用 Telnet 从防火墙外部测试通过端口 25 到 Lotus Domino 服务器的连接。为此,在防火墙外部找到一个工作站;如果它是 Windows 平台,打开命令提示符并输入
“ telnet <MX_hostname_or_IPaddress> 25 ”。图 5 显示了能够成功连接到 Domino 服务器(注意,显示了版本号)。
如果 Telnet 连接:
8. 通过 Telnet 执行完整的 SMTP 会话。图 6 演示了 Domino 服务器的成功 SMTP 会话。要在这个步骤获得帮助,请向 Lotus Support 寻求帮助。
如果通过 Telnet 的 SMTP 会话:
9. 在防火墙 内部 找一个工作站,并重复相同的 Telnet 连接测试:
10. 直接从物理服务器 Telnet 到自身。如果 Lotus Domino 运行在 Windows 平台上,请在命令提示符处输入“ telnet localhost 25 ”
在这个场景中,问题的根源是不正确的 Internet 地址语法。不正确的回复地址的典型例子是 joe.user/org%domain@domain.com。正确的语法为 joe.user@domain.com。
1. 在 Advanced > Locations 视图下面的 Notes Client Personal Address Book 中打开 Location 文档。最常使用的 Location 文档是“ Office ”文档。如果您的 Internet Address 字段为:
2. 可能 Domino 管理员是有意留空该字段的,这样可以限制用户修改 Internet 地址,以及允许在服务器的 Domino Directory 集中执行地址查找
3. 打开 Sent 文件夹并右键单击某个 Internet 接收者的最新消息。转到 Document Properties,单击 Fields 选项卡(第二个选项卡),然后查找 iNetFrom 字段:
4. 在 Domino Directory、Configuration 文件夹、Messaging 和 Domains 视图中打开
Global Domain 文档。检查是否在 Restrictions 选项卡中列出 Notes Domain,然后查看 Conversions 选项卡。如果“ Internet Address Lookup ”字段:
5. 您的 Lactation 文档很可能已经损坏。请创建一个新的 Location 文档,并根据旧的 Location 文档填充必要的值。然后删除旧的 Location 文档,并将另一个测试消息发送到 Internet(见步骤 3)。
6. 查找并打开发送者的 Personal 文档。如果其中的 Internet Address 字段为:
7. 返回到 Global Domain 文档的 Conversions 选项卡。检查“ Local part formed from: ”字段是否设置为“ Common Name ”,以确保本地部分(@ 符号左边的部分)为“ joe.user ”而不是“ joe.user/org ”。然后检查“ Domino Domains Included ”字段是否设置为“ None ”,以确保“ %domain ”没有添加到 Internet 地址。 [DONE]
如果在下列操作中出现问题:
1. 如果您的 POP3 客户端:
2. 在 Domino 控制台上发出show tasks命令,并查找在端口 110 上监听请求的 POP3 Server 。如果您:
3. 检查用户是否有一个在 Person 文档中指定的 Internet 密码。这是用于身份验证的 POP3 密码。 User Name 取决于在 Security 选项卡上设置的以下 Server 文档:
4. 收集任何出现在 POP3 Client 或 Domino 服务器控制台 / 日志中的错误消息。如果不能在 Lotus Support Web 站点 找到这些错误,请向 Lotus Support 寻求帮助。 [DONE]
5. 使用 Telnet 从安装 POP3 Client 的工作站通过端口 110 测试 Domino 的连接。如果是
Windows 平台,请打开命令提示符并输入“ telnet <MX_hostname_or_I Paddress> 110 ”。
6. 检查是否在 Server 文档、Ports 选项卡、Internet Ports 和 Mail 选项卡中启用了 POP3 端口 110 。这个端口应该默认启用。核实之后,在控制台发出 load pop3 命令。
7. 确认 POP3 Client 被配置为使用 110 作为 POP3 端口。此外,尝试在 POP3
Name 字段中使用 IP 地址(与在 Telnet 上使用的一样)。如果 DNS 不能解析 POP3 服务器的主机名,连接就是失败的。 [DONE]
8. 使用 Telnet 测试 POP3 身份验证。从命令提示符通过端口 110 连接到 Domino 服务器。在收到 OK Domino 提示之后,输入:
User username <enter> Pass password <enter> |
9. 如果 IMAP Client:
10. 在 Domino 控制台上发出show tasks命令,并查看 IMAP Server 是否在端口 143 上监听请求。如果您:
11. 确认用户拥有在 Person 文档中指定的 Internet 密码。这就是用于身份验证的 IMAP 密码。 User Name 将取决于在 Security 选项卡中的 Server 文档:
如果这个字段设置为More name variations with lower security,那么用于身份验证的 User Name 将能够匹配用户的 Person 文档中的 shortname、lastname、common name 或 Internet 地址。
如果这个字段设置为Fewer name variations with higher security,那么用于身份验证的 User Name 将能够匹配用户的 Person 文档中的 common name 或 Internet 地址。
14. 检查是否在 Server 文档、Ports 选项卡、Internet Ports 和 Mail 选项卡中启用了
IMAP 端口 143 。这个端口应该默认启用。核实之后,在控制台发出load imap 命令:
15. 确认 IMAP Client 被配置为使用 143 作为 IMAP 端口。此外,尝试在 IMAP Server Name 字段中使用 IP 地址(与在 Telnet 上使用的一样)。如果 DNS 不能解析 IMAP 服务器的主机名,连接就是失败的。 [DONE]
16. 使用 Telnet 测试 IMAP 身份验证。从命令提示符通过端口 143 连接到 Domino 服务器。在收到 OK Domino 提示之后,输入:
tag loginusername password
如果收到重复消息的发送者:
1. 打开 Notes Client 的 Inbox 并找到重复的消息。右键单击第一条消息并转到“ Document Properties ”。单击 Field 选项卡(第二个选项卡)并突出显示PostedDate字段。记录时间戳的值:“ 04/04/2006 07:58:01 AM EDT ”。如果
2. 通过 Notes Client 在邮件文件中查找重复消息,并选择 View > Show > Page Source 。第一组字段为 RFC822Received字段。每个Received字段表示消息从源服务器到达目标服务器时经过的一个 SMTP 服务器站。每个服务器站都标记有收到消息的时间。将Received字段列表的时间戳与重复消息的时间戳进行比较:
3. 在 Document Properties 的 Field 选项卡上查找$MessageID字段。将整个值与重复消息的 $MessageID进行比较:
4. 如果PostedDate字段值不匹配,发送者的邮件客户端就会两次构建该消息。这不是真正的重复消息。出现这种情况的原因可能是发送者的邮件文件代理发生故障或发送者有意发送两次。 [DONE]
5. 在 Document Properties 的 Field 选项卡中,找到RouteServers字段。记录该信息经过的 Domino 服务器的列表,比如:
"CN=SERVER02/OU=ACM E/O=Lotus" "CN=SERVER04/OU=ACM E/O=Lotus" |
将这个列表与重复消息的RouteServers列表进行比较:
RouteServers: "CN=SERVER02/OU=ACM E/O=Lotus" "CN=SERVER04/OU=ACM E/O=Lotus"Route Times: 04/04/2006 07:58:02 AM - 04/04/2006 07:58:03 AM 04/04/2006 07:58:03 AM - 04/04/2006 07:58:04 AM |
在以上的示例中,SERVER02 在 7:58:02AM 收到消息,并于 7:58:03AM 路由到
SERVER04 。 SERVER04 在 7:58:03AM 从 SERVER02 收到消息,并于 7:58:04AM 将其投递到邮件文件。
通过将这些字段与重复消息中的相同字段进行比较,我们就可以确定哪个服务器负责传输或投递重复消息。尤其是Route Times时间戳与重复消息时间戳不匹配时,肯定是服务器引起的。
为了证实假设,需要查看 Log.nsf(Mail Routing Events 视图),其中仅有一个条目说明消息已发送给接收者。证实之后,我们可以将引起重复消息的根源限定为复制代理或接收者的邮件文件中的规则。 [DONE]
当扫描完成时,杀毒软件负责将消息以 Pending 状态返回到 Mail.box 。但是,当杀毒软件发生故障时,就可能多次将消息存放到 Mail.box,这就造成重复的消息。
目前,已知道的能够造成重复消息的唯一 Domino 服务器 bug 已经添加到 SPR#PAZR6LM4UT文档中。注意,在路由负载过重时重启路由器是引发该问题的必要条件。 [DONE]
如果邮件被发送给错误的接收者,请检查:
能够帮助收集诊断邮件路由问题数据的服务器命令包括:
图 10 显示了 show server 命令的示例输出。
下面是 Tell Router Show Queue 命令的示例输出:
Msgs State Via Destination 57 Busy(18) NRPC [ $LocalDelivery] 24 Retry( 4) NRPC CN=MesungUS/O=Sun (Push) Last error: Server not responding Next retry: 1/04/2009 09:53:09 AM Transfer Threads: Max = 18; Total = 14; Inactive = 0; Max Concurrent = 9 Delivery Threads: Max = 18; Total = 18; Inactive = 0 |
要了解更多信息,请参考 Lotus Software Knowledge Base 文档 #1093506,“ How to Read the Output of TELL ROUTER SHOW Command ”
图 11 显示 Show Tasks 命令的示例输出。
下面是 Show Tasks Time 命令的示例输出:
Database Server Process Monitor: [ 04/02/2009 15:51:05 ZE5B] SMTP Server Listen for connect requests on TCP Port:25 : [04/02/2009 15:50:35 ZE5B] SMTP Server Utility task: [ 04/02/2009 15:50:35 ZE5B] IMAP Server Listen for connect requests on TCP Port:143 : [04/02/2009 15:50:35 ZE5B] IMAP Server Utility task: [ 04/02/2009 15:50:35 ZE5B] POP3 Server Listen for connect requests on TCP Port:110 : [04/02/2009 15:50:35 ZE5B] POP3 Server Utility task: [ 04/02/2009 15:50:35 ZE5B] Process Monitor Idle: [ 04/02/2009 15:50:50 ZE5B] Agent Manager Executive '1': Idle: [04/02/2009 15:50:50 ZE5B] Calendar Connector Idle: [ 04/02/2009 15:50:35 ZE5B] SMTP Server Control task: [ 04/02/2009 15:50:50 ZE5B] Rooms and Resources Idle: [ 04/02/2009 15:50:50 ZE5B] IMAP Server Control task: [ 04/02/2009 15:50:50 ZE5B] Schedule Manager Idle: [ 04/02/2009 15:50:50 ZE5B] |
图 12 显示 Show Stat Mail 命令的示例输出。
图 12. Show Stat Mail 的输出(查看清晰图)
Route 命令例子:
Route Marketing/Acme
将邮件发送到 Acme 域中的 Marketing 服务器。服务器控制台显示表明路由何时开始的消息。
Route *
将邮件发送到所有正在等待的目标。
Route [$LocalDelivery]
覆盖下一次重试时间,并立即尝试本地投递。
Trace 命令例子:
Trace Ryan/Lotus
Determining path to server Marketing/Acme Available Ports: TCPIP Checking normal priority connection documents only... Allowing wild card connection documents... Enabling name service requests and probes... Address found in local TCPIP names table for Marketing/Acme Connecting to Marketing/Acme over TCPIP Using address 'x.xx.xxx.xxx' for Marketing/Acme on TCPIP Connected to server Marketing/Acme |
对于内部邮件投递问题,以及通过 SMTP 将邮件发送到 Internet,请使用以下调试工具:
表 1 给出了 DebugRouter 的值和日志。
DebugRouter=3 的输出是 1 和 2 的输出的累加:
DebugRouter=3 Domain *.* added Server CN=MARKETING/O=ACME added to server table, tasks = 0001. Server CN=SALES/O=ACME added to server table, tasks = 0001. Connection from CN=MARKETING/O=ACME to CN=SALES/O=ACME has a Cost= 1 Connection from CN=SALES/O=ACME to CN=MARKETING/O=ACME has a Cost= 1 Sorted Domains follow: Wildcard SMTP Domain='*.*', NextDomain='THEINTERNET ‘ Rule table is 1 segments (0 bytes) Sorted Rules follow: Sorted Connections follow: (Source -> Destination) 'CN=MARKETING/O=ACME'@'LOTUS' -> 'CN=SALES/O=ACME'@'LOTUS ‘ 'CN=SALES/O=ACME'@'LOTUS' -> 'CN=MARKETING/O=ACME'@'LOTUS' |
表 2 给出了 Log_MailRouting 的值和日志。
Log _MailRouting=40 的输出是 10、20 和 30 的输出的累加:
Log_MailRouting=40 01/04/2009 05:40:21 PM Router: Searching for messages since 01/04/2009 05:39:55 PM 01/04/2009 05:40:21 PM Router: Message <PoolNum:Block> 1:1388 has 1 recipients, priority = 1 01/04/2009 05:40:2 1 PM Router: Note NT00000D02 in mailbox 1 from'CN=Admin User/O=ACME ‘ 01/04/2009 05:40:21 PM Router: Recipient 0 = 'CN=Admin User/O=ACME@Lotus ‘ 01/04/2009 05:40:2 1 PM Router: Recipient 0 Username = 'CN=AdminUser/O=ACME' Domain = 'Lotus ‘ 01/04/2009 05:40:21 PM Router: Message <PoolNum:Block> 1:1388 adding recipient Admin User/Lotus@Lotus (mail\auser.nsf) to the Local Delivery queue 0 1/04/2009 05:40:2 1 PM Router: Message 007C88FD delivered to Admin User/Lotus from Admin User/Lotus OFB519EB71 :FC2D0599 ON85256FA1 :007C88FD Size: 1K Time: 00:00:0 1 Hop Count: 1 0 1/04/2009 05 :40:26 PM Router: Deleting delivery queue [$LocalDelivery] 0 1/04/2009 05 :40:26 PM Router: Deleting delivery recipient descriptor for CN=Admin User/O=ACME |
表 3 给出了 DebugRouterLookup 的值和日志。
DebugRouterLookup=3 [Bogus User] 0 1/04/2009 05:07:50 PM DebugRLookup: Lookup beginning for user:bogus.user name: bogus.user@sun.com 0 1/04/2009 05:07:50 PM DebugRLookup: Lookup beginning for user:bogus.user name: bogus.user 0 1/04/2009 05:07:50 PM DebugRLookup: Lookup error: UserName: bogus.user Error: User %a not listed in Domino Directory DebugRouterLookup=3 [Valid User] 02/07/2005 11:52:13 AM DebugRLookup: Lookup beginning for user:test name: test 02/07/2005 11:52:14 AM DebugRLookup: Lookup beginning for user:test name: test 02/07/2005 11:52:14 AM DebugRLookup: Lookup result has [2] matches. user: test name: test 02/07/2005 11:52:14 AM DebugRLookup: Lookup multiple match 2 Fullname[1] = CN=Test User/O=Lotus 02/07/2005 11:52:14 AM DebugRLookup: Lookup multiple match 1 Fullname[1] = CN=Test User/O=IBM/C=IN 02/07/2005 11:52:14 AM DebugRLookup: Lookup multiple match 1 Fullname[2] = Test User 02/07/2005 11:52:14 AM DebugRLookup: Lookup Error: Non unique matches for user:Test name: Test |
下面列出一些 Notes.ini 变量,可以通过在 Domino 服务器上设置它们来调试 SMTP 路由问题。这些变量内容摘自 Lotus Support Techdoc #:7003007, “ Domino Router notes.ini debug parameters for SMTP" 。
重要注意事项:SMTPClientDebug 参数不需要使用 Notes.ini 参数 debug_outfile 。所有信息都写到 Log.nsf 的 Miscellaneous 部分。不过,SMTPDebug 和 SMTPDebugIO 没有将其 outfile(输出文件)写到 LOG.NSF,因此需要使用以下参数:
debug_outfile=path/filename .txt |
SMTPClientDebug 。 捕捉出站 SMTP 协议对话。这适用于所有通过 SMTP 协议和路由器发送到其他服务器的消息。注意,这并不包含消息的内容,而是更高级别的协议命令和响应:
1 – 支持捕捉出站 SMTP 消息传输协议。
SMTPDebug 。 捕捉入站 SMTP 协议对话。这是适用于 SMTP 监听器通过 SMTP 协议从所有客户机和服务器接收到的消息:
1 – 支持 SMTP 监听器的最小日志记录。
2 – 支持对带有额外调试信息的已发送和接收的数据进行信息日志记录。这个设置能够提供随传输数据附带的已接收 / 发送的命令和响应,但不包含传输的文本。
3 – 支持详细记录已发送和接收的数据。这个设置和设置 2 记录的信息结合起来,就可以通过 SMTP 显示接收 / 发送的真实文本。注意,这并不包含消息的文本体。
4 – 这些最详细的日志记录(注意,这是未归档的值;文档仅列出前 3 个级别)。
SMTPDebugIO 。支持记录 SMTP 监听器任务接收到的所有数据:
0 – 不记录日志
1 – 在 SMTP 会话期间发送和接收的字节数
3 – 记录 SMTP 任务接收到的所有数据
4 – RFC822 数据(消息数据)
语法: SMTPDebug IO=value
警告: 仅在必要时使用 SMTPDebugIO,并且要尽快禁用它。它会让日志文件变得非常大,并且记录接收到的消息的内容。
适用于: SMTP 服务器
默认值: 0
UI 等效: 没有
图 13 给出了 SMTPDebugIO=4 的示例输出。
SMTPSaveImportErrors 。支持 SMTP 监听器在收到消息上下文时将其完整地保存下来。消息被写到系统中名为 STXXXXXX.TMP 的临时目录中的文件中。当消息保存在临时文件中之后,一行表示文件名的文字将被写到日志中。控制消息保存的参数的值如下所示:
1 – 保存所有导入失败的消息(解析 / 保存到 MAIL.BOX)。这一设置能够捕捉我们不能接收到的从其他 SMTP 服务器发送到该服务器的消息。注意,使用该值时仅能将导致 严重错误 的消息写到临时文件中。
2 – 保存服务器接收到的所有消息。
3 – 在导入和删除所有已经成功接收并写到 MAIL.BOX 的消息期间保存所有入站消息。仅将没有成功导入到 MAIL.BOX 的消息保存到临时文件中。
要了解更多信息,请参考 Knowledge Base 文档 #:1095102 “ How to trap inbound SMTP messages on a Domino server ”。
为了检查 SMTP 邮件路由中与网络相关的问题,我们可以使用这些调试参数:
debug_tcp_resolver=1 。在诊断 DNS 问题时提供“好”和“坏”示例响应。
debug_tcp_session=1 。显示关于在 TCP/IP 上打开和关闭的会话的调试信息。
要了解更多信息,请参考 Knowledge Base 文档 #: 1087806 “ How should the DEBUG OUTFILE Parameter Be Implemented? ”
现在,客户应该有信心解决邮件路由问题,并减少解决问题所需的时间。如果您是一位支持工程师,这份白皮书还能帮助您解决邮件路由问题,并加深您对调试结果的理解。
自由广告区 |
分类导航 |
邮件新闻资讯: IT业界 | 邮件服务器 | 邮件趣闻 | 移动电邮 电子邮箱 | 反垃圾邮件|邮件客户端|网络安全 行业数据 | 邮件人物 | 网站公告 | 行业法规 网络技术: 邮件原理 | 网络协议 | 网络管理 | 传输介质 线路接入 | 路由接口 | 邮件存储 | 华为3Com CISCO技术 | 网络与服务器硬件 操作系统: Windows 9X | Linux&Uinx | Windows NT Windows Vista | FreeBSD | 其它操作系统 邮件服务器: 程序与开发 | Exchange | Qmail | Postfix Sendmail | MDaemon | Domino | Foxmail KerioMail | JavaMail | Winwebmail |James Merak&VisNetic | CMailServer | WinMail 金笛邮件系统 | 其它 | 反垃圾邮件: 综述| 客户端反垃圾邮件|服务器端反垃圾邮件 邮件客户端软件: Outlook | Foxmail | DreamMail| KooMail The bat | 雷鸟 | Eudora |Becky! |Pegasus IncrediMail |其它 电子邮箱: 个人邮箱 | 企业邮箱 |Gmail 移动电子邮件:服务器 | 客户端 | 技术前沿 邮件网络安全: 软件漏洞 | 安全知识 | 病毒公告 |防火墙 攻防技术 | 病毒查杀| ISA | 数字签名 邮件营销: Email营销 | 网络营销 | 营销技巧 |营销案例 邮件人才:招聘 | 职场 | 培训 | 指南 | 职场 解决方案: 邮件系统|反垃圾邮件 |安全 |移动电邮 |招标 产品评测: 邮件系统 |反垃圾邮件 |邮箱 |安全 |客户端 |