通道是用于处理邮件的基本 MTA 组件。通道表示与另一个计算机系统或系统组的连接。各个通道中实际的硬件连接或软件传输或者这两者,可能大大不同。
通道执行以下功能:
将邮件传输到远程系统,并在发送邮件后将其从队列中删除。
从远程系统接收邮件,并将其放入适当的通道队列。
将邮件传送到本地邮件存储。
将邮件传送到用于特殊处理的程序。
邮件在进入 MTA 的过程中由通道排队,离开 MTA 的过程中被取消排队。通常,邮件经由一个通道进入,然后通过另一个通道离开。通道可以将邮件取消排队、处理邮件或将邮件排入另一个 MTA 通道。
通常(并非总是),通道与两个程序相关联:主程序和从程序。从程序从其他系统接收邮件并将其添加至通道的邮件队列中。主程序将邮件从通道传输到其他系统。
例如,SMTP 通道有一个用来传输邮件的主程序和一个用来接收邮件的从程序。分别为 SMTP 客户机和服务器。
主通道程序通常在 MTA 已启动操作的地方负责外发的连接。主通道程序:
响应本地的处理请求时运行。
使邮件从通道邮件队列中取消排队。
如果目的地格式不同于排入的邮件的格式,则根据需要执行地址、标题和内容的转换。
启动邮件的网络传输。
从通道程序通常在 MTA 响应外部请求的地方接受外来连接。从通道程序:
响应外部事件或本地请求时运行。
将邮件排入通道。通过重写规则传送信封地址确定目标通道。
例如,图 8–3 显示了两个通道程序,Channel 1 和 Channel 2。Channel 1 中的从程序从远程系统接收邮件。它将查看地址,根据需要应用重写规则,然后基于重写的地址将邮件排入适当的通道邮件队列。
主程序从队列中将邮件取消排队并启动邮件的网络传输。请注意,主程序只能将邮件从其自己的通道队列中取消排队。
虽然典型通道有一个主程序和一个从程序,但也有可能一个通道仅包含一个从程序或一个主程序。例如,Messaging Server 提供的 ims-ms 通道仅包含一个主程序,因为此通道仅负责将邮件从队列退回到本地邮件存储系统,如图 8–4 所示。
所有通道均具有邮件队列与其关联。邮件进入邮件服务系统时,从程序确定将此邮件排入哪个邮件队列。排入的邮件存储在通道队列目录的邮件文件中。默认情况下,这些目录存储在以下位置:msg_svr_base/data/queue/channel /*。有关调整邮件队列大小的信息,请参见 《Sun Java System Communications Services 6 2005Q4 Deployment Planning Guide》中的“Disk Sizing for MTA Message Queues”
请勿在 MTA 队列目录(即 imta_tailor 文件中 IMTA_QUEUE 的值)中添加任何文件或目录,因为这样会出现问题。将单独的文件系统用于 MTA 队列目录时,请在该安装点下创建子目录并将该子目录指定为 IMTA_QUEUE 的值。
通道定义显示在 MTA 配置文件 (imta.cnf) 的下半部分,在重写规则之后(请参见MTA 配置文件中的规则部分和通道定义的开始部分)。
通道定义包含通道的名称(后跟一个定义通道配置的可选关键字列表)和唯一的通道标记(在重写规则中将使用该标记将邮件路由到该通道)。通道定义由单个空白行分隔。通道定义中可能会有注释,但不会有空白行。
[blank line] ! sample channel definition Channel_Name keyword1 keyword2 Channel_Tag [blank line] |
多个通道定义在一起被称为通道主机表。单个通道定义被称为通道块。例如,在以下示例中通道主机表包含三个通道定义(块)。
! test.cnf - An example configuration file. ! ! Rewrite Rules . . . ! BEGIN CHANNEL DEFINITIONS ! FIRST CHANNEL BLOCK l local-host ! SECOND CHANNEL BLOCK a_channel defragment charset7 usascii a-daemon ! THIRD CHANNEL BLOCK b_channel noreverse notices 1 2 3 b-daemon |
典型的通道条目类似如下:
tcp_intranet smtp mx single_sys subdirs 20 noreverse maxjobs 7 SMTP_POOL maytlsserver allowswitchchannel saslswitchchannel tcp_auth tcp_intranet-daemon |
此例中第一个字 tcp_intranet 是通道名称。此例中的最后一个字 tcp_intranet-daemon 称为通道标记。通道标记是重写规则用来定向邮件的名称。通道名称和通道标记之间的字称为通道关键字,用于指定如何处理邮件。许多不同的关键字允许用许多方式处理邮件。在第 12 章,配置通道定义中列出并介绍了通道关键字的完整列表。
通道主机表定义了 Messaging Server 可以使用的通道以及与每个通道相关联的系统的名称。
在 UNIX 系统上,文件中的第一个通道块往往是本地通道 l。(特殊情况是 defaults 通道,它可以出现在本地通道之前。)本地通道用于决定路由和发送由 UNIX 邮件工具发送的邮件。
也可以在 MTA 选项文件 option.dat 中为通道设置全局选项,或在通道选项文件中为特定通道设置选项。有关选项文件的更多信息,请参见选项文件和 TCP/IP (SMTP) 通道选项文件。有关配置通道的详细信息,请参见第 12 章,配置通道定义。有关创建 MTA 通道的更多信息,请参见MTA 配置文件。