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

其他关键字

本节说明了其他关键字。其中包含以下各节:

进程通道覆盖

关键字:notificationchanneldispositionchannel

这些关键字将进程通道分别替换为用于初始队列传送状态通知 (DSN) 和邮件处理通知 (MDN) 的位置。如果已命名的通道不存在,Messaging Server 将恢复使用进程通道。

notificationchannel 将进程通道替换为用于初始队列传送状态通知 (Delivery Status Notification, DSN) 的位置。如果已命名的通道不存在,Messaging Server 将恢复使用进程通道。

dispositionchannel 将进程通道替换为用于初始队列邮件处理通知 (Message Disposition Notification, MDN) 的位置。如果已命名的通道不存在,Messaging Server 将恢复使用进程通道。

通道操作类型

关键字:submit

Messaging Server 支持 RFC 2476 的邮件提交协议。submit 关键字可以用于将通道标记为仅用来提交的通道。通常此功能主要在 TCP/IP 通道(例如专用于提交邮件的特殊端口上运行的 SMTP 服务器)中有用;RFC 2476 创建了 587 端口用于此类邮件提交。

Pipe 通道

关键字:user

user 关键字用于 pipe 通道中,指明通道将在其下运行的用户名称。

请注意,user 参数通常必须为小写,但如果是引用的参数,则保持原来的大小写状态。

指定邮箱过滤器文件位置

关键字:filter、nofilter、channelfilter、nochannelfilter、destinationfilternodestinationfilter、sourcefilter、nosourcefilter、fileinto、nofileinto

filter 关键字可以用来在本地和 ims-ms 通道中指定用于该通道的用户过滤器文件的位置。应使用一个必需的 URL 参数说明过滤器文件的位置。nofilter 是默认设置,表示没有为通道启用用户邮箱过滤器。

关键字 sourcefilterdestinationfilter 可用于一般 MTA 通道中,分别指定对外来邮件和外发邮件应用的通道级别的过滤器。这些关键字使用必需的 URL 参数说明通道过滤器文件的位置。nosourcefilternodestinationfilter 是默认设置,表示不为通道的任意方向启用通道邮箱过滤器。

已作废的关键字 channelfilternochannelfilter 分别是 destinationfilternodestinationfilter 的同义词。

fileinto 关键字(当前仅支持用于 ims-ms 和 LMTP 通道)指定应用邮箱过滤器 fileinto 运算符时更改地址的方式。对于 ims-ms 通道,通常的用法为:

fileinto $U+$S@$D

以上命令指定应该将文件夹名称作为子地址插入原来的地址,用以替换原来存在的任意子地址。

对于 LMTP 通道,通常的用法为:

fileinto @$4O:$U+$S@$D

其中 $4O 包含 4 和字母 O(不是数字零)。

垃圾邮件过滤器关键字

关键字:destinationspamfilterXoptinsourcespamfilterXoptin

destinationspamfilterXoptin 指定发送到此通道的所有邮件均通过过滤软件 X 运行。(过滤软件 X 由 option.dat 中的 spamfilterX_library 定义。)关键字后面跟过滤器参数,可用的参数取决于过滤程序。

destinationspamfilterXoptin 指定源自此通道的所有邮件均通过过滤软件 X 运行。(过滤软件 X 由 option.dat 中的 spamfilterX_library 定义。)关键字后面跟系统范围内的默认参数,可用的参数取决于过滤程序。如果 switchchannel 有效,则应将此关键字放置在 switched-to 通道上。

有关如何使用这些关键字的完整详细信息,请参见指定通道级别的过滤

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

关键字: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

NO-SOLICIT SMTP 扩展支持

关键字:sourcenosolicitdestinationnosolicit

Internet-Draft draft-malamud-no-soliciting-07.txt 中所述的 NO-SOLICIT SMTP 扩展已经在 Messaging Server 中作为建议的标准实施。以下通道关键字可以用来控制此功能:

sourcenosolicit 指定一个以逗号分隔的请求字段值列表,在此通道提交的邮件中将阻塞这些请求字段值。值的此列表将显示在 NO-SOLICIT EHLO 响应中。可以在这些值中使用全局样式通配符,但是,包含通配符的值将不会在 EHLO 通告中显示。

destinationnosolicit 指定一个以逗号分隔的请求字段值列表,在此通道排队的邮件中将不接受这些请求字段值。

对错误的 RCPT TO 地址设置限制

关键字:deferralrejectlimit

对单次会话中允许的错误 RCPT TO: 地址设置数量限制。在拒绝指定数量的 To: 地址后,所有后续收件人(无论正确还是错误)都将被拒绝,并显示 4xx 错误。提供与 ALLOW_REJECTIONS_BEFORE_DEFERRAL SMTP 通道关键字相同的功能,但以每个通道为基础。