Sun Java System Messaging Server 6 2005Q4 管理指南

地址验证之后扩展之前的路由

关键字:aliasdetourhost

aliasdetourhost 允许对托管用户的 mailHost 属性值进行特定于源通道的替换。尤其是,aliasdetourhost 常用于在将本地(此系统上托管的)用户的邮件路由到单独的主机以进行某种处理时实现“绕道而行”。邮件可以在原始主机上进行验证(邮件的地址是合法本地地址),绕行到处理主机,然后再返回原始主机进行扩展和传送。

aliasdetourhost 允许更好地配置和使用通道及第三方过滤主机的“中间过滤”排序。除了使用备用转换通道外,通常还使用 aliasdetourhostaliasdetourhost 用于影响本地(系统上托管的)用户的路由选择,而备用转换通道用于影响远程收件人的路由选择。

aliasdetourhost 的参数是主机或域名,或者是主机/域定义。(请注意,重写规则可以处理主机名、IP 实际地址和通道标记,这些均被默认为主机名。)如果在源通道上指定关键字,此关键字将导致储存在 LDAP 中的地址别名扩展在邮件主机信息检查点之前停止(处理转换标记信息之后)。邮件将在该点被发送到 aliasdetourhost 值,并在别名扩展之前、地址验证之后成功地完成地址处理。

以下示例说明了可以在何处使用 aliasdetourhost 来避免各种与转换通道过滤相关的问题:假定使用前端 MTA 和后端邮件存储设置系统。用户将其传送选项设置为 forwardmailbox。MTA 将备用转换通道用于反病毒/垃圾邮件系统。邮件到达此用户时,MTA 别名将扩展并生成两个收件人(一个本地收件人,一个远程收件人)。远程收件人的副本将直接被发送。另一方面,本地收件人的副本将进入转换通道进行扫描,然后返回。然后,将再次应用别名扩展生成远程收件人的第二个副本,本地收件人的副本将正常传送。得到的结果:两个副本发送到远程收件人,一个副本发送到本地收件人。

不是将备用转换通道用于本地托管用户(但对于其他收件人,可能仍将使用备用转换通道),而是使用 aliasdetourhost 的通道可以执行以下操作:

示例 1

假定从 MTA 的独立主机上运行第三方扫描程序。以下示例允许使用用户条目转发而不必创建虚假复制,并在接受邮件之前保留执行收件人地址验证的功能。

  1. 创建新通道 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
    
  2. 在要扫描的所有入站源 tcp 通道(可能包括 tcp_local、tcp_submittcp_intranettcp_auth)上,将 aliasDetourHost tcp_scanner-daemon 添加到 tcp_local。以下介绍 tcp_localtcp_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 的正式主机名。

  3. 通过 tcp_scanner 通道,创建重写规则以接收扫描系统返回的邮件。

    [1.2.3.4] $E$R$U[1.2.3.4]@tcp_scanner-daemon

    其中,1.2.3.4 是扫描程序系统的 IP 地址。

    如果没有此重写规则,邮件将通过其他 tcp* 源通道之一进入,并且将因为这些源通道均有 aliasdetourhost 而再次扫描邮件。将出现一个回路。

  4. 重新编译配置并重新启动分发程序。


    #imsimta cnbuild
    #imsimta restart dispatcher
    

示例 2

假定第三方扫描程序在与 MTA 相同的主机上运行,但是在不同的端口上进行侦听。假定在端口 10024 上接受邮件,并在端口 10025 上传回邮件。

  1. 创建新通道 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
  2. 在要扫描的所有入站源 tcp 通道(可能包括 tcp_localtcp_submittcp_intranet 等)上,将 aliasDetourHost tcp_scanner-daemon 添加到 tcp_local。以下介绍 tcp_localtcp_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
  3. 添加到 mappings 文件以通过 tcp_scanner 通道重新路由出站邮件。

    CONVERSIONS
    
    in-chan=tcp_scanner;out-chan=*;CONVERT     No
    in-chan=tcp_*;out-chan=tcp_local;CONVERT   Yes,Channel=tcp_scanner
  4. job_controller.cnf 中的 SMTP_POOL 下,添加并发扫描的数量限制。

    尽管也应为扫描软件设置限制,但最好保持相同的设置以便在扫描程序不接受邮件时,Messaging Server 不会尝试将邮件发送到扫描程序。


    !
    [POOL=SCAN_POOL]
    job_limit=2
    !
  5. 将新服务添加到 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
    !
  6. 重新编译配置并重新启动分发程序。


    # imsimta cnbuild
    # imsimta restart job_controller
    # imsimta restart dispatcher