配置 LMTP 传送机制需要在中继计算机和后端存储上均进行配置。在中继上,必须更改 DELIVERY_OPTIONS MTA 选项(在 option.dat 中),以便将要传送到存储的邮件传递到 LMTP 通道。必须用分发程序(但不需要作业控制器)配置后端存储。必须配置分发程序以运行 LMTP 服务器。
在典型的多层部署中,用户置备于不同的后端消息存储计算机中。这些后端计算机中的一台或多台可能未打开 LMTP,因此前端中继需要了解哪些存储计算机可以识别 LMTP。通过使用常规数据库功能明确命名那些配置为接受 LMTP 传送的消息存储,可以实现此目的。
要配置入站 MTA 中继以使用 LMTP,请执行以下操作:
修改 imta.cnf 文件并更改 LMTP 重写规则,使之如下所示:
! lmtp .lmtp $E$F$U%$H.lmtp@lmtpcs-daemon .lmtp $B$F$U%$H@$H@lmtpcs-daemon ! ! lmtp native .lmtpn $E$F$U%$H.lmtpn@lmtpcn-daemon .lmtpn $B$F$U%$H@$H@lmtpcn-daemon ! |
将邮箱 DELIVERY_OPTIONS 设置为:
#*mailbox=@$X.LMTP:$M%$\$2I$_+$2S@lmtpcs-daemon |
将本机 DELIVERY_OPTIONS 子句设置为:
#*native=@$X.LMTPN:$M+$2S@native-daemon |
为每个 tcp_lmtp* 通道块添加通道关键字 multigate connectcanonical 。
为 tcp_lmtpcs 通道添加以下通道关键字:
fileinto @$4O:$U+$S@$D |
请注意,以上关键字中的 "O" 为大写字母 O,而不是数字零。
外来 MTA 中继的配置设置应该如下所示:
DELIVERY_OPTIONS 的 option.dat 条目应该如下所示:
!------------------------------------------ ! Modified DELIVERY_OPTIONS to activate LMTP ! delivery from a frontend to the backend store !-------------------------------------------- ! DELIVERY_OPTIONS=\ #*mailbox=@$X.LMTP:$M%$\$2I$_+$2S@lmtpcs-daemon,\ #&members=*,\ #*native=@$X.LMTPN:$M+$2S@native-daemon,\ #*unix=@$X.LMTPN:$M,\ #*file=@$X.LMTPN:+$F,\ #&@members_offline=*,\ #/hold=@hold-daemon:$A,\ #program=$M%$P@pipe-daemon,\ #forward=**,\ #*^!autoreply=$M+$D@bitbucket ! |
完成更改之后,已修改的 imta.cnf 重写规则应该如下所示:
! lmtp .lmtp $E$F$U%$H.lmtp@lmtpcs-daemon .lmtp $B$F$U%$H@$H@lmtpcs-daemon ! ! lmtp native .lmtpn $E$F$U%$H.lmtpn@lmtpcn-daemon .lmtpn $B$F$U%$H@$H@lmtpcn-daemon ! |
更改的通道块应该如下所示:
! ! tcp_lmtpcs (LMTP client - store) tcp_lmtpcs defragment lmtp multigate connectcanonical \ fileinto @$4O:$U+$S@$D port 225 nodns single_sys \ subdirs 20 maxjobs 7 pool SMTP_POOL dequeue_removeroute lmtpcs-daemon ! ! tcp_lmtpcn (LMTP client - native) tcp_lmtpcn defragment lmtp multigate connectcanonical port 226 \ nodns single_sys subdirs 20 maxjobs 7 pool SMTP_POOL \ dequeue_removeroute lmtpcn-daemon |
如果后端存储要通过 LMTP 接收邮件,则它们只需要一个最小的 MTA。需要一个分发程序、一个作业控制器和简单的 MTA 配置。特别是需要 dispatcher.cnf、job_controller.cnf 和 mappings 文件,这些文件构成 MAT 配置的唯一重要部分。
dispatcher.cnf 文件必须包含以下内容:
! VERSION=1.1 ! IMTA default dispatcher configuration file ! ! Global defaults ! MIN_PROCS=1 MAX_PROCS=10 MIN_CONNS=30 MAX_CONNS=50 MAX_SHUTDOWN=2 MAX_LIFE_TIME=86400 MAX_LIFE_CONNS=10000 MAX_IDLE_TIME=600 HISTORICAL_TIME=0 ! ! rfc 2033 LMTP server - store ! [SERVICE=LMTPSS] PORT=225 IMAGE=IMTA_BIN:tcp_lmtp_server LOGFILE=IMTA_LOG:tcp_lmtpss_server.log PARAMETER=CHANNEL=tcp_lmtpss STACKSIZE=2048000 ! Uncomment the following line and set INTERFACE_ADDRESS to an ! appropriate host IP (dotted quad) if the dispatcher needs to ! listen on a specific interface (e.g. in a HA environment). ! INTERFACE_ADDRESS=! ! rfc 2033 LMTP server - native ! [SERVICE=LMTPSN] PORT=226 IMAGE=IMTA_BIN:tcp_lmtpn_server LOGFILE=IMTA_LOG:tcp_lmtpsn_server.log PARAMETER=CHANNEL=tcp_lmtpsn STACKSIZE=2048000 |
请注意,默认情况下,dispatcher.cnf 文件中的 LMTP 服务均已被注释。您必须取消其注释才能使 LMTP 工作。
还可以设置 MAX_CONNS、MAX_PROCS、MAX_LIFE_CONNS 和 MAX_LIFE_TIME 的常规分发程序选项,但是需要针对您的硬件相应地进行设置。
PORT_ACCESS 映射很重要。后端服务器的 LMTP 实现旨在用作 Sun Java System Messaging Server 中继和后端存储之间的专用协议。您必须使用 PORT_ACCESS 映射以确保只有此类中继可以连接到这些服务。您的映射文件应类似于此:
PORT_ACCESS TCP|*|225|192.18.74.206|* $Y TCP|*|226|192.18.74.206|* $Y TCP|*|225|192.18.74.129|* $Y TCP|*|226|192.18.74.129|* $Y TCP|*|*|*|* $N500$ Do$ not$ connect$ to$ this$ machine |
以上 IP 地址是 LMTP 服务器和客户端的 IP 地址。您应该用连接到后端存储的网络中的中继 IP 地址替换此处在 PORT_ACCESS 映射表中指定的示例 IP 地址。
必须有一个 imta.cnf 文件,但是它只用于完成配置。最小的 imta.cnf 文件由以下通道定义组成:
! ! IMTA configuration file ! ! tcp_lmtpss (LMTP server - store) tcp_lmtpss lmtp tcp_lmtpss-daemon ! ! tcp_lmtpsn (LMTP server - native) tcp_lmtpsn lmtp tcp_lmtpsn-daemon
请注意,默认情况下,LMTP 通道定义已被注释掉。如果需要 LMTP 工作,必须取消其注释。
您可以使用安装时创建的默认 job_controller.cnf 文件。不需要修改此文件。
存在这样的情况,您可能希望后端存储具有 MTA 的全部功能,但是仍旧具有使用 LMTP 的装入保存功能。例如,您可能需要在后端存储上的程序传送。在这种情况下,中继应按照上述配置与 LMTP 配合使用的入站 MTA 中继中的说明进行配置。
从后端存储邮件服务系统的配置到使用 LMTP 直接传送到存储的配置的唯一更改是,需要将以下行添加到 dispatcher.cnf 文件的结尾:
! rfc 2033 LMTP server - store ![SERVICE=LMTPSS] PORT=225 IMAGE=IMTA_BIN:tcp_lmtp_server LOGFILE=IMTA_LOG:tcp_lmtpss_server.log PARAMETER=CHANNEL=tcp_lmtpss STACKSIZE=2048000 ! Uncomment the following line and set INTERFACE_ADDRESS to an ! appropriate host IP (dotted quad) if the dispatcher needs to ! listen on a specific interface (e.g. in a HA environment). !INTERFACE_ADDRESS= ! ! rfc 2033 LMTP server - native ! [SERVICE=LMTPSN] PORT=226 IMAGE=IMTA_BIN:tcp_lmtpn_server LOGFILE=IMTA_LOG:tcp_lmtpsn_server.log PARAMETER=CHANNEL=tcp_lmtpsn STACKSIZE=2048000 ! Uncomment the following line and set INTERFACE_ADDRESS to an ! appropriate host IP (dotted quad) if the dispatcher needs to ! listen on a specific! interface (e.g. in a HA environment). !INTERFACE_ADDRESS= ! |
请注意,默认情况下,dispatcher.cnf 文件中的 LMTP 服务均已被注释。您必须取消其注释才能使 LMTP 工作。此外,LMTP 端口号仅为示例,您可以任意选择。
这与上述用于仅为 LMTP 配置后端存储时的整个 dispatcher.cnf 文件相同。映射文件还需要 PORT_ACCESS 映射,正如 LMTP 需要后端存储一样。
如果 LMTP 通道选项 MAILBOX_BUSY_FAST_RETRY 被设置为 1(默认值),将通过以下方式处理响应 LMTP 邮件数据时的 4.2.1 邮箱忙错误:在很短的随机时间间隔后重试邮件;不应用正常邮件的 backoff 值。将该选项设置为 0 可禁用此行为。