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 |