Sun Java System Messaging Server 6.3 管理指南

13.5.3.2 使用转换通道环境变量

对邮件正文部分进行操作时,在通道和站点提供的程序之间来回传递 MIME 标题行信息(或整个正文部分)通常是很有用的。例如,程序可能需要 Content-typeContent-disposition 标题行信息以及邮件正文部分。通常,站点提供的程序的主要输入部分是从文件读取的邮件正文部分。对正文部分进行处理后,程序需要将其写入一个文件,转换通道可以从该文件中进行读取。这种类型的信息传递是通过使用转换通道环境变量进行的。

可以使用 parameter-symbol-* 参数在 conversions 文件中创建环境变量,或通过使用一组预定义的转换通道环境变量进行创建(请参见13.5.3.3 使用转换通道输出选项)。

以下 conversions 文件条目和外来邮件标题显示了如何使用环境变量将 MIME 信息传递给站点提供的程序。

conversions 文件条目:


in-channel=*; in-type=application; in-subtype=*;
  parameter-symbol-0=NAME; parameter-copy-0=*;
  dparameter-symbol-0=FILENAME; dparameter-copy-0=*;
  message-header-file=2; original-header-file=1;
  override-header-file=1; override-option-file=1;
  command="/bin/viro-scan500.sh ”INPUT_FILE’ ”OUTPUT_FILE’"
 

外来标题:


Content-type: APPLICATION/msword; name=Draft1.doc
Content-transfer-encoding: BASE64
Content-disposition: attachment; filename=Draft1.doc
Content-description: "Project documentation Draft1 msword format"

in-channel=*; in-type=application; in-subtype=* 指定将处理来自类型 application 的所有输入通道的邮件正文部分。

parameter-symbol-0=NAME 指定将第一个 Content-type 参数值(在本例中为 Draft1.doc)存储在一个称作 NAME 的环境变量中。

parameter-copy-0=* 指定将输入正文部分的所有 Content-type 参数复制到输出正文部分。

dparameter-symbol-0=FILENAME 指定将第一个 Content-disposition 参数值(在本例中为 Draft1.doc)存储在一个称作 FILENAME 的环境变量中。

dparameter-copy-0=* 指定将输入正文部分的所有 Content-disposition 参数复制到输出正文部分。

message-header-file=2 指定将邮件的原始标题作为一个整体(最外层邮件标题)写入到由环境变量 MESSAGE_HEADERS 指定的文件中。

original-header-file=1 指定将封闭的 MESSAGE/RFC822 部分的原始标题写入到由环境变量 ORIGINAL_HEADERS 指定的文件中。

override-header-file=1 指定从环境变量 OUTPUT_HEADERS 指定的文件中读取 MIME 标题,这将覆盖封闭 MIME 部分中的原始 MIME 标题行。$OUTPUT_HEADERS 是转换运行时创建的应急临时文件。站点提供的程序将使用此文件存储转换过程中更改的 MIME 标题行。然后,当转换通道重新组合正文部分时,将从此文件中读取 MIME 标题行。请注意,只能对 MIME 标题行进行修改。其他通用的非 MIME 标题行不能通过转换通道进行更改。

override-option-file=1 指定转换通道从由 OUTPUT_OPTIONS 环境变量命名的文件读取转换通道选项。请参见13.5.3.3 使用转换通道输出选项

command="msg-svr-base/bin/viro-scan500.sh" 指定对邮件主题部分执行的命令。

表 13–3 转换通道环境变量

环境变量 

说明 

ATTACHMENT_NUMBER

用于当前部件的附件号。它与 ATTACHMENT-NUMBER 转换匹配参数的格式相同。 

CONVERSION_TAG

当前活动转换标记的列表。此列表与 TAG 转换匹配参数相对应。 

INPUT_CHANNEL

将邮件排队送到转换通道的通道。此通道与 IN-CHANNEL 转换匹配参数相对应。 

INPUT_ENCODING

最初存在于正文部分中的编码。 

INPUT_FILE

包含原始正文部分的文件的名称。站点提供的程序应读取此文件。 

INPUT_HEADERS

包含正文部分原始标题行的文件的名称。站点提供的程序应读取此文件。 

INPUT_TYPE

输入邮件部分的 MIME Content-type

INPUT_SUBTYPE

输入邮件部分的 MIME 内容子类型。 

INPUT_DESCRIPTION

输入邮件部分的 MIME content-description

INPUT_DISPOSITION

输入邮件部分的 MIME content-disposition

MESSAGE_HEADERS

文件名称,此文件包含封闭邮件(不只是正文部分)的原始最外层标题,或者包含该部分的最直接封闭 MESSAGE/RFC822 部分的标题。站点提供的程序应读取此文件。 

OUTPUT_CHANNEL

邮件被发送到的通道。此通道与 OUT-CHANNEL 转换匹配参数相对应。 

OUTPUT_FILE

文件名称,站点提供的程序应在此文件中存储其输出。站点提供的程序应创建并编写此文件。 

OUTPUT_HEADERS

文件名称,站点提供的程序应在此文件中存储封闭部分的 MIME 标题行。站点提供的程序应创建并编写此文件。请注意,文件应包含实际 MIME 标题行(而不是 option=value 行),后跟一个空行作为其最后一行。另请注意,只能对 MIME 标题行进行修改。其他通用的非 MIME 标题行不能通过转换通道进行更改。

OUTPUT_OPTIONS

文件名称,站点提供的程序应从此文件中读取转换通道选项。请参见13.5.3.3 使用转换通道输出选项

PART_NUMBER

当前部件的部件号。它与 PART-NUMBER 转换匹配参数的格式相同。 

PART_SIZE

要处理的部件的大小(字节)。 

邮件转换标记

邮件转换标记是与特定收件人或发件人关联的特殊标记。传送邮件时,该标记对于可能将其用于进行特殊处理的转换通道程序是可见的。转换标记储存在 LDAP 目录中。

可以按以下方式来使用邮件转换标记:管理员可以使用值为 harmonica 的邮件转换标记来设置选定的用户。然后,管理员将设置一个转换通道,在处理邮件时,该通道将检测是否存在该标记和 harmonica 值。如果存在,程序将执行某个任意函数。

可以基于用户或域设置邮件转换标记。域级别的收件人 LDAP 属性为 MailDomainConversionTag(可以使用 MTA 选项 LDAP_DOMAIN_ATTR_CONVERSION_TAG 进行修改)。用户级别的收件人 LDAP 属性为 MailConversionTag(可以使用 MTA 选项 LDAP_CONVERSION_TAG 进行修改)。两种属性均可具有多个值,每个值指定一个不同的标记。与给定收件人相关联的标记集是可以积累的,即:将在域级别设置的标记与在用户级别设置的标记相结合。

基于发件人的转换标记可以使用 MTA 选项 LDAP_SOURCE_CONVERSION_TAG LDAP_DOMAIN_ATTR_SOURCE_CONVERSION_TAG 进行设置,这些选项将为与这些源地址相关联的转换标记分别指定用户名和域级别的 LDAP 属性。这些选项都没有默认属性。

系统 Sieve 可以使用两个新的操作:addconversiontagsetconversiontag。两个操作都接受单参数:一个字符串或者一个转换标记列表。addconversiontag 将转换标记添加到当前的标记列表,setconversiontag 在添加新标记前清空现有列表。请注意,这两个操作很晚才会执行,因此可以使用 setconversiontag 取消所有其他转换标记设置机制。这使您能在 Sieve 过滤器中放置转换标记。

Sieve 信封测试接受 conversiontag,将其作为信封字段说明符值。该测试检查当前的标记列表,每次检查一个。请注意,如果指定了 :count 修饰符,将能够检查活动转换标记的数量。此类型的信封测试仅限于系统 Sieve。还要注意,该测试只查看 Sieve 处理之前存在的标记集—无法看到 setconversiontagaddconversiontag 操作的效果。

在各种映射探测中包含转换标记信息

添加了一个新的 MTA 选项 INCLUDE_CONVERSIONTAG,可选择性地在各种映射探测中包含转换标记信息。该选项是按位编码的值。下表中显示了分配的位。在任何情况下,当前的标记集在探测中都以逗号分隔的列表的形式显示。

位置 

值 

映射 

CHARSET_CONVERSION - 作为 ;TAG= 字段添加到 ;CONVERT 前面。

CONVERSION - 作为 ;TAG= 字段添加到 ;CONVERT 前面

FORWARD - 添加到当前地址的前面并紧接当前地址(以 | 分隔)

ORIG_SEND_ACCESS - 添加到探测结尾处(以 | 分隔)

16 

SEND_ACCESS - 添加到探测结尾处(以 | 分隔)

32 

ORIG_MAIL_ACCESS - 添加到探测结尾处(以 | 分隔)

64 

MAIL_ACCESS - 添加到探测结尾处(以 | 分隔)