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

站点定义的文本转换

站点可以使用转换规则表自定义电子邮件到 SMS 的转换过程中所述的步骤 1 至 6。这些规则通过 MTA 映射文件中的映射表来指定。

映射表的名称应为 SMS_Channel_TEXT,其中 SMS_Channel 为 SMS 通道的名称;例如,如果通道名为 sms,则映射表名为 SMS_TEXT,如果通道名为 sms_mway,则映射表名为 SMS_MWAY_TEXT

该映射表中可包含两种类型的条目。然而,在解释这些条目的格式之前,请务必清楚地了解如何使用映射表,以便了解如何构造和使用这些条目。在这两种条目的说明之后给出了一个映射表示例。

此时,两种类型的条目是:

消息标题条目

这些条目指定了 SMS 消息中应包含哪些消息标题行,以及应如何缩写这些标题行或应如何转换这些标题行(在不能缩写时)。只有当其中一个条目将一个标题行成功映射到一个非零长度的字符串时,该标题行才能包含到将要生成的 SMS 消息中。每个条目都具有以下格式

H|pattern replacement-text

如果消息标题行与该模式匹配,则将会使用映射文件的模式匹配和字符串替换功能将该标题行替换为替换文本 replacement-text。如果在替代文本中指定了元字符 $Y,则标题行的最终映射结果将会包含在 SMS 消息中。如果某个标题行与任何模式字符串都不匹配,而且如果其映射到一个零长度的字符串或者在替代文本中未指定 $Y 元字符,则 SMS 消息中将忽略该标题行。两个条目


H|From:* F:$0$Y 
H|Subject:* S:$0$Y

会使 From:Subject: 标题行包含在 SMS 消息中,其中 From:Subject: 分别缩写为 F:S:。条目:


H|Date:* H|D:$0$R$Y 
H|D:*,*%19%%*:*:* H|D:$0$ $5:$6$R$Y

会使 Date: 标题行被接受和映射,因此,例如标题行

Date: Wed, 16 Dec 1992 16:13:27 -0700 (PDT)

转换成

D: Wed 16:13

可能会生成非常复杂的重复映射。希望设置定制过滤器的站点将首先需要了解映射文件的工作原理。在必要时可将条目右侧的 H| 忽略。允许在该侧出现 H|,以便减小重复映射集所需的表条目数量。

消息主体条目

这些条目建立了适用于每行消息主体的映射。每行消息主体将在并入被生成的 SMS 消息中之前,通过这些映射进行传送。这些条目的格式为:

B|pattern B|replacement-text

如果消息正文中的某一行与 pattern 模式匹配,则会被替换文本 replacement-text 所替换。使用这种功能还会构造非常复杂的重复映射。在必要时可省略条目右侧的 B|。

SMS 映射表示例

示例 D–1 中显示了一个 SMS_TEXT 映射表示例。每行末尾括号内的数字都对应于该表之后标题为说明文本一节中的条目编号。


示例 D–1 SMS_TEXT 映射表示例。


SMS_TEXT

   H|From:*        H|F:$0$R$Y       (1)
   H|Subject:*     H|S:$0$R$Y       (1)
   H|F:*<*>*       H|F:$1$R$Y       ()
   H|F:*(*)*       H|F:$0$2$R$Y     (2)
   H|F:*"*"*       H|F:$0$2$R$Y     (3)
   H|F:*@*         H|F:$0$R$Y       (4)
   H|%:$ *         H|$0:$1$R$Y      (5)
   H|%:*$          H|$0:$1$R$Y      (5)
   H|%:*$ $ *      H|$0:$1$ $2$R$Y  (6)
   B|*--*          B|$0-$1$R        (7)
   B|*..*          B|$0.$1$R        (7)
   B|*!!*          B|$0!$1$R        (7)
   B|*??*          B|$0?$1$R        (7)
   B|*$ $ *        B|$0$ $1$R       (6)
   B|$ *           B|$0$R           (5)
   B|*$            B|$0$R           (5)

               

说明文本

上述 SMS_TEXT 映射表示例中条目的说明如下:

上例中,元字符 $R 用于实现和控制映射的重复应用。通过在这些映射上迭代,可获得强大的过滤功能。例如,要清除单个前导或后缀空格 (6) 或将两个空格缩减为一个空格 (7) 的简单映射在作为整体采用时会成为一个过滤器,能够去除全部前导和后缀空格并将多个连续空格缩减为一个空格。这种过滤有助于减少每条 SMS 消息的长度。

  1. 这两个条目会使 From:Subject: 标题行包含在 SMS 消息中。From:Subject: 分别缩写为 F:S:。某些其他条目可以进一步影响 From:Subject: 标题行。

    此条目将把包含 <...> 模式的 From: 标题行缩减至只剩下尖括号中的文本。例如:

    F: "John C. Doe" <jdoe@siroe.com> (Hello)

    将被替换为:

    F: jdoe@siroe.com

  2. 此条目将删除 From: 标题行中 (...) 模式内包含的所有内容。例如:

    F: "John C. Doe" <jdoe@siroe.com> (Hello)

    将被替换为:

    F: "John C. Doe" <jdoe@siroe.com>

  3. 此条目将删除 From: 标题行中 "..." 模式内包含的所有内容。例如:

    F: "John C. Doe" <jdoe@siroe.com> (Hello)

    将被替换为:

    F: <jdoe@siroe.com> (Hello)

  4. 此条目将删除 From: 标题行中 at 符号 (@) 右侧包含的所有内容。例如:

    F: "John C. Doe" <jdoe@siroe.com> (Hello)

    将被替换为:

    F: "John C. Doe" <jdoe@

  5. 这四个条目将从消息标题和主体行中删除前导和后缀空格。

  6. 这两个条目会将消息标题和主体行中的两个空格缩减为一个空格。

  7. 这四个条目会将双字节短划线、句号、感叹号和问号转变成匹配字符的单字节形式。这样还有助于缩减 SMS 消息中的字节数。

条目的顺序是非常重要的。例如,按照给定顺序,消息 From: 标题行的正文:

From: "John C. Doe" (Hello)

将缩减为:

jdoe

实现这一目的的操作步骤如下:

  1. 我们以 From: 标题行开始:

    From: "John C. Doe" (Hello)

    第一个映射条目中的模式将与之匹配并生成以下结果:

    F: "John C. Doe" (Hello)

    结果字符串中的 $R 元字符将使结果字符串被重新映射。

  2. 此映射将应用到上一步的结果字符串中。这将生成:

    F: jdoe@siroe.com

    映射中的 $R 会把整个映射集重新应用到此步骤的结果中。

  3. 接下来,将应用映射生成:

    F: jdoe

    映射中的 $R 会把整个映射集重新应用到此步骤的结果中。

  4. 接下来,将应用映射生成:

    F:jdoe

    映射中的 $R 会把整个映射集重新应用到此步骤的结果中。

  5. 由于其他条目都不匹配,所以最后将得到以下字符串:

    F:jdoe

    ,该字符串被并入到 SMS 消息中。


    注 –

    imsimta 测试映射实用程序可用于测试映射表。例如,


    # imsimta test -mapping -noimage_file -mapping_file=test.txt
    Enter table name: SMS_TEXT
    Input string: H|From: "John C. Doe"  (Hello)
    Output string: H|F:jdoe
    Output flags: [0,1,2,89]
    Input string: ^D
    #

    有关 imsimta test 实用程序的更多信息,请参见《Sun Java System Messaging Server 6 2005Q4 Administration Reference》中的“imsimta test”