本节说明了其他关键字。其中包含以下各节:
关键字:notificationchannel、dispositionchannel
这些关键字将进程通道分别替换为用于初始队列传送状态通知 (DSN) 和邮件处理通知 (MDN) 的位置。如果已命名的通道不存在,Messaging Server 将恢复使用进程通道。
notificationchannel 将进程通道替换为用于初始队列传送状态通知 (Delivery Status Notification, DSN) 的位置。如果已命名的通道不存在,Messaging Server 将恢复使用进程通道。
dispositionchannel 将进程通道替换为用于初始队列邮件处理通知 (Message Disposition Notification, MDN) 的位置。如果已命名的通道不存在,Messaging Server 将恢复使用进程通道。
Messaging Server 支持 RFC 2476 的邮件提交协议。submit 关键字可以用于将通道标记为仅用来提交的通道。通常此功能主要在 TCP/IP 通道(例如专用于提交邮件的特殊端口上运行的 SMTP 服务器)中有用;RFC 2476 创建了 587 端口用于此类邮件提交。
关键字:user
user 关键字用于 pipe 通道中,指明通道将在其下运行的用户名称。
请注意,user 参数通常必须为小写,但如果是引用的参数,则保持原来的大小写状态。
关键字:filter、nofilter、channelfilter、nochannelfilter、destinationfilter、 nodestinationfilter、sourcefilter、nosourcefilter、fileinto、nofileinto
filter 关键字可以用来在本地和 ims-ms 通道中指定用于该通道的用户过滤器文件的位置。应使用一个必需的 URL 参数说明过滤器文件的位置。nofilter 是默认设置,表示没有为通道启用用户邮箱过滤器。
关键字 sourcefilter 和 destinationfilter 可用于一般 MTA 通道中,分别指定对外来邮件和外发邮件应用的通道级别的过滤器。这些关键字使用必需的 URL 参数说明通道过滤器文件的位置。nosourcefilter 和 nodestinationfilter 是默认设置,表示不为通道的任意方向启用通道邮箱过滤器。
已作废的关键字 channelfilter 和 nochannelfilter 分别是 destinationfilter 和 nodestinationfilter 的同义词。
fileinto 关键字(当前仅支持用于 ims-ms 和 LMTP 通道)指定应用邮箱过滤器 fileinto 运算符时更改地址的方式。对于 ims-ms 通道,通常的用法为:
fileinto $U+$S@$D
以上命令指定应该将文件夹名称作为子地址插入原来的地址,用以替换原来存在的任意子地址。
对于 LMTP 通道,通常的用法为:
fileinto @$4O:$U+$S@$D
其中 $4O 包含 4 和字母 O(不是数字零)。
关键字:destinationspamfilterXoptin、sourcespamfilterXoptin
destinationspamfilterXoptin 指定发送到此通道的所有邮件均通过过滤软件 X 运行。(过滤软件 X 由 option.dat 中的 spamfilterX_library 定义。)关键字后面跟过滤器参数,可用的参数取决于过滤程序。
destinationspamfilterXoptin 指定源自此通道的所有邮件均通过过滤软件 X 运行。(过滤软件 X 由 option.dat 中的 spamfilterX_library 定义。)关键字后面跟系统范围内的默认参数,可用的参数取决于过滤程序。如果 switchchannel 有效,则应将此关键字放置在 switched-to 通道上。
有关如何使用这些关键字的完整详细信息,请参见指定通道级别的过滤。
aliasdetourhost 允许对托管用户的 mailHost 属性值进行特定于源通道的替换。尤其是,aliasdetourhost 常用于在将本地(此系统上托管的)用户的邮件路由到单独的主机以进行某种处理时实现“绕道而行”。邮件可以在原始主机上进行验证(邮件的地址是合法本地地址),绕行到处理主机,然后再返回原始主机进行扩展和传送。
aliasdetourhost 允许更好地配置和使用通道及第三方过滤主机的“中间过滤”排序。除了使用备用转换通道外,通常还使用 aliasdetourhost。aliasdetourhost 用于影响本地(系统上托管的)用户的路由选择,而备用转换通道用于影响远程收件人的路由选择。
aliasdetourhost 的参数是主机或域名,或者是主机/域定义。(请注意,重写规则可以处理主机名、IP 实际地址和通道标记,这些均被默认为主机名。)如果在源通道上指定关键字,此关键字将导致储存在 LDAP 中的地址别名扩展在邮件主机信息检查点之前停止(处理转换标记信息之后)。邮件将在该点被发送到 aliasdetourhost 值,并在别名扩展之前、地址验证之后成功地完成地址处理。
以下示例说明了可以在何处使用 aliasdetourhost 来避免各种与转换通道过滤相关的问题:假定使用前端 MTA 和后端邮件存储设置系统。用户将其传送选项设置为 forward 和 mailbox。MTA 将备用转换通道用于反病毒/垃圾邮件系统。邮件到达此用户时,MTA 别名将扩展并生成两个收件人(一个本地收件人,一个远程收件人)。远程收件人的副本将直接被发送。另一方面,本地收件人的副本将进入转换通道进行扫描,然后返回。然后,将再次应用别名扩展生成远程收件人的第二个副本,本地收件人的副本将正常传送。得到的结果:两个副本发送到远程收件人,一个副本发送到本地收件人。
不是将备用转换通道用于本地托管用户(但对于其他收件人,可能仍将使用备用转换通道),而是使用 aliasdetourhost 的通道可以执行以下操作:
接受邮件。
将邮件路由到外部垃圾邮件/病毒过滤器
为地址扩展和传送重新接受邮件。
示例 1:
假定从 MTA 的独立主机上运行第三方扫描程序。以下示例允许使用用户条目转发而不必创建虚假复制,并在接受邮件之前保留执行收件人地址验证的功能。
创建新通道 tcp_scanner。
在该通道上放置 daemon 关键字,指向过滤系统。将 enqueue_removeroute 也添加到此通道。在 imta.cnf 中,tcp_scanner 通道与以下通道类似:
tcp_scanner smtp mx single_sys subdirs 20 noreverse maxjobs 7 pool SMTP_POOL daemon my_a-v_filter.siroe.com enqueue_removeroute tcp_scanner-daemon |
在要扫描的所有入站源 tcp 通道(可能包括 tcp_local、tcp_submit、tcp_intranet 和 tcp_auth)上,将 aliasDetourHost tcp_scanner-daemon 添加到 tcp_local。以下介绍 tcp_local 和 tcp_submit 的一个示例。
! tcp_local tcp_local smtp mx single_sys remotehost inner switchchannel identnonenumeric subdirs 20 maxjobs 7 pool SMTP_POOL maytlsserver maysaslserver saslswitchchannel tcp_auth missingrecipientpolicy 0 aliasdetourhost tcp_scanner-daemon tcp-daemon |
! tcp_submit tcp_submit submit smtp mx single_sys mustsaslserver maytlsserver missingrecipientpolicy 4 aliasdetourhost tcp_scanner-daemon tcp_submit-daemon |
请注意,aliasdetourhost (tcp_scanner-daemon) 的参数是新通道 tcp_scanner 的正式主机名。
通过 tcp_scanner 通道,创建重写规则以接收扫描系统返回的邮件。
[1.2.3.4] $E$R$U[1.2.3.4]@tcp_scanner-daemon
其中,1.2.3.4 是扫描程序系统的 IP 地址。
如果没有此重写规则,邮件将通过其他 tcp* 源通道之一进入,并且将因为这些源通道均有 aliasdetourhost 而再次扫描邮件。将出现一个回路。
重新编译配置并重新启动分发程序。
#imsimta cnbuild #imsimta restart dispatcher |
示例 2:
假定第三方扫描程序在与 MTA 相同的主机上运行,但是在不同的端口上进行侦听。假定在端口 10024 上接受邮件,并在端口 10025 上传回邮件。
创建新通道 tcp_scanner。
! tcp_scanner tcp_scanner smtp nomx single_sys identnonenumeric subdirs 20 maxjobs 7 pool SCAN_POOL daemon 127.0.0.1 port 10024 enqueue_removeroute tcp_scanner-daemon |
在要扫描的所有入站源 tcp 通道(可能包括 tcp_local、tcp_submit、tcp_intranet 等)上,将 aliasDetourHost tcp_scanner-daemon 添加到 tcp_local。以下介绍 tcp_local 和 tcp_submit 的一个示例。
! tcp_local tcp_local smtp mx single_sys remotehost inner switchchannel identnonenumeric subdirs 20 maxjobs 7 pool SMTP_POOL maytlsserver maysaslserversaslswitchchannel tcp_auth missingrecipientpolicy 0 aliasdetourhost tcp_scanner-daemon tcp-daemon |
! tcp_submit tcp_submit submit smtp mx single_sys mustsaslserver maytlsserver missingrecipientpolicy 4 aliasdetourhost tcp_scanner-daemon tcp_submit-daemon |
添加到 mappings 文件以通过 tcp_scanner 通道重新路由出站邮件。
CONVERSIONS in-chan=tcp_scanner;out-chan=*;CONVERT No in-chan=tcp_*;out-chan=tcp_local;CONVERT Yes,Channel=tcp_scanner
在 job_controller.cnf 中的 SMTP_POOL 下,添加并发扫描的数量限制。
尽管也应为扫描软件设置限制,但最好保持相同的设置以便在扫描程序不接受邮件时,Messaging Server 不会尝试将邮件发送到扫描程序。
! [POOL=SCAN_POOL] job_limit=2 ! |
将新服务添加到 dispatcher.cnf 以接受特殊端口上扫描程序返回的邮件,并使其源于 tcp_scan 以免再次对其扫描。
! [SERVICE=SMTP_SCANNING] INTERFACE_ADDRESS=127.0.0.1 PORT=10025 IMAGE=IMTA_BIN:tcp_smtp_server LOGFILE=IMTA_LOG:tcp_smtp_server.log STACKSIZE=2048000 PARAMETER=CHANNEL=tcp_scanner ! |
重新编译配置并重新启动分发程序。
# imsimta cnbuild # imsimta restart job_controller # imsimta restart dispatcher |
关键字:sourcenosolicit 和 destinationnosolicit
Internet-Draft draft-malamud-no-soliciting-07.txt 中所述的 NO-SOLICIT SMTP 扩展已经在 Messaging Server 中作为建议的标准实施。以下通道关键字可以用来控制此功能:
sourcenosolicit 指定一个以逗号分隔的请求字段值列表,在此通道提交的邮件中将阻塞这些请求字段值。值的此列表将显示在 NO-SOLICIT EHLO 响应中。可以在这些值中使用全局样式通配符,但是,包含通配符的值将不会在 EHLO 通告中显示。
destinationnosolicit 指定一个以逗号分隔的请求字段值列表,在此通道排队的邮件中将不接受这些请求字段值。
对单次会话中允许的错误 RCPT TO: 地址设置数量限制。在拒绝指定数量的 To: 地址后,所有后续收件人(无论正确还是错误)都将被拒绝,并显示 4xx 错误。提供与 ALLOW_REJECTIONS_BEFORE_DEFERRAL SMTP 通道关键字相同的功能,但以每个通道为基础。