Sun Java logo     上一个      目录      索引      下一个     

Sun logo
Sun Java System Messaging Server 6 2004Q2 管理指南 

附录 D
短消息服务 (SMS)

本章说明如何在 Sun™ ONE Messaging Server 上实现短消息服务 (SMS)。本章包含以下主题:


介绍

Sun Java System Messaging Server 通过短消息服务 (SMS) 实现从电子邮件到移动设备和从移动设备到电子邮件的消息传送。可将 SMS 配置为单向(只从电子邮件到移动设备)或双向(从电子邮件到移动设备和从移动设备到电子邮件)传送。要只启用单向服务,您必须添加和配置 SMS 通道。要启用双向服务,除了必须添加和配置 SMS 通道外,还必须配置 SMS Gateway Server。

单向和双向 SMS 都使用短消息点对点 (SMPP) 协议将已生成的 SMS 消息提交到短消息服务中心 (SMSC)。特别是,SMSC 必须提供支持 TCP/IP 的 V3.4 或更高版本的 SMPP 服务器。

图 D-1 说明了单向和双向 SMS 所采用的消息的逻辑流。

图 D-1 单向和双向 SMS 逻辑流

此图形显示了单向和双向 SMS 的逻辑数据流。

单向 SMS

要启用单向服务,Messaging Server 应使用与远程 SMSC 进行通信的 SMPP 客户机(MTA SMS 通道)。SMS 通道将已排入队列的电子邮件消息转换成 SMS 消息(如电子邮件到 SMS 的转换过程中所述)。这一转换过程包括处理多个部分的 MIME 消息以及字符集的转换问题。

执行此功能时,SMS 通道起到了 (SMPP) 外部短消息实体 (ESME) 的作用。

双向 SMS

双向 SMS 使邮件服务器不仅可以向远程设备发送电子邮件,还允许从远程设备接收邮件回复,以及为远程设备电子邮件组织启用邮件服务器。

启用双向 SMS 服务器不仅需要 MTA SMS 通道(SMPP 客户机)(如前一主题中所述),还需要 SMS Gateway Server。Sun Java System Messaging Server 将 SMS Gateway Server 作为其常规安装过程的一部分进行安装,之后您还必须对其进行配置。SMS Gateway Server 执行两项功能:

要求

本手册假定您已阅读了 LogicaCMG 的 SMPP 规范和适用于您的 SMSC 的 SMPP 文档。

为了实现 SMS,必须具备以下条件:

有关 SMS Gateway Server 存储规划的信息,请参见 SMS Gateway Server 存储要求


SMS 通道操作原理

SMS 通道是一个多线程通道,它将已排队的电子邮件消息转换成 SMS 消息,然后提交转换后的消息以将其传送到 SMSC。

本节包含以下通道操作主题:

将电子邮件定向到通道

按照 SMS 通道配置配置 SMS 通道时,将有一个或多个主机名与该通道相关联。为便于讨论,我们假定主机名 sms.siroe.com 是一个与该通道相关联的主机名。在这种情况下,将用以下形式的地址将电子邮件定向到通道:

local-part@sms.siroe.com

其中 local-part 或者是 SMS 目标地址(例如,无绳电话号码、寻呼机 ID 等),或者是以下格式的属性-值对列表:

/attribute1=value1/attribute2=value2/.../@sms.siroe.com

表 D-1 中介绍了识别的属性名称及其用法。这些属性允许按收件人控制某些通道选项。

表 D-1 SMS 属性

属性名称

属性值和用法

ID

将 SMS 消息定向到的 SMS 目标地址(例如,无绳电话号码、寻呼机 ID 等)。必须提交该属性及其相关值。

FROM

SMS 源地址。选项 USE_HEADER_FROM=0 时忽略。

FROM_NPI

NPI。使用指定的 NPI 值。选项 USE_HEADER_FROM=0 时忽略。

FROM_TON

TON。使用指定的 TON 值。选项 USE_HEADER_FROM=0 时忽略。

MAXLEN

对于该收件人,已生成的 SMS 消息中可容纳的最大字节总数(即,八位字节)。使用 MAXLENMAX_MESSAGE_SIZE 通道选项所指定的值中的较小值。

MAXPAGES

对于该收件人,能够将电子邮件消息分割成的 SMS 消息的最大数目。使用 MAXPAGESMAX_PAGES_PER_MESSAGE 通道选项所指定的值中的较小值。

NPI

为使用 ID 属性指定的目标 SMS 地址指定一个数字规划指标 (NPI) 值。有关此属性接受的值的说明,请参见 DEFAULT_DESTINATION_NPI 通道选项的说明。使用此属性时,属性值将覆盖 DEFAULT_DESTINATION_NPI 通道选项所给定的值。

PAGELEN

对于该收件人,一条 SMS 消息中可容纳的最大字节数。使用该值与 MAX_PAGE_SIZE 通道选项所指定值中的最小值。

TO

ID 的同义词。

TO_NPI

NPI 的同义词。

TO_TON

TON 的同义词。

TON

为使用 ID 属性给定的目标 SMS 地址指定数字类型 (TON) 值。有关此属性接受的值的说明,请参见 DEFAULT_DESTINATION_TON 通道选项的说明。使用此属性时,属性值将覆盖 DEFAULT_DESTINATION_TON 通道选项给定的值。

下面是一些地址示例:

123456@sms.siroe.com
/id=123456/@sms.siroe.com
/id=123456/maxlen=100/@sms.siroe.com
/id=123456/maxpages=1/@sms.siroe.com

有关在电子邮件地址的 SMS 目标地址部分中执行转换、有效性检查和其他操作的信息,请参见站点定义的地址有效性检查和转换

电子邮件到 SMS 的转换过程

为了将电子邮件发送到远程站点,必须将电子邮件转换成能被远程 SMSC 所理解的 SMS 消息。本节说明将 SMS 通道中排队的电子邮件消息转换成一个或多个 SMS 消息的过程。如下文所述,选项可以控制生成的 SMS 消息的最大数目、这些 SMS 消息的最大总长度和任意一条 SMS 消息的最大大小。只有电子邮件消息的文本部分(即,MIME 文本内容类型)会被使用,并且还可以控制已转换部分的最大数目。

电子邮件消息标题行和文本部分中所使用的字符集均将被转换为统一字符编码,然后再转换为相应的 SMS 字符集。

如果没有 SMS_TEXT 映射表(请参见站点定义的文本转换),已排入 SMS 通道的电子邮件消息将按图 D-2 中的说明进行处理。

图 D-2 SMS 通道的电子邮件处理

此图形显示了 SMS 通道电子邮件处理。

图 D-3 SMS 通道的电子邮件处理(

此图形显示了 SMS 通道电子邮件处理。

以下步骤对应于图 D-2 中的编号框:

  1. 启动一个空输出缓冲区。该缓冲区所使用的字符集是统一字符编码。
  2. 电子邮件消息的创始者地址来自以下五个源(按首选项降序显示)之一:
  3. 1. Resent-from:
    2. From:
    3. Resent-sender:
    4. Sender:
    5. Envelope From:

    如果创始者地址是空字符串,则 FROM_NONE 通道选项的值就会附加到该缓冲区。

    但是,如果创始者地址是一个非空字符串,则 FROM_FORMAT 通道选项的处理结果和 LINE_STOP 通道选项的值就会附加到输出缓冲区。

    请注意,只有 USE_HEADER_RESENT 选项值为 1 时才能考虑 Resent-from:Resent-sender: 标题行。否则,将忽略 Resent- 标题行。

  4. 如果 Subject: 标题行不存在或为空,则 SUBJECT_NONE 选项的值就会附加到输出缓冲区。
  5. 否则,SUBJECT_FORMAT 选项的处理结果和 LINE_STOP 通道选项的值就会附加到输出缓冲区。

  6. 如果没有文本消息部分,则 NO_MESSAGE 通道选项的值就会附加到输出缓冲区。
  7. 若有文本消息部分,则 CONTENT_PREFIX 通道选项的值就会附加到输出缓冲区。

    非文本消息部分则被放弃。

  8. 对于每个文本部分,如果未达到 MAX_MESSAGE_PARTS 限制,文本部分就会被解码为统一字符编码并与 LINE_STOP 通道选项的值一起被附加到该缓冲区。
  9. 然后,所得到的输出缓冲区将从统一字符编码转换为 SMSC 的缺省字符集或 UCS2 (UTF-16)。将用 SMSC_DEFAULT_CHARSET 选项指定 SMSC 的缺省字符集。
  10. 转换完毕后,所得到的结果将被截断,以使之不超过 MAX_MESSAGE_SIZE 个字节。
  11. 然后,步骤 6 中转换得到的字符串将被分割成一条或多条 SMS 消息,其中任何一条 SMS 消息都不长于 MAX_PAGE_SIZE 个字节。最多将生成 MAX_PAGES_PER_MESSAGE 条 SMS 消息。

    由于一条电子邮件消息可发送给多个收件人,所以可能需要对每个使用第 4 页上“将电子邮件定向到通道”中所述的 MAXLENMAXPAGESPAGELEN 属性的收件人地址执行步骤 6 至步骤 8。


电子邮件消息处理样例

例如,使用通道的缺省设置的电子邮件消息:

From: John Doe
To: 1234567@sms.siroe.com
Subject: Today’s meeting
Date: Fri, 26 March 2001 08:17

The staff meeting is at 14:30 today in the big conference room.

将转换成 SMS 消息:

jdoe@siroe.com (Today’s meeting) The staff meeting is at 14:30 today in the big conference room.

如下所示的另一组选项设置:

CONTENT_PREFIX=Msg:
FROM_FORMAT=From: ${pa}
SUBJECT_FORMAT=Subj: $s

将会生成以下 SMS 消息:

From: John Doe Subj: Today’s meeting Msg: The staff meeting is at 14:30 today in the big conference room.

SMS 消息提交过程

电子邮件消息转换成一条或多条 SMS 消息(可能每个收件人的设置不同)后,SMS 消息将被提交到目标 SMSC。提交过程是使用基于 TCP/IP 的 SMPP V3.4 完成的。SMPP 服务器的主机名 (SMPP_SERVER) 将用作与 SMS 通道相关联的正式主机名;要使用的 TCP 端口 (SMPP_PORT) 将用 port 通道关键字指定。

当有消息需要处理时,通道就会被启动。通道将作为发送器绑定到 SMPP 服务器,递交使用 SMPP 选项中所述的 ESME_ 通道选项指定的证书。表 D-2 列出了 BIND_TRANSMITTER PDU(协议数据单元)中的字段集,并给出了它们的值:

表 D-2 生成的 BIND_TRANSMITTER PDU 中的字段

字段

system_id

ESME_SYSTEM_ID 通道选项;缺省值为空字符串

password

ESME_PASSWORD 通道选项;缺省值为空字符串

system_type

ESME_SYSTEM_TYPE 通道选项;缺省值为空字符串

interface_version

0x34 表示 SMPP V3.4

addr_ton

ESME_ADDRESS_TON;缺省值为表示未知 TON 的 0x00

addr_npi

ESME_ADDRESS_NPI;缺省值为表示未知 NPL 的 0x00

addr_range

ESME_IP_ADDRESS 通道选项;缺省值为空字符串

请注意,通道是多线程的。通道可以运行多个出队列线程,具体取决于要发送邮件的数量。(甚至可能会运行多个通道进程。)每个线程执行一次 BIND_TRANSMITTER,然后在该 TCP/IP 连接上发送所有必须发送的 SMS 消息,随后发送一个 UNBIND 命令,最后关闭连接。系统不会为了将来可能会重新使用某个连接而将其以开放状态闲置一段时间。如果远程 SMPP 服务器发送回一个限制错误,系统就会执行一次 UNBIND 操作,而 TCP/IP 连接将关闭并建立一个新的连接和 BIND。如果远程 SMPP 服务器在发送完其 SMS 消息之前发送了 UNBIND 命令,也会发生类似情况。

然后,将使用 SMPP SUBMIT_SM PDU 提交 SMS 消息。如果返回一个永久性错误(例如 ESME_RINVDSTADR),则电子邮件消息将会作为不可传送的消息而被返回。如果返回一个临时性错误,电子邮件消息就会重新入队,以尝试以后传送。要说明的是,对于永久性错误,条件可能永远不存在而重复尝试传送也不会有实际结果,例如无效的 SMS 目标地址。而对于临时性错误,条件在近期可能不存在,如服务器关闭或服务器拥塞的情况。

如果 USE_HEADER_FROM 选项的值为 1,则将为提交的 SMS 消息设置源地址。所使用的值将从始发电子邮件消息中导出,并选定为所有回复最有可能被定向到的(电子邮件)地址。相应地,源地址从以下七种来源(按首选项降序显示)之一中选出:

请注意,仅在 USE_HEADER_REPLY_TO 选项的值为 1 时,才考虑 Resent-reply-to:Reply-to: 标题行。而且,只有 USE_HEADER_RESENT 选项的值为 1 时才能考虑 Resent-reply-to:Resent-from:Resent-sender: 标题行。(请注意,这就意味着只有这两个选项的值都必须为 1 时才能考虑 Resent-reply-to: 标题行。)这两个选项的缺省值都为值 0。同样,缺省配置仅考虑第 4、第 6 和第 7 项。最后,由于 SMS 消息中的源地址被限制为 20 个字节,所以如果选定的源地址超过该限制,该地址就会被截断。

表 D-3 列出了 SUBMIT_SM PDU 中的强制性字段集:

表 D-3 生成的 SUBMIT_SM PDU 中的强制性字段

字段

service_type

DEFAULT_SERVICE_TYPE 通道选项;缺省值为空字符串。

source_addr_ton

DEFAULT_SOURCE_TON 通道选项;如果 USE_HEADER_FROM=1,则该字段通常被强制赋予表示字母数字 TON 的值 0x05;否则,缺省值为表示国际 TON 的 0x01。

source_addr_npi

DEFAULT_SOURCE_NPI 通道选项;缺省值为 0x00。

source_addr

DEFAULT_SOURCE_ADDRESS 通道选项(如果 USE_HEADER_FROM=0);否则为表示电子邮件消息创始者的字母数字字符串。

dest_addr_ton

TON 寻址属性或 DEFAULT_DESTINATION_TON 通道选项;缺省值为表示国际 TON 的 0x01。

dest_addr_npi

NPI 寻址属性或 DEFAULT_SOURCE_NPI 通道选项;缺省值为表示未知 NPI 的 0x00。

dest_addr

从电子邮件信封 To: 地址的本地部分导出的目标 SMS 地址;请参见将电子邮件定向到通道

esm_class

对于单向 SMS,设置为 0x03,表示存储和转发模式、缺省的 SMSC 消息类型,且不设置回复路径。对于双向 MSM 消息,则设置为 0x83。

protocol_id

0x00;不适用于 CDMA 和 TDMA;对 GSM 来说,0x00 表示不使用 Internet,但使用 SME 对 SME 协议。

priority_flag

对于 GSM 和 CDMA 为 0x00,对于 TDMA 为 0x01,所有这些都表示正常优先级;请参见 DEFAULT_PRIORITY 通道选项的说明。

schedule_delivery_time

表示立即传送的空字符串。

validity_period

DEFAULT_VALIDITY_PERIOD 通道选项;缺省值为表示应使用 SMSC 的缺省值的空字符串。

registered_delivery

0x00,表示不使用已注册的传送。

replace_if_present_flag

0x00,表示不应替换以前的任何 SMS 消息。

data_coding

对于 SMSC 的缺省字符集为 0x00;对于 UCS2 字符集则为 0x08。

sm_default_msg_id

0x00,表示不使用预定义的消息。

sm_length

SMS 消息的长度和内容;有关详细信息,请参见电子邮件到 SMS 的转换过程

short_message

SMS 消息的长度和内容;有关详细信息,请参见电子邮件到 SMS 的转换过程

表 D-4 显示了 SUBMIT_SM PDU 中的可选字段:

表 D-4 生成的 SUBMIT_SM PDU 中的可选字段

字段

privacy

请参见 DEFAULT_PRIVACY 通道关键字中的说明;除非电子邮件消息有 Sensitivity: 标题行,否则缺省设置为不提供替换

sar_refnum

请参见 USE_SAR 通道关键字的说明;缺省设置为不提供这些字段

sar_total

请参见上面的 sar_refnum

sar_seqnum

请参见上面的 sar_refnum

通道将一直绑定到 SMPP 服务器,直到它再没有要提交的 SMS 消息(消息队列为空)或者已超过 MAX_PAGES_PER_BIND 时为止。在后一种情况下,如果仍有需要发送的 SMS 消息,就会建立新的连接并绑定已执行的操作。

请注意,SMS 通道是多线程的。通道中的每个处理线程均保持自身与 SMPP 服务器的 TCP 连接。例如,如果有三个处理线程有要提交的 SMS 消息,则通道与 SMPP 服务器就有三个开放的 TCP 连接。每个连接均将作为发送器绑定到 SMPP 服务器。而且,任何给定的处理线程一次只能有一个等待提交的 SMS。即,一个给定线程将提交一条 SMS 消息,然后等待,直至收到提交响应(即 SUBMIT_SM_RESP PDU)之后,才提交另一条 SMS 消息。

站点定义的地址有效性检查和转换

站点可能希望将有效性检查和转换应用于收件人电子邮件地址(在将电子邮件定向到通道中进行了介绍)中记录的 SMS 目标地址中。例如,站点可能希望:

前两项任务可使用 DESTINATION_ADDRESS_NUMERICDESTINATION_ADDRESS_PREFIX 通道选项来完成。一般情况下,所有这三项任务和其他任务都可使用映射表实现:使用重写规则中的映射表调用或使用 FORWARD 映射表。使用重写规则中的映射表调用具有很强的灵活性,包括能够拒绝带有站点定义的错误响应的地址。本节其余部分将只集中介绍这种方法 - 使用重写规则中的映射表调用的方法。

假设目标地址只能是数字格式,长度只能为 10 或 11 位并以字符串“+1”为前缀。则其可使用以下重写规则实现

sms.siroe.com     ${X-REWRITE-SMS-ADDRESS,$U}@sms.siroe.com
sms.siroe.com     $?Invalid SMS address

上述第一条重写规则调出到名为 X-REWRITE-SMS-ADDRESS 的站点定义的映射表中。该映射表传递电子邮件地址的本地部分,以便进行检查。如果映射进程确定本地部分可接受,则该地址将被接收并重写到 SMS 通道中。如果映射进程不接受本地部分,将应用下一条重写规则。由于它是一条 $? 重写规则,因此该地址将被拒绝,并发送错误文本“无效的 SMS 地址”。

X-REWRITE-SMS-ADDRESS 映射表如下所示。它以属性-值对列表格式或仅按原始 SMS 目标地址执行必要的本地部分验证步骤。

X-VALIDATE-SMS-ADDRESS

! Iteratively strip any non-numeric characters
    $_*$[$ -/:-~]%* $0$2$R
! Accept the address if it is of the form 1nnnnnnnnnn or nnnnnnnnnn
! In accepting it, ensure that we output +1nnnnnnnnnn
   1%%%%%%%%%%      +1$0$1$2$3$4$5$6$7$8$9$Y
   %%%%%%%%%%       +1$0$1$2$3$4$5$6$7$8$9$Y
! We didn’t accept it and consequently it’s invalid
   *                $N

X-REWRITE-SMS-ADDRESS

    */id=$_*/*       $C$0/id=$|X-VALIDATE-SMS-ADDRESS;$1|/$2$Y$E
    */id=$_*/*       $N
    *                $C$|X-VALIDATE-SMS-ADDRESS;$0|$Y$E
    *                $N

对于上述设置,请确保 DESTINATION_ADDRESS_NUMERIC 选项的值为 0(缺省值)。否则,将从 SMS 目标地址中去除“+”。

站点定义的文本转换

站点可使用转换规则表自定义电子邮件到 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。然后,标题行的最终映射结果将会包含在 SMS 消息中,该消息中提供了在替代文本中指定的元字符 $Y。如果某个标题行与任何模式字符串都不匹配,而且如果其映射到一个零长度的字符串或者在替代文本中未指定 $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 消息中。从:Subject:可分别缩写为 F:S:。某些其他条目会进一步影响 From:Subject: 标题行。
  2. 此条目将把包含 <...> 模式的 From: 标题行缩减为只包含尖括号内的文本。例如:

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

    将被替换为:

    F: jdoe@siroe.com

  3. 此条目将删除 From: 标题行中 (...) 模式内包含的所有内容。例如:
  4. F: "John C. Doe" <jdoe@siroe.com> (Hello)

    将被替换为:

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

  5. 此条目将删除 From: 标题行中“...”模式内包含的所有内容。例如:
  6. F: "John C. Doe" <jdoe@siroe.com> (Hello)

    将被替换为:

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

  7. 此条目将删除 From: 标题行中 at 符号 (@) 右侧包含的所有内容。例如:
  8. F: "John C. Doe" <jdoe@siroe.com> (Hello)

    将被替换为:

    F: "John C. Doe" <jdoe@

  9. 这四个条目将从消息标题和主体行中删除前导和后缀空格。
  10. 这两个条目会将消息标题和主体行中的两个空格缩减为一个空格。
  11. 这四个条目会将双字节短划线、句号、感叹号和问号转变成匹配字符的单字节形式。这样还有助于缩减 SMS 消息中的字节数。

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

From: "John C. Doe" (Hello)

将缩减为:

jdoe

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

  1. 我们以 From: 标题行开始:
  2. From:"John C. Doe" (Hello)

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

    F: "John C. Doe" (Hello)

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

  3. 此映射将应用到上一步的结果字符串中。这将生成:
  4. F: jdoe@siroe.com

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

  5. 接下来,将应用映射生成:
  6. F: jdoe

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

  7. 接下来,将应用映射生成:
  8. F:jdoe

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

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


SMS 通道配置

本节介绍如何为单向(电子邮件到移动设备)和双向(电子邮件到移动设备和移动设备到电子邮件)功能设置 SMS 通道。除为双向 SMS 配置 SMS 通道主题中说明的例外情况外,为单向和双向功能设置 SMS 通道的方法相同。

本节包含以下主题:

添加 SMS 通道

向 Messaging Server 配置中添加 SMS 通道需要执行两个步骤:

如果没有在各种情况下均必须设置的通道选项,可能需要设置以下一个或多个选项:ESME_PASSWORDESME_SYSTEM_IDMAX_PAGE_SIZEDEFAULT_SOURCE_TONDEFAULT_DESTINATION_TON。而且,如前文所述,SMPP 服务器的主机名或 IP 地址和 TCP 端口必须通过 imta.cnf 文件或通过通道选项文件中的通道定义进行设置。

您可配置多个 SMS 通道,并为不同 SMS 通道赋予不同的特征。有关使用多个 SMS 通道的详细信息,请参见添加附加 SMS 通道

请注意以下说明:如果更改了 imta.cnf 文件,就必须重新编译。如果仅更改了通道选项文件,则不需要重新编译。

还请注意,通道更改生效前的时间因更改内容的不同而不同。许多通道选项更改在作了更改启动的所有通道中都有效,而由于作业控制器通常会启动新通道,所以看起来几乎是即刻发生的。某些更改结果只有在重新编译并重新启动了 SMTP 服务器后才生效。这些选项是在消息排入通道后而不是在通道本身运行时得到处理的。

添加通道定义和重写规则

要添加通道定义和重写规则,请执行以下操作:

  1. 将一个 SMS 通道添加到 MTA 的配置中以前,需要为通道取名。通道的名称可以是 smssms_x,其中 x 是不分大小写、长度在一至三十六个字节之间的字符串。例如,sms_mway
  2. 要添加通道定义,请编辑位于 installation-directory/config/ 目录中的 imta.cnf 文件。在文件末尾于此二行之后添加一个空白行:
  3. channel-name port p threaddepth t \
      backoff pt2m pt5m pt10m pt30m notices 1
    smpp-host-name

    其中 channel-name 是您为通道选择的名称,p 是 SMPP 服务器所侦听的 TCP 端口,t 是每个传送过程中 SMPP 服务器同时连接的最大数目,而 smpp-host-name 则是运行 SMPP 服务器的系统的主机名。

    例如,您可以将通道定义指定为如下内容:

    sms_mway port 55555 threaddepth 20 \
      backoff pt2m pt5m pt10m pt30m notices 1
    smpp.siroe.com

    有关如何计算 threaddepth 的说明,请参见控制同时连接数目

    有关 backoffnotices 通道关键字的讨论,请参见调整传送重试的频率

    如果希望为 smpp-host-name 指定 IP 地址而不是主机名,请指定域文字。例如,如果 IP 地址为 127.0.0.1,则应为 smpp-host-name 指定 [127.0.0.1]。或者,应考虑使用 SMPP_SERVER 通道选项。


    对于 Sun Java System Messaging Server 6.1,反对使用 master 通道关键字。如果其存在,则应忽略。


  4. 添加了通道定义后,就请跳至文件的上半部分,并按以下格式添加一条重写规则:
  5.    smpp-host-name $u@smpp-host-name

    例如,

       smpp.siroe.com $u@smpp.siroe.com

  6. 保存 imta.cnf 文件。
  7. imsimta cnbuild 命令重新编译配置。
  8. imsimta restart dispatcher 命令重新启动 SMTP 服务器。
  9. 对于上述配置,通过将电子邮件消息寻址为 id@smpp-host-name(例如 123456@smpp.siroe.com)可以将其定向到通道。有关寻址的详细信息,请参见电子邮件到 SMS 的转换过程
  10. 或者,如果希望对用户隐藏 SMPP 服务器的主机名,或者希望把其他主机名与同一通道相关联,则可添加其他重写规则。例如,要将 host-name-1host-name-2 与通道相关联,请将以下内容添加到重写规则中:
  11. host-name-1 $U%host-name-1@smpp-host-name
    host-name-2 $U%host-name-2@smpp-host-name

    例如,如果 SMPP 服务器的主机名是 smpp.siroe.com,但是您希望用户将电子邮件寻址为 id@sms.sesta.com,则请添加重写规则:

    sms.sesta.com $U%sms.sesta.com@smpp.siroe.com

请注意,SMPP_SERVERSMPP_PORT 通道选项将覆盖通道的正式主机名和 port 通道关键字设置。当使用 SMPP_PORT 选项时,没有必要也使用 port 关键字。采用这两个选项的好处在于,它们能够在不需要重新编译配置的情况下得到实现并在实现后进行更改。附加使用 SMPP_SERVER 选项的信息在添加附加 SMS 通道中进行了介绍。

控制同时连接数目

threaddepth 通道关键字控制一个传送过程内要指定给每个传送线程的消息数目。要计算允许同时连接的总数目,请将以下两个选项的值相乘:SMPP_MAX_CONNECTIONSjob_limit (SMPP_MAX_CONNECTIONS * job_limit)。SMPP_MAX_CONNECTIONS 选项控制一个传送过程内传送线程的最大数目。而 job_limit 选项对在其中运行通道的作业控制器处理池而言,则控制同时传送过程的最大数目。

要限制同时连接的总数,您必须适当调节其中一个选项或这两个选项。例如,如果远程 SMPP 服务器只允许单个连接,则 SMPP_MAX_CONNECTIONSjob_limit 都必须设置为 1。在调节值时,最好允许 job_limit 大于 1

创建 SMS 通道选项文件

一般情况下,通道选项文件包含通道操作所需的、站点特定的参数。SMS 不需要通道选项文件。如果确定您的安装需要一个通道选项文件,则请将该文件以文本文件的形式保存在 installation-directory/config/ 目录中。与其他通道选项文件一样,该文件的文件名也应采用如下格式:

channel_name_option

例如,如果通道被命名为 sms_mway,则通道选项文件就应是:

installation-directory/config/sms_mway_option

每个选项都放置在使用如下格式的文件的单一行中:

option_name=option_value

例如,

PROFILE=GSM
SMSC_DEFAULT_CHARSET=iso-8859-1
USE_UCS2=1

有关可用 SMS 通道选项及各个选项说明的列表,请参见下文中的可用选项

可用选项

SMS 通道包含许多选项,这些选项分为六大类:

下表中汇总了这些选项,并且以下章节进行了更全面的介绍。

表 D-5 SMS 通道选项 

 

电子邮件到 SMS 转换选项

选项(页码)

说明

缺省值

GATEWAY_NOTIFICATIONS

指定是否将电子邮件通知消息转换成 SMS 消息。

0

MAX_MESSAGE_PARTS

从电子邮件消息中提取的消息部分的最大数目

2

MAX_MESSAGE_SIZE

从电子邮件消息中提取的字节的最大数目

960

MAX_PAGE_SIZE

一条 SMS 消息中可容纳的字节的最大数目

160

MAX_PAGES_PER_MESSAGE

电子邮件消息分割成的 SMS 消息的最大数目

6

ROUTE_TO

将 SMS 消息路由到指定的 IP 主机名。

 

SMSC_DEFAULT_CHARSET

SMSC 所使用的缺省字符集。

US-ASCII

USE_HEADER_FROM

设置 SMS 源地址

0

USE_HEADER_PRIORITY

控制电子邮件消息标题中优先级信息的使用

1

USE_HEADER_REPLY_TO

生成 SMS 源地址时控制 Reply-to: 标题行的使用

0

USE_HEADER_RESENT

生成创始者信息时控制 Resent-*: 标题行的使用

0

USE_HEADER_SENSITIVITY

控制电子邮件消息标题中保密性信息的使用

1

USE_UCS2

在 SMS 消息中使用 UCS2 字符集(如果可用)

1

 

SMS Gateway Server 选项

GATEWAY_PROFILE

匹配在 SMS Gateway Server 的配置文件 sms_gateway.cnf 中配置的网关配置文件名

N/A

 

SMS 字段选项

DEFAULT_DESTINATION_NPI

缺省 SMS 目标地址为 NPI

0x00

DEFAULT_DESTINATION_TON

缺省 SMS 目标地址为 TON

0x01

DEFAULT_PRIORITY

SMS 消息的缺省优先级设置

0=GSMCDMA

1=TDMA

DEFAULT_PRIVACY

SMS 消息的缺省保密性值标志

-1

DEFAULT_SERVICE_TYPE

与提交的 SMS 消息相关联的 SMS 应用服务

N/A

DEFAULT_SOURCE_ADDRESS

缺省 SMS 源地址

0

DEFAULT_SOURCE_NPI

缺省的 SMS 源地址为 NPI

0x00

DEFAULT_SOURCE_TON

缺省的 SMS 源地址为 TON

0x01

DEFAULT_VALIDITY_PERIOD

SMS 消息的缺省有效期

N/A

DESTINATION_ADDRESS_NUMERIC

将 SMS 目标地址缩减为仅包含
0 至 9 个字符

0

DESTINATION_ADDRESS_PREFIX

目标 SMS 地址带有前缀的文本字符串

N/A

PROFILE

要使用的 SMS 配置文件

GSM

USE_SAR

使用 SMS sar_ 字段排列多条 SMS 消息

0

 

 SMPP 协议选项

ESME_ADDRESS_NPI

绑定到 SMTP 服务器时要指定的 ESME NPI

0x00

ESME_ADDRESS_TON

绑定到 SMPP 服务器时要指定的 ESME TON

0x00

ESME_IP_ADDRESS

运行 Sun Java System Messaging
Server 的主机的 IP 地址

N/A

ESME_PASSWORD

绑定到 SMPP 服务器时要递交的口令

N/A

ESME_SYSTEM_ID

绑定时要递交到 SMSC 的系统标识

N/A

ESME_SYSTEM_TYPE

绑定时要递交到 SMSC 的系统类型

N/A

MAX_PAGES_PER_BIND

与 SMPP 服务器进行单个会话期间要提交的 SMS 消息的最大数目

1024

REVERSE_ORDER

多部分 SMS 消息的传输顺序

0

SMPP_MAX_CONNECTIONS

SMPP 服务器同时连接的最大数目

20

SMPP_PORT

对于单向 SMS,指 SMPP 服务器将侦听的 TCP 端口。对于双向 SMS,指用于 LISTEN_PORT 以进行 SMPP 中继的同一 TCP 端口。

N/A

SMPP_SERVER

对于单向 SMS,指 SMPP 服务器要连接到的主机的名称。

对于双向 SMS,设置为指 SMS Gateway Server 的主机名或 IP 地址。如果使用 SMPP 中继的 LISTEN_INTERFACE_ADDRESS 选项,则请确保使用与指定的网络接口地址相关联的主机名或 IP 地址。

N/A

TIMEOUT

用 SMPP 服务器完成读写操作超时

30

 

本地化选项

CONTENT_PREFIX

引入电子邮件消息内容的文本

Msg

DSN_DELAYED_FORMAT

用于传送延迟通知的格式化字符串

空字符串

DSN_FAILED_FORMAT

用于传送失败通知的格式化字符串

参见说明

DSN_RELAYED_FORMAT

用于中继通知的格式化字符串。

参见说明

DSN_SUCCESS_FORMAT

要成功传送通知的格式化字符串。

参见说明

FROM_FORMAT

指示电子邮件消息创始者时显示的文本

$a

FROM_NONE

没有创始者时显示的文本

N/A

LANGUAGE

要从其选择文本字段的语言组 (i-default)

i-default

LINE_STOP

从电子邮件消息中提取的、放置在各行末尾的文本

空格字符

NO_MESSAGE

表示消息无内容的文本

]no message]

SUBJECT_FORMAT

指示电子邮件消息的主题时显示的
文本

$s

SUBJECT_NONE

电子邮件消息无主题时显示的文本

N/A

 

其他选项

DEBUG

启用详细调试输出

-1

电子邮件到 SMS 转换选项

以下选项控制电子邮件消息到 SMS 消息的转换。选项值的范围列在括号中。一般情况下,给定电子邮件消息可转换成一条或多条 SMS 消息。有关此转换过程的说明,请参见电子邮件到 SMS 的转换过程

GATEWAY_NOTIFICATIONS

((0 或 1)指定是否将电子邮件通知转换成 SMS 通知。电子邮件通知消息必须符合 RFC 1892、1893 和 1894。缺省值为 0

GATEWAY_NOTIFICATIONS=0 时,这些通知将被放弃,不会转换成 SMS 通知。

要将这些通知转换成 SMS 通知,则应设置 GATEWAY_NOTIFICATIONS=1。当此选项设置为 1 时,这些本地化选项 (DSN_*_FORMAT) 控制将哪些通知类型(成功、失败、延迟、已中继)转换成 SMS 消息并通过网关进行发送。(如果通知类型的值是一个空字符串,则该类型通知将不转换成 SMS 消息。)

MAX_MESSAGE_PARTS

((整数)将多个部分的电子邮件消息转换成 SMS 消息时,将只转换前 MAX_MESSAGE_PARTS 个文本部分。其余部分将被放弃。缺省情况下,MAX_MESSAGE_PARTS 为 2。要使消息部分数量无限,应将值指定为 -1。如果将值指定为 0,则 SMS 消息中将不放置消息内容。这就只会使用电子邮件消息的标题行(例如 Subject:)以生成 SMS 消息。

请注意,包含文本和附件的电子邮件消息一般由两部分组成。还请注意,只有纯文本消息部分才可转换。所有其他 MIME 内容类型都将被放弃。

MAX_MESSAGE_SIZE

((整数,>= 10)使用此选项可以设置电子邮件消息所生成的 SMS 消息中容纳的总字节数上限。特别是,将用于一条或多条生成的 SMS 消息的最大 MAX_MESSAGE_SIZE 字节数。任何超出此限值的字节将被放弃。

缺省情况下,上限强制为 960 个字节。这一限制对应于 MAX_MESSAGE_SIZE=960。要使字节数不受限制,应将值指定为零。

将电子邮件消息从统一字符编码转换为 SMSC 的缺省字符集或 UCS2 之后,才确定所使用的字节数。这意味着,在转换为 UCS2 的情况下,960 个字节的 MAX_MESSAGE_SIZE 将让步,因为每个 UCS2 字符至少两个字节长,所以最多为 480 个字符。

请注意,MAX_MESSAGE_SIZEMAX_PAGES_PER_MESSAGE 选项都服务于同一目的:限制所得的 SMS 消息的总大小。事实上,MAX_PAGE_SIZE=960MAX_PAGE_SIZE=160 隐含了 MAX_PAGES_PER_MESSAGE=6。那么为什么存在两种不同的选项呢?这样就可以控制页面的总大小或总页数,而无需考虑一条 SMS 消息的最大大小 MAX_PAGE_SIZE。这一点在通道选项文件中可能并不重要,但在使用将电子邮件定向到通道中所述的 MAXPAGESMAXLEN 寻址属性时则很重要。

最后请注意,应使用 MAX_MESSAGE_SIZEMAX_PAGE_SIZE * MAX_PAGES_PER_MESSAGE 两个限值中较小的值。

MAX_PAGE_SIZE

(整数,>= 10)一条 SMS 消息中允许的最大字节数用 MAX_PAGE_SIZE 选项控制。缺省情况下,使用的字节数值为 160。此字节数对应于 MAX_PAGE_SIZE=160

MAX_PAGES_PER_MESSAGE

((整数,1 至 255)要用此选项控制为给定电子邮件消息生成的 SMS 消息的最大数目。事实上,此选项将截断电子邮件消息,从而只把适合 MAX_PAGES_PER_MESSAGE SMS 消息的那部分电子邮件消息转换成 SMS 消息。有关进一步的讨论,请参见 MAX_PAGE_SIZE 选项的说明。

缺省情况下,将 MAX_PAGES_PER_MESSAGE 设置为 1MAX_MESSAGE_SIZE 除以 MAX_PAGE_SIZE 所得商中的较大值。

ROUTE_TO

字符串IP 主机名1 至 64 个字节)使用如下格式的电子邮件地址将定向到配置文件的所有 SMS 消息重新路由到指定的 IP 主机名:

SMS-destination-address@route-to

其中 SMS-destination-address 是 SMS 消息的目标地址,而 route-to 则是用此选项指定的 IP 主机名。这条 SMS 消息的全部内容将作为所得的电子邮件消息的内容进行发送。PARSE_RE_* 选项将被忽略。


PARSE_RE_*ROUTE_TO 选项应相互独立使用。在同一网关配置文件中同时使用这两个选项将导致配置错误。


SMSC_DEFAULT_CHARSET

字符串)使用此选项,就可以指定 SMSC 的缺省字符集。请使用以下文件中给定的字符集名称

installation-directory/config/charsets.txt

如果未指定此选项,就假设使用 US-ASCII。请注意,charsets.txt 中使用的助记名称是在同一目录中的 charnames.txt 中定义的。

处理电子邮件消息时,首先对标题行和文本消息部分进行解码,然后将其转换为统一字符编码。接下来,数据将会转换为 SMSC 的缺省字符集或 UCS2,这取决于 USE_UCS2 选项的值以及 SMS 消息是否至少包含一个缺省 SMSCC 字符集中所没有的符号。请注意,UCS2 字符集是 16 位统一字符编码,通常称作 UTF-16。

USE_HEADER_FROM

((整数,0 至 2)设置此选项,以允许将 From: 地址传递到 SMSC。该值指示 From: 地址的来源及其具备的格式。表 D-6 显示了允许的值及其含义。

表 D-6 USE_HEADER_FROM 值

说明

0

SMS 源地址绝不可依据 From: 地址。使用已找到的属性-值对

1

SMS 源地址设置为 from-local@from-domain,其中 From: 地址为:@from-route:from-local@from-domain

2

SMS 源地址设置为 from-local,其中 From: 地址为:@from-route:from-local@from-domain

USE_HEADER_PRIORITY

0 或 1)此选项控制 RFC 822 Priority: 标题行的处理标题行。缺省情况下,Priority: 标题行中的信息用于设置所得到的 SMS 消息的优先级标志,以覆盖用 DEFAULT_PRIORITY 选项指定的缺省 SMS 优先级。这种情况对应于 USE_HEADER_PRIORITY=1。要禁用 RFC 822 Priority: 标题行,请指定 USE_HEADER_PRIORITY=0

有关处理 SMS 优先级标志的详细信息,请参见 DEFAULT_PRIORITY 选项的说明。

USE_HEADER_REPLY_TO

0 或 1)当 USE_HEADER_FROM =1 时,此选项控制是否考虑将 Reply-to:Resent-reply-to: 标题行用作 SMS 源地址。缺省情况下,Reply-to:Resent-reply-to: 标题行标题行被忽略。这对应于选项值 0。要想启用这些标题行,请使用选项值 1。

请注意,RFC 2822 反对使用 Reply-to:Resent-reply-to: 标题行标题行。

USE_HEADER_RESENT

((0 或 1)当 USE_HEADER_FROM =1 时,此选项控制是否将 Resent- 标题行用作 SMS 源地址。缺省情况下,Resent- 标题行被忽略。这对应于选项值 0。要想启用这些标题行,请使用选项值 1。

请注意,RFC 2822 反对使用 Resent- 标题行。

USE_HEADER_SENSITIVITY

0 或 1USE_HEADER_SENSITIVITY 选项控制 RFC822 Sensitivity: 标题行的处理。缺省情况下,Sensitivity: 标题行中的信息用于设置所得到的 SMS 消息的保密性标志,以覆盖用 DEFAULT_PRIVACY 选项指定的缺省 SMS 保密性。这种情况(缺省情况)对应于 USE_HEADER_SENSITIVITY=1。要启用 RFC 822 Sensitivity: 标题行,请指定 USE_HEADER_SENSITIVITY=0

有关处理 SMS 保密性标志的详细信息,请参见 DEFAULT_PRIVACY 选项的说明。

USE_UCS2

((0 或 1)适当时,通道将在该选项所生成的 SMS 消息中使用 UCS2 字符集。这是一个缺省性能,对应于 USE_UCS2=1。要禁用 UCS2 字符集,请指定 USE_UCS2=0。有关字符集问题的详细信息,请参见 SMSC_DEFAULT_CHARSET 选项的说明。

表 D-7 USE_UCS2 有效值 

USE_UCS2 值

结果

1(缺省值)

将尽可能使用 SMSC 缺省字符集。如果始发电子邮件消息中包含 SMSC 缺省字符集所没有的符号,就会使用 UCS2 字符集。

0

将始终使用 SMSC 缺省字符集。该字符集中所没有的符号将由助记符号表示(例如用“AE”表示 AE 连字符)。

SMS Gateway Server 选项

GATEWAY_PROFILE

SMS Gateway Server 配置文件 sms_gateway.cnf 中网关配置文件的名称。

SMS 选项

以下选项允许在生成的 SMS 消息中指定 SMS 字段。

DEFAULT_DESTINATION_NPI

整数,0 - 255)缺省情况下,将指定目标地址的 NPI(数字规划指标)值为零。使用此选项,可指定一个范围在 0 至 255 之间的替代整数值。典型 NPI 值包含下文的表 D-8 中所找到的值:

表 D-8 数字规划指标值

说明

0

未知

1

ISDN 类(E.163、E.164)

3

数据 (X.121)

4

电传 (F.69)

6

陆地移动设备 (E.212)

8

全国

9

Private

10

ERMES

14

IP 地址 (Internet)

18

WAP 客户机 ID

>= 19

未定义

可以将此选项的值指定为以下三种形式之一:

DEFAULT_DESTINATION_TON

((整数,0 至 255)缺省情况下,将指定目标地址的 TON(数字类型)指标值为零。使用此选项,可指定一个范围在 0 至 255 之间的替代整数值。典型 TON 值包含下文的表 D-9 中所找到的值:

表 D-9 典型 TON 值

说明

0

未知

1

国际

2

全国

3

网络特定

4

用户号码

5

字母数字

6

缩写

>=7

未定义

可以将此选项的值指定为以下三种形式之一:

DEFAULT_PRIORITY

(整数,0 至 255)SMS 消息有一个强制性优先级字段。SMS 优先级值的解释显示在下文的表 D-10 中:

表 D-10 针对每个 SMS 配置文件类型解释的 SMS 优先级值

GSM

TDMA

CDMA

0

非优先级

大量

正常

1

优先级

正常

交互

2

优先级

Urgent

Urgent

3

优先级

特急

紧急

使用此选项,可以指定赋予 SMS 消息的缺省优先级。如果没有指定优先级,PROFILE=GSMCDMA 使用缺省优先级 0,PROFILE=TDMA 使用优先级 1

请注意,如果 USE_HEADER_PRIORITY=1 且电子邮件消息具有 RFC 822 Priority: 标题行,则改用该标题行中指定的优先级设置所得到的 SMS 消息的优先级。特别是,如果 USE_HEADER_PRIORITY=0,则会始终根据 DEFAULT_PRIORITY 选项设置 SMS 优先级标志,并且始终忽略 RFC 822 Priority: 标题行。如果 USE_HEADER_PRIORITY=1,则会使用始发电子邮件消息的 RFC 822 Priority: 标题行设置 SMS 消息的优先级标志。如果该标题行不存在,则会使用 DEFAULT_PRIORITY 选项设置 SMS 优先级标志。

用于将 RFC 822 Priority: 标题行值转换成 SMS 优先级标志的映射显示在下文的表格中:

表 D-11 将 Priority: 标题转换成 SMS 优先级标志的映射

RFC 822

SMS 优先级标志

优先级:value

GSM

TDMA

CDMA

第三级

非优先级 (0)

大量 (0)

正常 (0)

第二级

非优先级 (0)

大量 (0)

正常 (0)

非急

非优先级 (0)

大量 (0)

正常 (0)

正常

非优先级 (0)

正常 (1)

正常 (0)

Urgent

优先级 (1)

急 (2)

急 (2)

DEFAULT_PRIVACY

整数,-1、0 至 255)是否要在 SMS 消息中设置保密性标志,并且使用 DEFAULT_PRIVACYUSE_HEADER_SENSITIVITY 选项控制要使用哪一个值。缺省情况下,DEFAULT_PRIVACY 使用值 -1。下文的表 D-12 显示了将 DEFAULT_PRIVACYUSE_HEADER_SENSITIVITY 选项设置为各种值的结果。

表 D-12 DEFAULT_PRIVACYUSE_HEADER_SENSITIVITY 值的结果

DEFAULT_PRIVACY

USE_HEADER_SENSITIVITY

结果

-1

0

SMS 消息中从不设置 SMS 保密性标志。

n >= 0

0

SMS 保密性标志的值始终设置为 n。将始终忽略 RFC 822 Sensitivity: 标题行。

-1(缺省值)

1(缺省值)

SMS 消息的保密性标志仅在始发电子邮件消息具有 RFC 822 Sensitivity: 标题行时才设置。在这种情况下,将 SMS 保密性标志设置为对应于 Sensitivity: 标题行的值。该值为缺省值。

n >= 0

1

将 SMS 消息的保密性标志设置为对应于始发电子邮件消息的 RFC 822 Sensitivity: 标题行。如果电子邮件消息不具有 Sensitivity: 标题行,则将 SMS 保密性标志的值设置为 n。

SMS 保密性值的解释显示在下文的表 D-13 中:

表 D-13 SMS 保密性值解释

说明

0

无限制

1

有限制

2

机密

3

秘密

>= 4

未定义

用于将 RFC 822 Sensitivity: 标题行值转换成 SMS 优先级值的映射显示在下文的表 D-14 中:

表 D-14 将 Sensitivity: 标题转换成 SMS 保密性值的映射

RFC 822 Sensitivity: value

SMS 保密性值

Personal

1(有限制)

Private

2(机密)

公司机密

3(秘密)

DEFAULT_SERVICE_TYPE

((字符串,0 至 5 个字节)要与通道所生成的 SMS 消息相关联的服务类型。缺省情况下,不指定服务类型(即,零长度字符串)。某些通用的服务类型包括:CMT(蜂窝式消息传送)、CPT(蜂窝式呼叫)、VMN(语音邮件通知)、VMA(语音邮件报警)、WAP(无线应用协议)和 USSD(无特定结构的辅助数据服务)。

DEFAULT_SOURCE_ADDRESS

((字符串,0 至 20 个字节)用作由电子邮件消息生成的 SMS 消息的源地址。请注意,当 USE_HEADER_FROM=1 时,用此选项指定的值将被电子邮件消息的创始者地址所覆盖。缺省情况下,该值被启用,即值为 0

DEFAULT_SOURCE_NPI

整数,0 至 255)缺省情况下,将指定源地址的 NPI 值为零。使用此选项,可指定一个范围在 0 至 255 之间的替代整数值。有关 NPI 典型值表,请参见 DEFAULT_DESTINATION_NPI 选项的说明。

DEFAULT_SOURCE_TON

((整数,0 至 255)缺省情况下,将指定源地址的 TON 指标值为零。使用此选项,可指定一个范围在 0 至 255 之间的替代整数值。有关典型 TON 值表,请参见 DEFAULT_DESTINATION_TON 选项的说明。

DEFAULT_VALIDITY_PERIOD

((字符串,0 至 252 个字节)缺省情况下,SMS 消息不给定相对有效期,相反它们使用 SMSC 的缺省值。使用此选项可以指定不同的相对有效期。可以以单位秒、分钟、小时或天指定值。下文的表 D-15 指定了此选项各种值的格式和说明:

表 D-15 DEFAULT_VALIDITY_PERIOD 格式和值

格式

说明

nnn

隐含单位为秒(例如 604800)

nnns

单位为秒(例如 604800s)

nnnm

单位为分钟(例如 10080m)

nnnh

单位为小时(例如 168h)

nnnd

单位为天(例如 7d)

可以使用指定的 0、0s、0m、0h 或 0d 来选择 SMSC 的缺省有效期。即,如果使用指定的 0、0s、0m、0h 或 0d,就会为已生成的 SMS 消息的有效期指定一个空字符串。

请注意,此选项不接受 UTC 格式的值。

DESTINATION_ADDRESS_NUMERIC

0 或 1)使用此选项可从电子邮件信封 To: 地址所提取的 SMS 目标地址中去除所有地址。例如,如果信封 To: 地址为:

"(800) 555-1212"@sms.siroe.com

则该地址将被减少为:

8005551212@sms.siroe.com

要启用此去除操作,请为此选项指定值 1。缺省情况下,此去除操作被禁用,这对应于选项值 0。请注意,如果启用去除操作,将会在通过 DESTINATION_ADDRESS_PREFIX 选项添加任何目标地址前缀之前完成去除操作。

DESTINATION_ADDRESS_PREFIX

(string) 在某些情况下,可能需要确保在所有 SMS 目标地址前都加一个固定的文本字符串前缀(例如“+”)。可以使用此选项指定这样一个前缀。然后,此前缀将被添加到任何没有指定前缀的 SMS 目标地址中。要避免被 DESTINATION_ADDRESS_NUMERIC 选项去除,请在 DESTINATION_ADDRESS_NUMERIC 选项之后使用此选项。

PROFILE

((字符串)指定要与 SMSC 配合使用的 SMS 配置。可能的值包括 GSMTDMACDMA。如果没有指定,则假设为 GSM。此选项仅用于为诸如 DEFAULT_PRIORITYDEFAULT_PRIVACY 之类的其他通道选项选择缺省值。

USE_SAR

(0 或 1)可能需要将足够大的电子邮件消息分割成多条 SMS 消息。如果发生这种情况,就可以使用 SMS sar_ 字段有选择地为一条 SMS 消息添加排序信息。这样将生成“片段”SMS 消息,此消息可由接收终端重新组合成一条 SMS 消息。指定 USE_SAR=1,以表示可在适当时添加此排序信息。缺省设置是不添加排序信息,并且对应于 USE_SAR=0

当指定了 USE_SAR=1 时,REVERSE_ORDER 选项将被忽略。

SMPP 选项

以下选项可用于指定 SMPP 协议参数。当 MTA 用作外部短消息实体 (ESME) 时,带有以字符串“ESME_”开始的名称的选项用于标识 MTA(即,当把 MTA 绑定到 SMPP 服务器上,以便向服务器的关联 SMSC 提交 SMS 消息时)。

ESME_ADDRESS_NPI

(整数,0 至 255)缺省情况下,绑定操作将指定 ESME NPI 的值为零,该值表示未知 NPI。使用此选项,可指定一个范围在 0 至 255 之间的替代整数值。有关 NPI 典型值表,请参见 DEFAULT_DESTINATION_NPI 选项的说明。

ESME_ADDRESS_TON

(整数,0 至 255)缺省情况下,绑定操作将指定 ESME TON 值为 0。使用此选项,可指定一个范围在 0 至 255 之间的替代整数值。有关典型 TON 值表,请参见 DEFAULT_DESTINATION_TON 选项的说明。

ESME_IP_ADDRESS

((字符串,0 至 15 个字节)当绑定到 SMPP 服务器时,BIND PDU 表示客户的(即 ESME 的)地址范围是一个 IP 地址。这一操作将通过将 TON 指定为 0x00 并将 NPI 指定为 0x0d 来完成。然后,地址范围字段的值将被设置为运行 SMS 通道的主机的 IP 地址。指定 IP 地址为点分十进制格式(例如 127.0.0.1)。

ESME_PASSWORD

((字符串,0 至 8 个字节)当绑定到 SMPP 服务器时,可能需要口令。如果需要口令,请使用此选项指定口令。缺省情况下,存在长度为零的口令字符串。

ESME_SYSTEM_ID

((字符串,0 至 15 个字节)绑定到 SMPP 服务器时,可能需要为 MTA 提供系统 ID。缺省情况下,不指定系统 ID(即,使用零长度的字符串)。要指定系统 ID,请使用此选项。

ESME_SYSTEM_TYPE

((字符串,0 至 12 个字节)当绑定到 SMPP 服务器时,可能需要为 MTA 提供系统类型。缺省情况下,不指定系统类型(即,使用零长度的字符串)。

MAX_PAGES_PER_BIND

((整数,>= 0)某些 SMPP 服务器可能限制单个绑定会话期间提交的 SMS 消息的最大数目。认识到这一点后,就可使用此选项指定单个会话期间可提交的 SMS 消息的最大数目。达到此限制后,通道将解开,并关闭 TCP/IP 连接,然后再重新连接并重新绑定。

缺省情况下,MAX_PAGES_PER_BIND 使用的值为 1024。请注意,通道还将检测 ESME_RTHROTTLED 错误并在单个通道运行期间相应地调整 MAX_PAGES_PER_BIND

REVERSE_ORDER

((0 或 1)当一条电子邮件消息生成多条 SMS 消息时,所生成的那些 SMS 消息就可按顺序 (REVERSE_ORDER=0) 或倒序 (REVERSE_ORDER=1) 提交到 SMSC。倒序可用于接收终端首先显示最后接收到的消息的情况。在这种情况下,最后接收到的消息将成为电子邮件消息的第一部分而不是最后一部分。缺省情况下,将使用 REVERSE_ORDER=1

请注意,当指定 USE_SAR=1 时,此选项将被忽略。

SMPP_MAX_CONNECTIONS

((整数,1 至 50)该选项控制每个过程同时连接 SMPP 的最大数目。由于每个连接都有一个相关联的线程,因此该选项还可用于限制每个进程的“辅助”线程的最大数目。缺省情况下,SMPP_MAX_CONNECTIONS=20

SMPP_PORT

((整数,1 至 65535)SMPP 服务器将侦听的 TCP 端口可使用此选项或 port 通道关键字来指定。此端口号必须通过这两种机制之一进行指定。如果同时用这两种机制指定了此端口号,则优先采用 SMPP_PORT 选项所作的设置。请注意,此选项没有缺省值。

对于双向 SMS,请确保该端口与用于 SMPP 中继的 LISTEN_PORT 端口相同。

SMPP_SERVER

((字符串,1 至 252 个字节)缺省情况下,对于单向 SMS,要连接到 SMPP 服务器的 IP 主机名为与通道相关联的正式主机名(即,MTA 配置中通道定义的第二行中所显示的主机名)。此选项可用于指定不同的主机名或 IP 地址,该主机名或 IP 地址将覆盖通道定义中所指定的主机名或 IP 地址。在指定 IP 地址时,请使用点分十进制表示法(例如 127.0.0.1)。

对于双向 SMS,请设置为指向 SMS Gateway Server 的主机名或 IP 地址。如果使用 SMPP 中继的 LISTEN_INTERFACE_ADDRESS 选项,则请确保使用与指定的网络接口地址相关联的主机名或 IP 地址。

TIMEOUT

((整数,>= 2)缺省情况下,当等待数据完成到 SMPP 服务器的写入或等待从 SMPP 服务器接收数据操作时,使用的超时时间为 30 秒。使用 TIMEOUT 选项可指定一个不同的超时值(以秒为单位)。指定值应至少为 1 秒。

本地化选项

在构造 SMS 消息时,SMS 通道有许多其放置到这些消息中的固定文本字符串。例如,引入电子邮件的 From: 地址和 Subject: 标题行的这些字符串。使用本节所述的通道选项,可为不同的语言指定这些字符串的版本,然后为该通道指定缺省语言。代码示例 D-2 显示了选项文件的语言部分:

代码示例 D-2 通道选项文件的语言说明部分

LANGUAGE=default-language

[language=i-default]
FROM_PREFIX=From:
SUBJECT_PREFIX=Subj:
CONTENT_PREFIX=Msg:
LINE_STOP=
NO_MESSAGE=[no message]
REPLY_PREFIX=Re:

[language=en]
FROM_PREFIX=From:
SUBJECT_PREFIX=Subj:
CONTENT_PREFIX=Msg:
LINE_STOP=
NO_MESSAGE=[no message]
REPLY_PREFIX=Re:
...

在每一个 [language=x] 块中,可指定与该语言相关的本地化选项。如果块中未指定特定选项,则请使用该选项的全局值。在 [language=x] 块之外所指定的本地化选项设置该选项的全局值。

对于下文列出的选项,必须使用 US-ASCII 或 UTF-8 字符集指定字符串值。请注意,US-ASCII 字符集是 UTF-8 字符集的特例。

CONTENT_PREFIX

((字符串,0 至 252 个字节)放置于 SMS 消息中、位于电子邮件消息内容之前的文本字符串。缺省全局值为 US-ASCII 字符串“Msg:”。

DSN_DELAYED_FORMAT

(字符串,0 至 256 个字符)用于传送延迟通知的格式化字符串。缺省情况下,此选项使用一个空字符串,从而禁止将延迟通知转换成 SMS。请注意,必须将 GATEWAY_NOTIFICATIONS 设置为 1 才能使此选项有效。GATEWAY_NOTIFICATIONS=0 时,将忽略此选项。

DSN_FAILED_FORMAT

(字符串,0 至 256 个字符)用于永久性传送失败通知的格式化字符串。此选项的缺省值为字符串:

Unable to deliver your message to $a; no further delivery attempts will be made.

要禁止失败通知的转换,请为此选项指定一个空字符串。请注意,必须将 GATEWAY_NOTIFICATIONS 设置为 1 才能使此选项有效。GATEWAY_NOTIFICATIONS=0 时,将忽略此选项。

DSN_RELAYED_FORMAT

(字符串,0 至 256 个字符)用于中继通知的格式化字符串。缺省值为字符串:

Your message to $a has been relayed to a messaging system which may not provide a final delivery confirmation

要禁止中继通知的转换,请为此选项指定一个空字符串。请注意,必须将 GATEWAY_NOTIFICATIONS 设置为 1 才能使此选项有效。GATEWAY_NOTIFICATIONS=0 时,将忽略此选项。

DSN_SUCCESS_FORMAT

(字符串,0 至 256 个字符)用于成功传送通知的格式化字符串。缺省值为字符串:

Your message to $a has been delivered

要禁止成功的传送通知的转换,请为此选项指定一个空字符串。请注意,必须将 GATEWAY_NOTIFICATIONS 设置为 1 才能使此选项有效。GATEWAY_NOTIFICATIONS=0 时,将忽略此选项。

FROM_FORMAT

((字符串,0 至 252 个字节)将创始者信息格式化以插入到 SMS 消息中的格式化模板。缺省全局值是 US-ASCII 字符串“$a”,该字符串替换创始者的电子邮件地址。有关详细信息,请参见格式化模板

FROM_NONE

((字符串,0 至 252 个字节)不显示创始者地址时放置在 SMS 消息中的文本字符串。缺省全局值是一个空字符串。

请注意,由于站点一般都会拒绝没有任何创始者地址的电子邮件消息,所以通常将永远不会使用此选项。

LANGUAGE

字符串,0 至 40 个字节)从其中选择文本字符串的缺省语言组。如果未指定,则会从主机的缺省语言环境规范中导出语言。如果主机的语言环境规范不可用或对应于“C”,则会使用 i-default。(i-default 对应于“国际读者通用英文文本”。)

LINE_STOP

((字符串,0 至 252 个字节)要放置在从电子邮件消息中提取的 SMS 消息行之间的文本字符串。缺省全局值是 US-ASCII 空格字符“ ”。

NO_MESSAGE

((字符串,0 至 252 个字节)要放置在 SMS 消息中以表示电子邮件消息无内容的文本字符串。缺省全局值是 US-ASCII 字符串“[no message]”。

SUBJECT_FORMAT

字符串,0 至 252 个字节)要对显示在 SMS 消息中的 Subject: 标题行内容进行格式化的格式化模板。此选项的缺省全局值是 US-ASCII 字符串“($s)”。有关详细信息,请参见格式化模板

有关在不具有 Subject: 标题行或该标题行的内容为空字符串时的处理说明,请参见 SUBJECT_NONE 选项。

SUBJECT_NONE

字符串,0 至 252 个字节)始发电子邮件消息没有 Subject: 标题行或 Subject: 标题行的值为空字符串时所显示的文本字符串。此选项的缺省全局值是空字符串。

DEBUG

格式化模板

使用 FROM_FORMATSUBJECT_FORMAT 和所有 DSN_* 通道选项指定的格式化模板都是 UTF-8 字符串,这些字符串可能包含文字文本与替换序列的组合。假设电子邮件地址样例为

Jane Doe <user@siroe>

已识别的替换序列显示在下文的表 D-17 中:

表 D-17 替换序列

序列

说明

$a

用创始者电子邮件地址的本地和域部分替换(例如“user@siroe”)

$d

用创始者电子邮件地址的域部分替换(例如“domain”)

$p

用创始者电子邮件地址的短语部分(如果有)替换(例如“Jane Doe”)

$s

Subject: 标题行的内容替换

$u

用创始者电子邮件地址的本地部分替换(例如“user”)

\x

用文字字符“x”替换

例如,格式化模板

From: $a

将生成文本字符串

From: user@siroe

构造

${xy:alternate text}

可用于替换与序列 x 相关联的文本。如果该文本是空字符串,则会改用与序列 y 相关联的文本。而且,如果该文本为空字符串,则会替换替代文本。例如,假设将格式化模板

From: ${pa:unknown sender}

用于创始者电子邮件地址

John Doe <jdoe@siroe.com>

(其中有一个短语部分),该模板将生成:

From: John Doe

但是,对于地址

jdoe@siroe.com

(其中没有短语),该模板将生成

From: jdoe@siroe.com

而对于空创始者地址,该模板将生成

From: unknown sender

添加附加 SMS 通道

您可以配置 MTA,使之具有多个 SMS 通道。执行此操作的典型原因有两个:

  1. 为了与不同 SMPP 服务器进行通信。
  2. 这是显而易见的:仅向配置中添加附加 SMS 通道,确保 (a) 为其取一个不同的通道名并且 (b) 使不同的主机名与其相关联。例如,

    sms_mway port 55555 threaddepth 20
    smpp.siroe.com

    sms_ace port 777 threaddepth 20
    sms.ace.net

    请注意,不需要新的重写规则。如果没有直接匹配的重写规则,Messaging Sever 就查找带有相关联主机名的通道。例如,如果用 user@host.domain 表示服务器,它就查找名为“host.domain”的通道。如果它找到这样的通道,就在该通道中路由消息。否则,它将开始查找“.domain”重写规则,如果没有该规则,则查找点(“.”)规则。有关重写规则的详细信息,请参见《Sun Java System Messaging Server 管理指南》。

  3. 为了使用不同的通道选项与同一 SMPP 服务器进行通信。
  4. 为了使用不同的通道选项与同一 SMPP 服务器进行通信,请在每个通道定义中的 SMPP_SERVER 通道选项中指定同一 SMPP 服务器。

    由于两个不同的通道不能有相同的正式主机名(即,列在通道定义第二行中的主机名),所以有必要使用此机制。为了使它们能够与同一 SMPP 服务器进行通信,请定义两个独立的通道,并请在其通道选项文件的 SMPP_SERVER 中指定同一 SMPP 服务器。

    例如,您可以给出以下通道定义

    sms_mway_1 port 55555 threaddepth 20
    SMS-DAEMON-1

    sms_mway_2 port 55555 threaddepth 20
    SMS-DAEMON-2

    和重写规则

    sms-1.siroe.com $u%sms-1.siroe.com@SMS-DAEMON-1
    sms-2.siroe.com $U%sms-2.siroe.com@SMS-DAEMON-2

    然后,为了使它们都能使用同一 SMPP 服务器,这两个通道中的任何一个通道都应在其通道选项文件中指定 SMPP_SERVER=smpp.siroe.com

调整传送重试的频率

如果某条 SMS 消息因为临时性错误(例如,无法到达 SMPP 服务器)而无法传送,电子邮件消息将保留在传送队列中,并在以后再重试。除非另有配置,否则作业控制器将在一个小时后才进行重试。对于 SMS 消息传送来说,这一等待时间好像太长。在这种情况下,建议将 backoff 通道关键字与 SMS 通道配合使用,以为传送尝试指定一个更主动的安排。例如,

sms_mway port 55555 threaddepth 20 \
  backoff pt2m pt5m pt10m pt30m notices 1
smpp.siroe.com

对于上述设置,将在第一次尝试结束后两分钟进行一次重新传送尝试。如果再次失败,则请在第二次尝试后五分钟再次尝试。然后在十分钟后再试,此后每隔三十分钟重试一次。如果在一天之后仍不能传送,notices 1 通道关键字将会把该消息作为不可传送的消息予以返回。

单向配置样例 (MobileWay)

MTA SMS 通道可与任何 SMPP V3.4 兼容 SMPP 服务器配合使用。为便于说明配置示例,本节将解释如何配置 SMS 通道,以使其与 MobileWay SMPP 服务器配合使用。MobileWay (http://www.mobileway.com/) 是领先的全局数据和 SMS 连接性提供商。通过 MobileWay 路由您的 SMS 通信,您就可以实现与全球范围内大多数主要 SMS 网络上的 SMS 用户的通信。

如果用 MobileWay 申请 SMPP 帐户,系统可能会要求您回答以下问题:

对 MobileWay 提供了上述问题的答案以后,您将得到一个 SMPP 帐户以及与其 SMPP 服务器进行通信所必需的信息。此信息包括

Account Address: a.b.c.d:p
Account Login: system-id
Account Passwd: secret

Account Address 字段是将连接到的 MobileWay SMPP 服务器的 IP 地址 a.b.c.d 和 TCP 端口号 p。请将这些值用于 SMPP_SERVERSMPP_PORT 通道选项。Account Login 和 Passwd 是分别用于 ESME_SYSTEM_IDESME_PASSWORD 通道选项的值。使用此信息时,您的通道的选项文件应包括

SMPP_SERVER=a.b.c.d
SMPP_PORT=p
ESME_SYSTEM_ID=system-id
ESME_PASSWORD=secret

此时,要与 MobileWay 交互操作,就需要作两项附加选项设置

ESME_ADDRESS_TON=0x01
DEFAULT_DESTINATION_TON=0x01

imta.cnf 文件中的重写规则可以显示为

sms.your-domain $u@sms.your-domain

imta.cnf 文件中的通道定义可以显示为

sms_mobileway
sms.your-domain

通道选项文件、重写规则和通道定义适当显示后,就可以发送一条测试消息。MobileWay 要求国际寻址为以下格式

+<country-code><subscriber-number>

例如,要向用户编号为 (800) 555-1212 的北美用户发送一条测试消息,就应将您的电子邮件消息寄到

+18005551212@sms.your-domain

调试

要调试通道,请在通道的定义中指定 master_debug 通道关键字。例如,

sms_mway port 55555 threaddepth 20 \
  backoff pt2m pt5m pt10m pt30m notices 1 master_debug

使用 master_debug 通道关键字,有关通道操作的基本诊断信息将被输出到通道的日志文件中。要获得有关通道所承担的 SMPP 事务的详细诊断信息,还请在通道的选项文件中指定

DEBUG=-1

为双向 SMS 配置 SMS 通道

有关配置 SMS 通道的常规指导,请参见前文中从 SMS 通道配置开始的主题。尽管 SMS 通道可直接与远程 SMSC 通话,但除下文的表 D-18 中列出的例外情况之外仍应对 SMS 通道进行配置:

表 D-18 双向配置的例外情况

例外

解释

master 通道关键字

如果存在 master 通道关键字,则应将其删除。

不再需要配置 SMS 通道。

SMPP_SERVER

设置为指向 SMS Gateway Server 的 IP 地址的主机名。如果使用 SMPP 中继的 LISTEN_INTERFACE_ADDRESS 选项(请参见配置选项),则请确保使用与指定的网络接口地址相关联的主机名或 IP 地址。

SMPP_PORT

使用与 LISTEN_PORT 设置所用的端口相同的 TCP 端口为例,说明 SMPP 中继(请参见 SMPP 中继)。

DEFAULT_SOURCE_ADDRESS

拾取一个值,然后配置远程 SMSC,以将此地址路由回 Gateway SMPP 服务器。在 SMS 通道的选项文件中,请使用此选项指定选定的值。

GATEWAY_PROFILE

设置为与网关配置文件的名称相匹配。请参见网关配置文件

USE_HEADER_FROM

设置为 0

所有其他通道配置都应按照 SMS 通道文档中的介绍执行。

设置双向 SMS 路由选择中所述,需要对远程 SMSC 进行配置,以便如 DEFAULT_SOURCE_ADDRESS 通道选项中所定义的那样,使用 LISTEN_PORT 选项所指定的 TCP 端口号将 SMS 地址路由到网关的 SMP 服务器。(有关如何指定 LISTEN_PORT 的说明,请参见 SMPP 服务器。)

请注意,多个 SMS 通道可使用同一 SMS 中继。同样,只需要一个 SMPP 服务器或网关配置文件就可为多个 SMS 通道处理 SMS 多个回复和通知。存在对多个中继、服务器和网关配置文件进行配置的功能以通过配置选项影响不同的用法特征。


SMS Gateway Server 操作原理

通过使移动设备始发 SMS 消息与正确的电子邮件地址相匹配的机制,SMS Gateway Server 使得双向 SMS 更易于实现。本节包含以下 SMS Gateway Server 主题:

SMS Gateway Server 功能

SMS Gateway Server 同时作为 SMPP 中继和服务器运行。还可将其配置为每种功能有多个“实例”。例如,可以将其配置为拥有三种不同的 SMPP 中继,每种中继侦听不同的 TCP 端口或网络接口,并中继到不同的远程 SMPP 服务器。与此类似,还可以将其配置为拥有四个不同的 SMPP 服务器,每个服务器侦听不同组合的 TCP 端口和网络接口。

可以将 SMS Gateway Server 配置为拥有零个或多个向电子邮件地址发送 SMS 消息的网关配置文件。每个网关配置文件说明了哪个目标 SMS 地址与该配置文件相匹配,说明了如何从 SMS 消息中提取目标电子邮件地址,并说明了 SMS 到电子邮件转换过程的各种特征。通过 SMPP 中继或服务器递交到 SMS Gateway Server 的每条 SMS 消息都将与各个配置文件相比较。如果找到匹配项,则消息将被路由到电子邮件。

最后,网关配置文件还说明如何处理远程 SMSC 为响应以前的电子邮件到移动设备的消息而返回的通知消息。

SMPP 中继和服务器性能

如果作为 SMPP 中继,SMS Gateway Server 应尝试尽可能地透明,就是将来自本地 SMPP 客户机的全部请求中继到远程 SMPP 服务器,然后再中继回远程服务器的响应。但有两种例外情况:

请注意,一般可对 SMS Gateway Server 进行配置,以便其所生成的唯一 SMS 源地址与网关配置文件之一相匹配。


SMS Gateway Server 的 SMPP 中继仅用于与限定 Sun Java System SMPP 客户机(即 Sun Java System Messaging Server 的 SMS 通道)配合使用。它不用于与任意 SMPP 客户机配合使用。


以下三种情况下,如果作为 SMPP 服务器,SMS Gateway Server 都将 SMS 消息定向到电子邮件:

所有其他 SMS 消息都将被 SMPP 服务器拒绝。

远程 SMPP 到 Gateway SMPP 的通信

远程 SMPP 客户机使用协议数据单元 (PDU) 与 Gateway SMPP 服务器进行通信。远程 SMPP 客户机发布 Gateway SMPP 服务器所响应的请求 PDU。Gateway SMPP 服务器同步运行。它在处理来自已连接的远程 SMPP 客户机的下一个请求 PDU 之前,先完成对一个请求 PDU 的响应。

下文的表 D-19 列出了 Gateway SMPP Server 所处理的请求 PDU,并指定了 Gateway SMPP 服务器的响应。

表 D-19 SMPP 服务器协议数据单元

请求 PDU

SMPP 服务器响应

BIND_TRANSMITTER
BIND_TRANSCEIVER
UNBIND

与相应的响应 PDU 相对应。将忽略认证证书。

OUTBIND

Gateway SMPP 服务器发送回一个 BIND_RECEIVER PDU。将忽略递交的认证证书。

SUBMIT_SM
DATA_SM

尝试将目标 SMS 地址与唯一的 SMS 源地址或网关配置文件的 SELECT_RE 设置相匹配。如果都不匹配,PDU 将被拒绝,并返回 ESME_RINVDSTADR 错误。

DELIVER_SM

尝试在历史记录中查找目标 SMS 地址或已收到的消息 ID。如果都不匹配,则返回错误 ESME_RINVMSGID

BIND_RECEIVER

不支持。返回 GENERIC_NAK PDU,并返回 ESME_RINVCMDID 错误。

SUBMIT_MULTI

不支持。返回 GENERIC_NAK PDU,并返回 ESME_RINVCMDID 错误。

REPLACE_SM

不支持。返回 GENERIC_NAK PDU,并返回 ESME_RINVCMDID 错误。

CANCEL_SM

不支持。返回 GENERIC_NAK PDU,并返回 ESME_RINVCMDID 错误。

QUERY_SM

不支持。返回 GENERIC_NAK PDU,并返回 ESME_RINVCMDID 错误。

QUERY_LAST_MSGS

不支持。返回 GENERIC_NAK PDU,并返回 ESME_RINVCMDID 错误。

QUERY_MSG_DETAILS

不支持。返回 GENERIC_NAK PDU,并返回 ESME_RINVCMDID 错误。

ENQUIRE_LINK

返回 ENQUIRE_LINK_RESP PDU。

ALERT_NOTIFICATION

已接受但被忽略。

SMS 回复和通知的处理

SMS Gateway Server 保留通过其 SMPP 中继转发的每条 SMS 消息的历史记录。之所以需要使用历史数据,是因为这样的事实:在向 SMS 提交电子邮件消息时,通常不可能将消息发起人的电子邮件地址转换成 SMS 源地址。由于任何 SMS 回复和通知都将被定向到该 SMS 源地址,所以往往会出现问题。使用已中继消息中自动生成的唯一 SMS 源地址可以解决这一问题。然后,通过对远程 SMSC 进行配置,就可把这些 SMS 源地址路由回 Gateway SMPP 服务器。

历史数据将表示为消息 ID 和已生成的唯一 SMS 源地址的内存中散列表。这些信息还与相关联的电子邮件始发数据一起保存在磁盘上。基于磁盘的存储是一系列文件,每个文件表示长 HASH_FILE_ROLLOVER_PERIOD 秒的事务(缺省时间为 30 分钟)。每个文件将保留 RECORD_LIFETIME 秒钟(缺省时间为 3 天)。有关历史数据的内存中和盘上资源要求的讨论,请参见 Sun Java System Messaging Server Deployment Guide

每条记录由三个部分组成:

SMS 回复的路由选择过程

Gateway SMPP 中继和服务器使用历史记录处理 SMS 回复、通知和移动设备始发的消息。当某条 SMS 消息递交到 SMPP 中继或服务器时,将进行以下路由选择过程:

  1. 将 SMS 目标地址与历史记录相比较,以查看是否有由 SMPP 中继以前生成的、与之匹配的唯一 SMS 源地址。如果找到匹配地址,请参见步骤 6
  2. 如果没有匹配地址,而该消息是一个 SMS 通知 (SMPP DELIVER_SM PDU),则会将接收到的消息 ID(如果有)与历史记录相比较。如果找到匹配地址,请转至步骤 8。[实际上,SMS Gateway Server 允许将这些地址递交到 SMPP 中继或 SMPP 服务器。]
  3. 如果没有匹配地址,则会将目标 SMS 地址与每个已配置网关配置文件的 SELECT_RE 选项表达式相比较。如果找到匹配地址,则请转至步骤 9
  4. 如果没有匹配地址并且 SMS 消息被递交到 Gateway SMPP 中继,则该消息就会被中继到远程 SMPP 服务器。
  5. 如果没有匹配地址并且 SMS 消息被递交到 Gateway SMPP 服务器,则会确定该消息为无效消息,并在 SMPP 响应 PDU 中返回一个错误响应。对于电子邮件到 SMS,最终将生成一个非传送通知 (NDN)。
  6. 如果找到匹配的唯一一个 SMS 源地址,则会进一步检查该 SMS 消息,以查看其是否是一个回复或一条通知消息。要成为通知消息,该消息就必须是一个带有已收到消息 ID 的 SUBMIT_SM PDU。否则,应将其看作是一个回复。
  7. 如果其为回复,则会使用历史记录中的始发电子邮件信息将该 SMS 消息转换成电子邮件消息。
  8. 如果其为通知,则会根据 RFC 1892-1894 将该 SMS 消息转换成电子邮件传送状态通知 (DSN)。请注意,将接受原始电子邮件消息的 ESMTP NOTIFY 标志 (RFC 1891)(例如,如果 SMS 消息是“成功的”DSN 而原始电子邮件消息仅需要“失败的”通知,则该 SMS 通知就会被放弃)。
  9. 如果目标 SMS 地址与已配置网关配置文件中的 SELECT_RE 选项相匹配,则该 SMS 消息就会被看作是一条移动设备发起的消息,并按照该网关配置文件的 PARSE_RE_n 规则将其转换回电子邮件消息。如果转换失败,则该 SMS 消息将无效并返回一个错误响应。


SMS Gateway Server 配置

本节介绍如何为电子邮件到移动设备和移动设备到电子邮件这两项功能设置 SMS Gateway Server。本节包含以下主题:

设置双向 SMS 路由选择

在 MTA 和 SMSC 之间设置双向电子邮件和 SMS 路由选择所推荐的方法有三步过程:

设置 SMS 地址前缀

由 MTA SMS 通道生成的源 SMS 地址应被设置为与所选定的 SMS 地址前缀相匹配。通过设置以下几项即可完成此操作:

设置网关配置文件

然后,应设置 SMS Gateway Server 的网关配置文件,以使所有已中继的 SMS 源地址都是唯一的地址。此设置是缺省设置,但可通过指定网关配置文件选项 MAKE_SOURCE_ADDRESSES_UNIQUE=1 来进行显式设置。这样将得到如下格式的已中继 SMS 源地址:

prefixnnnnnnnnnn

其中 nnnnnnnnnn 是一个唯一的十位数十进制数字。

配置 SMSC

最后,应将 SMSC 配置为将所有与前缀(或仅为前缀,或为前缀加一个十位数数字)相匹配的 SMS 目标地址路由到 SMS Gateway Server 的 SMPP 服务器。这种路由选择的正则表达式将类似于:

prefix([0-9]{10,10}){0,1}

其中 prefixDEFAULT_SOURCE_ADDRESS 的值,[0-9] 指定可用于十位数数字的值,{10, 10} 指定将有十位数的最小和最大值,而 {0, 1} 指定可有零或一个十位数数字。

启用和禁用 SMS Gateway Server

启动和停止 SMS Gateway Server

启用了 SMS Gateway Server 后,可使用以下命令启动和停止它:

# start-msg sms

# stop-msg sms

SMS Gateway Server 配置文件

为了运行,SMS Gateway Server 需要一个配置文件。该配置文件是一个使用 UTF-8 记录的统一字符编码文本文件,该文件可以是一个 ASCII 文本文件。该文件的名称必须为:

installation-directory/config/sms_gateway.cnf

文件中的各选项设置的格式如下:

option-name=option-value

作为选项组一部分的选项以如下格式显示:

[group-type=group-name]
option-name-1=option-value-1
option-name-2=option-value-2
...
option-name-n=option-value-n

配置网关服务器上的电子邮件到移动设备

要实现双向 SMS 的电子邮件到移动设备部分,您必须完成以下配置:

网关配置文件

要配置电子邮件到移动设备网关配置文件,请执行以下步骤:

  1. 向 SMS Gateway Server 配置文件添加一个网关配置文件。
  2. 要添加选项组,请使用以下格式:

    [GATEWAY_PROFILE=profile_name]
    option-name-1=option-value-1
    option-name-2=option-value-2a
    ...
    option-name-n=option-value-n

    网关配置文件名的长度(前述格式的 profile_name)不得超过 11 个字节。文件名必须与 SMS 通道选项文件中的 GATEWAY_PROFILE 通道选项同名。文件名不区分大小写。有关有效通道选项的列表,请参见可用选项

  3. 设置网关配置文件选项(例如 SMSC_DEFAULT_CHARSET),以符合远程 SMSC 的特征。
  4. 设置其他网关配置文件选项,以符合 SMS 通道的电子邮件特征。
  5. 有关网关配置文件选项的完整说明,请参见网关配置文件选项

  6. 设置 CHANNEL 选项。
  7. 将其值设置为 MTA SMS 通道的名称。

    通过网关向电子邮件发送通知后,所得的电子邮件消息将被排入到使用该通道名称的 MTA 中。

SMPP 中继

要配置 SMPP 中继,请完成以下步骤:

  1. 向 SMS Gateway Server 的配置文件中添加一个 SMPP 中继实例(选项组)。
  2. 要添加选项组,请使用以下格式:

    [SMPP_RELAY=relay_name]
    option-name-1=option-value-1
    option-name-2=option-value-2
    ...
    option-name-n=option-value-n

    任何名称都可用作中继的名称。重要的是,该中继名不得用于同一配置文件中的任何其他 SMPP 中继实例。

  3. 设置 LISTEN_PORT 选项。
  4. 用于 SMS 通道的 SMPP_PORT 选项的值必须与用于中继的 LISTEN_PORT 选项的值相匹配。对于 LISTEN_PORT,请选择一个未被任何其他 SMPP 中继或服务器实例所使用,也未被同一计算机上运行的任何其他服务器所使用的 TCP 端口号。

  5. 设置 SERVER_HOST 选项。
  6. 该中继的 SERVER_HOST 选项应为远程 SMSC 的 SMPP 服务器给定主机名。可以使用 IP 地址代替主机名。

  7. 设置 SERVER_PORT 选项。
  8. 中继的 SERVER_PORT 选项应为远程 SMSC 的 SMPP 服务器给定 TCP 端口。

有关所有 SMPP 中继选项的完整说明,请参见 SMPP 中继选项

SMPP 服务器

要配置 SMPP 服务器,请完成以下步骤:

  1. 向 SMS Gateway Server 的配置文件中添加一个 SMPP 服务器实例(选项组)。
  2. 要添加选项组,请使用以下格式:

    [SMPP_SERVER=server_name]
    option-name-1=option-value-1
    option-name-2=option-value-2
    ...
    option-name-n=option-value-n

    任何名称都可用作服务器的名称。重要的是,该服务器名不得用于同一配置文件中的任何其他 SMPP 服务器实例。

  3. 设置 LISTEN_PORT 选项。
  4. 选择一个任何其他服务器或中继实例没有使用的 TCP 端口号。此外,该端口号也未被同一计算机上的任何其他任何服务器所使用。

    需要将远程 SMSC 配置为通过 SMPP 将通知路由到使用此 TCP 端口的 SMS Gateway Server 系统。

有关所有 SMPP 服务器选项的完整说明,请参见 SMPP 服务器选项

配置移动设备到电子邮件的操作

要配置移动设备到电子邮件功能,则必须执行两个配置步骤:

请注意,多个网关配置文件可使用同一个 SMPP 服务器实例。实际上,同一个 SMPP 服务器实例可同时用于电子邮件到移动设备和移动设备到电子邮件应用程序。

配置移动设备到电子邮件网关配置文件

对于由移动设备始发的消息,网关配置文件将提供两类关键信息:如何标识用于该配置文件的 SMS 消息和如何将这些消息转换成电子邮件消息。请注意,此配置文件可以与用于电子邮件到移动设备的配置文件相同,只不过增加了 SELECT_RE 选项。

要配置网关配置文件,请执行以下步骤:

  1. 向 SMS Gateway Server 的配置文件添加一个网关配置文件(选项组)。
  2. 要添加选项组,请使用以下格式:

    [GATEWAY_PROFILE=profile_name]
    option-name-1=option-value-1
    option-name-2=option-value-2
    ...
    option-name-n=option-value-n

    配置文件的名称可使用长为 11 个字符或少于 11 个字符的任何名称。重要的是,它不能是已用于同一个配置文件中另一个网关配置文件的文件名。

  3. 设置 SELECT_RE 选项,必须为每个网关配置文件指定该选项。
  4. 此选项的值是一个 ASCII 正则表达式,可用于比较 SMS 目标地址。如果 SMS 目标地址与该正则表达式相匹配,则会通过网关将 SMS 消息发送到使用匹配配置文件所述的特征的电子邮件中。

    注意可以配置具有 SMS 地址的重叠集的多个网关配置文件(例如,与地址 000 相匹配的配置文件和与任何其他三位数地址相匹配的其他配置文件)是重要的。但是,当 SMS 消息仅传送给一个网关配置文件(第一个匹配文件)时,应避免执行此操作。而且,未定义比较的顺序。

  5. 设置 CHANNEL 选项。
  6. 其值应是 MTA 的 SMS 通道名。

有关所有移动设备始发选项的完整说明,请参见网关配置文件选项

配置移动设备到电子邮件 SMPP 服务器

添加的 SMPP 服务器与为电子邮件到移动设备添加的 SMPP 服务器相同(请参见 SMPP 服务器)。

需要将远程 SMSC 配置为将 SMS 通信路由到 Gateway SMPP 服务器。要执行此操作,SMSC 用于路由移动设备到电子邮件通信的 SMS 目标地址应是为网关配置文件选项 SELECT_RE 设置的值。

例如,如果要将 SMS 地址 000 用于移动设备到电子邮件通信,就需要配置 SMSC,以便将 SMS 目标地址 000 的通信路由到 Gateway SMPP 服务器。网关配置文件应使用选项设置 SELECT_RE=000。

配置选项

本节将详细说明 SMS Gateway Server 配置文件选项。下文各表列出了全部可用的配置选项以及各选项的简要说明。全局选项、SMPP 中继选项、SMPP 服务器选项和 SMS Gateway Server 配置文件选项各有一个表。

在以下小节中,给出了所有可用配置选项的完整说明。这些小节包括:

全局选项

SMS Gateway Server 目前有三类全局选项:

在指定任何选项组之前,必须将所有全局选项指定于配置文件的顶部。表 D-20 列出了所有全局配置选项。

表 D-20 全局选项 

选项

缺省值

说明

DEBUG

6

选择已生成的诊断输出的类型

HISTORY_FILE_DIRECTORY

 

历史数据文件的绝对目录路径

HISTORY_FILE_MODE

0770

历史文件的权限

HISTORY_FILE_ROLLOVER_PERIOD

30 分钟

向同一历史数据文件写入数据的最长时间

LISTEN_CONNECTION_MAX

 

所有 SMPP 中继和服务器实例上并行外来连接的最大数目

RECORD_LIFETIME

3 天

历史数据归档文件中记录的有效期

THREAD_COUNT_INITIAL

10 个线程

工作人员线程的初始数目

THREAD_COUNT_MAXIMUM

50 个线程

工作人员线程的最大数目

THREAD_STACK_SIZE

64 Kb

各工作人员线程的堆栈大小

线程调整选项

各外来 TCP 连接代表一个 SMPP 会话。会话处理由线程池中的工作人员线程处理。当会话处理需要等待 I/O 请求的完成时,工作人员线程停止会话并给出其他要执行的工作。I/O 请求完成后,池中的可用工作人员线程就会恢复会话。

以下选项可用于调整此工作人员线程进程池: THREAD_COUNT_INITIAL, THREAD_COUNT_MAXIMUM, THREAD_STACK_SIZE.

THREAD_COUNT_INITIAL

(整数,> 0)为工作人员线程池初始创建的线程数目。该数目不包括用于管理内存中的历史数据的专用线程(2 个线程),也不包括用于侦听外来 TCP 连接的专用线程(SMS Gateway Server 所侦听的每个 TCP 端口/接口地址对各有一个线程)。THREAD_COUNT_INITIAL 的缺省值为 10 个线程。

THREAD_COUNT_MAXIMUM

(整数,>= THREAD_COUNT_INITIAL工作人员线程池中允许的线程的最大数目。缺省值为 50 个线程。

THREAD_STACK_SIZE

(整数,> 0)工作人员线程池中各工作人员线程的堆栈大小(字节)。缺省值为 65536 个字节 (64 Kb)。

历史数据调整

如果一条 SMS 消息被中继,由接收的远程 SMPP 服务器生成的消息 ID 将保存在一个内存中的散列表中。还保存了该消息 ID 以及有关原始电子邮件消息的信息。如果该消息 ID 以后要被某 SMS 通知所引用,此信息就可以被检索出来。然后可以使用检索出来的信息将 SMS 通知发送给相应的电子邮件收件人。

内存中的散列表可通过专用线程返回到磁盘中。所得到的磁盘文件被称为“历史文件”。这些历史文件有两个用途:用于以非易失性形式保存在重新启动 SMS Gateway Server 后恢复内存中散列表所需的数据,并用于通过在磁盘上保存可能过长的数据来节省虚拟内存。每个历史文件的数据写入操作只能持续 HASH_FILE_ROLLOVER_PERIOD 秒,超过这个时间后,历史文件就会关闭并创建一个新的历史文件。如果历史文件超过 RECORD_LIFETIME 秒的周期,就会将其从磁盘中删除。

以下选项用于调整历史文件:HISTORY_FILE_DIRECTORY, HISTORY_FILE_MODE, HISTORY_FILE_ROLLOVER_PERIOD, RECORD_LIFETIME.

HISTORY_FILE_DIRECTORY

(字符串,绝对目录路径)用于将历史文件写入到的目录的绝对路径。如果路径不存在,将新建此目录路径。此选项的缺省值为:

msg_svr_base/data/sms_gateway_cache/

所使用的目录应位于一个合理的快速磁盘系统中,并应有足够的可用空间用于预期的存储;有关存储规划的信息,请参见 SMS Gateway Server 存储要求。鼓励站点将此选项更改为更合适的值。

HISTORY_FILE_MODE

(整数,八进制值)与历史文件相关的文件权限。缺省情况下,将使用值 0770(八进制)。

HISTORY_FILE_ROLLOVER_PERIOD

(整数,秒)当前历史文件将关闭,并且每隔 HASH_FILE_ROLLOVER_PERIOD 秒创建一个新的历史文件。缺省情况下,使用的秒数值为 1800 秒(30 分钟)。

RECORD_LIFETIME

(整数,秒数 > 0)历史记录以秒为单位的有效期。超过这个有效期的记录将从内存中清除;超过这个有效期的历史文件则将从磁盘上删除。缺省情况下,使用的值为 259,200 秒(3 天)。保存在内中的记录将由专用来管理内存中数据的线程彻底清除。这些清除操作每 HASH_FILE_ROLLOVER_PERIOD 秒执行一次。磁盘上的文件在必须打开新的历史记录时被清除。

其他

另外还有两个选项:DEBUGLISTEN_CONNECTION_MAX

DEBUG

(整数,位掩码)启用调试输出。缺省值为 6,表示选择警告和错误消息。

LISTEN_CONNECTION_MAX

(整数,>= 0)所有 SMPP 中继和服务器实例上允许的并行外来 TCP 连接的最大数目。值 0(零)指示对连接数目没有全局限制。但是,给定中继或服务器实例可能会给每个中继或服务器强加限制。

SMPP 中继选项

SMS Gateway Server 可以有其 SMPP 中继的多个实例,每个实例都有不同的特征,首要的特征将是所侦听的 TCP 端口和接口。为 SMPP 中继所侦听的每个网络接口和 TCP 接口对进行不同放置时,可能归因于不同的特征。将使用本节中所述的选项来指定这些特征。

每个实例都应放置在以下格式的选项组中:

[SMPP_RELAY=relay-name]
option-name-1=option-value-1
option-name-2=option-value-2
...
option-name-n=option-value-n

字符串 relay-name 仅用于将此实例与其他实例区分开。

表 D-22 列出了 SMPP 中继的配置选项。

表 D-22 SMPP 中继选项 

选项

缺省值

说明

LISTEN_BACKLOG

255

外来 SMPP 客户机连接的连接待办事项

LISTEN_CONNECTION_MAX

 

并行外来连接的最大数目

LISTEN_INTERFACE_ADDRESS

 

外来 SMPP 客户机连接的网络接口

LISTEN_PORT

 

外来 SMPP 客户机连接的 TCP 端口

LISTEN_RECEIVE_TIMEOUT

600 秒

读取 SMPP 的外来连接超时

LISTEN_TRANSMIT_TIMEOUT

120 秒

写入 SMPP 客户机的外来连接超时

MAKE_SOURCE_ADDRESSES_UNIQUE

1

使已中继 SMS 源地址成为唯一的地址并能作为回复地址

SERVER_HOST

 

要中继到的 SMPP 服务器的主机名或 IP 地址

SERVER_PORT

 

要中继到的 SMPP 服务器的 TCP 端口

SERVER_RECEIVE_TIMEOUT

600 秒

读取外发 SMPP 服务器连接超时

SERVER_TRANSMIT_TIMEOUT

120 秒

写入外发 SMPP 服务器连接超时

LISTEN_BACKLOG

整数,范围在 [0,255] 之间)TCP 堆栈允许外来 SMPP 客户机连接拥有的连接待办事项。缺省值为 255。

LISTEN_CONNECTION_MAX

((整数,>= 0)允许该 SMPP 中继实例拥有的并行外来 TCP 连接的最大数目。请注意,如果该值超出全局 LISTEN_CONNECTION_MAX 的设置,将会忽略该值。

LISTEN_INTERFACE_ADDRESS

字符串,“INADDR_ANY”或点分十进制的 IP 地址)外来 SMPP 客户机连接要侦听的网络接口的 IP 地址。可以是字符串“INADDR_ANY”(全部可用的接口)或是一个点分十进制形式的 IP 地址。(例如 193.168.100.1)。缺省值为“INADDR_ANY”。成簇的 HA 配置将需要将此值设置为对应于 HA 逻辑 IP 地址。

LISTEN_PORT

(整数,TCP 端口号)为接受外来 SMPP 客户机连接而绑定的 TCP 端口。必须指定此选项;此选项没有缺省值。还请注意,此服务不赋予 Internet 指定的数字授权 (IANA)。

LISTEN_RECEIVE_TIMEOUT

(整数,秒数 > 0)等待从 SMPP 客户机读取数据时所允许的超时。缺省值为 600 秒(10 分钟)。

LISTEN_TRANSMIT_TIMEOUT

(整数,秒数 > 0) 向 SMPP 客户机发送数据时所允许的超时。缺省值为 120 秒(2 分钟)。

MAKE_SOURCE_ADDRESSES_UNIQUE

(0 或 1)缺省情况下,SMPP 中继将向每个 SMS 源地址附加一个唯一的十位数字符串。然后,所得的 SMS 源地址将与其他历史数据一起保存。该结果则是 SMS 用户可以回复到的唯一 SMS 地址。如果用作 SMS 目标地址,SMPP 服务器将检测此地址,然后将 SMS 消息发送给正确的电子邮件创始者。

要禁止生成这种唯一的 SMS 源地址(对于单向 SMS),请将此选项的值指定为 0(零)。

SERVER_HOST

(字符串,TCP 主机名或点分十进制 IP 地址)要将 SMPP 客户机通信中继到的 SMPP 服务器。可以指定一个主机名或 IP 地址。必须指定此选项;此选项没有缺省值。

SERVER_PORT

(整数,TCP 端口号)要中继到的远程 SMPP 服务器的 TCP 端口。必须指定此选项;此选项没有缺省值。没有为此服务指定的 IANA;不要与为 SNPP 指定的 IANA 相混淆。

SERVER_RECEIVE_TIMEOUT

(整数,秒数 > 0)等待从 SMPP 服务器读取数据时所允许的超时。缺省值为 600 秒(10 分钟)。

SERVER_TRANSMIT_TIMEOUT

(整数,秒数 > 0)向 SMPP 客户机发送数据时所允许的超时。缺省值为 120 秒(2 分钟)。

SMPP 服务器选项

SMS Gateway Server 可以有其 SMPP 服务器的多个实例,每个实例都有不同的特征,首要的特征将是所侦听的 TCP 端口和接口。为 SMPP 服务器所侦听的每个网络接口和 TCP 接口对进行不同放置时,可能归因于不同的特征。将使用本节中所述的选项来指定这些特征。

每个实例都应放置在以下格式的选项组中:

[SMPP_SERVER=server-name]
option-value-1=option-value-1
option-value-2=option-value-2
...
option-name-n=option-value-n

字符串 server-name 仅用于将此实例同其他实例区分开。

表 D-23 列出了 SMPP 服务器的配置选项。

表 D-23 SMPP 服务器选项 

选项

缺省值

说明

LISTEN_BACKLOG

255

外来 SMPP 服务器连接的连接待办事项

LISTEN_CONNECTION_MAX

 

并行外来连接的最大数目

LISTEN_INTERFACE_ADDRESS

 

外来 SMPP 服务器连接的网络接口

LISTEN_PORT

 

外来 SMPP 服务器连接的 TCP 端口

LISTEN_RECEIVE_TIMEOUT

600 秒

外来 SMPP 服务器连接的读取超时

LISTEN_TRANSMIT_TIMEOUT

120 秒

外来 SMPP 服务器连接的写入超时

LISTEN_BACKLOG

整数,范围在 [0,255] 之间)TCP 堆栈允许外来 SMPP 客户机连接拥有的连接待办事项。缺省值为 255。

LISTEN_CONNECTION_MAX

(整数 >= 0)允许该 SMPP 服务器实例拥有的并行外来 TCP 连接的最大数目。请注意,如果该值超出全局 LISTEN_CONNECTION_MAX 的设置,将会忽略该值。

LISTEN_INTERFACE_ADDRESS

(字符串“INADDR_ANY”或点分十进制 IP 地址)外来 SMPP 客户机连接要侦听的网络接口的 IP 地址。可以是字符串“INADDR_ANY”(全部可用的接口)或是一个点分十进制形式的 IP 地址。(例如 193.168.100.1。)缺省值为“INADDR_ANY”。

LISTEN_PORT

(整数,TCP 端口号)为接受外来 SMPP 客户机连接而绑定的 TCP 端口。必须指定此选项;此选项没有缺省值。请注意,没有为此服务指定的 IANA。

LISTEN_RECEIVE_TIMEOUT

(整数,秒数 > 0)等待从 SMPP 客户机读取数据时所允许的超时。缺省值为 600 秒(10 分钟)。

LISTEN_TRANSMIT_TIMEOUT

(整数,秒数 > 0) 向 SMPP 客户机发送数据时所允许的超时。缺省值为 120 秒(2 分钟)。

网关配置文件选项

可能没有或有多个网关配置文件。在 SMS Gateway Sever 的配置文件中,每个网关配置文件都按以下格式在选项组中进行声明:

[GATEWAY_PROFILE=profile-name]
option-name-1=option-value-1
option-name-2=option-value-2
...
option-name-n=option-value-n

字符串 profile-name 仅用于将配置文件同其他始发配置文件区分开。

表 D-24 列出了 SMS Gateway Server 配置文件选项。

表 D-24 SMS Gateway Server 配置文件选项 

选项

缺省值

说明

CHANNEL

sms

用于对消息进行排入的通道

EMAIL_BODY_CHARSET

US-ASCII

电子邮件消息主体字符集

EMAIL_HEADER_CHARSET

US-ASCII

电子邮件消息标题字符集

FROM_DOMAIN

 

用于将电子邮件路由回 SMS 的域名

PARSE_RE_0, PARSE_RE_1, ..., PARSE_RE_9

 

用于解析 SMS 消息文本的正则表达式

PROFILE

GSM

在以下系统中运行的 SMS 配置文件:GSM、TDMA 或 CDMA

SELECT_RE

 

用于选择插件的正则表达式

SMSC_DEFAULT_CHARSET

US-ASCII

SMSC 的缺省字符集

USE_SMS_PRIORITY

0

Gateway SMS 的电子邮件优先级标志

USE_SMS_PRIVACY

0

Gateway SMS 的电子邮件保密性指示符

CHANNEL

(字符串,1 至 40 个字符)用于对电子邮件消息进行排入的 MTA 通道的名称。如果未指定,则假设为“sms”。指定的通道必须定义在 MTA 的配置中。

EMAIL_BODY_CHARSET

(字符串,字符集名称)SMS 文本在插入到电子邮件消息的主体之前要转换为的字符集。如果有必要,将对已转换的文本进行 MIME 编码。缺省值为 US-ASCII。如果 SMS 消息包含字符集中所没有的符号,这些符号将被转换为助记字符,转换后的字符对收件人可能有意义,也可能没有。

MTA 认可的字符集的列表可在以下文件中找到:

installation-directory/config/charsets.txt

EMAIL_HEADER_CHARSET

(字符串,字符集名称)将 SMS 文本插入到 RFC 822 Subject: 标题行之前,SMS 文本要转换为的字符集。如果有必要,将对已转换的字符串进行 MIME 编码。缺省值为 US-ASCII。如果 SMS 消息包含字符集中所没有的符号,这些符号将被转换为助记字符,转换后的字符对收件人可能有也可能没有意义

FROM_DOMAIN

(字符串,IP 主机名,1 至 64 个字符)在为电子邮件消息构造信封 From: 地址时要附加到 SMS 源地址中的域名。指定的主机名应是能将电子邮件路由回 SMS 的正确名称。(例如,与 MTA SMS 通道相关联的主机名。)如果未指定,则将使用利用 CHANNEL 选项指定的通道的正式主机名。

PARSE_RE_0, PARSE_RE_1, ..., PARSE_RE_9

(字符串,UTF-8 正则表达式)对于电子邮件由移动设备始发的情况,网关配置文件需要从 SMS 消息的文本中提取目标电子邮件地址。此操作是通过一个或多个 POSIX 兼容的正则表达式 (RE) 来实现的。每个正则表达式都将计算 SMS 消息的文本,直到找到一个生成目标电子邮件地址的匹配项或正规表达式的列表用完为止。


PARSE_RE_*ROUTE_TO 选项应相互独立使用。在同一网关配置文件中同时使用这两个选项将导致配置错误。


每个正则表达式都必须是 POSIX 兼容的,而且必须使用 UTF-8 字符集编码。正则表达式必须以字符串 0 的形式输出目标地址。它们可以随意输出要在 Subject: 标题行中用作字符串 1 的文本,以及要在消息主体中用作字符串 2 的文本。任何不被正则表达式所“消耗的”文本还将用在消息主体中,其后跟随用字符串 2 的任何文本输出。

应以 PARSE_RE_0、PARSE_RE_1、... 至多到 PARSE_RE_9 的顺序尝试使用正则表达式。如果没有指定正则表达式,则将使用以下缺省正则表达式:

[ \t]*([^\( ]*)[ \t]*(?:\(([^\)]*\))?[ \t]*(.*)

这个缺省正则表达式可分为以下几个成分:

[ \t]*

忽略前导空格字符(SPACETAB)。

([^\( ]*)

目标电子邮件地址。这是首先报告的字符串。

[ \t]*

忽略空格字符。

(?:\(([^\)]*)$1\))?

包含在括号中的可选主题文本。这是第二次报告的字符串。前导 ?: 会使外围括号不报告字符串。它们只用于将其内容一起编组到一个后缀为 ? 的单一 RE 中。后缀 ? 使此 RE 组件仅匹配零或一次,等效于表达式 {0,1}。

[ \t]*

忽略空格字符。

(.*)

消息主体的其余文本。这是第三次报告的字符串。

例如,对于上述正则表达式,SMS 消息样例:

dan@sesta.com(Testing)This is a test

将产生电子邮件消息:

To: dan@sesta.com
Subject: Testing

This is a test

另一个示例,SMS 消息:

sue@sesta.com This is another test

将产生:

To: sue@sesta.com

This is another test

请注意,在用这些正则表达式进行计算之前,SMS 消息将被转换为统一字符编码的 UTF-16 编码。然后,已转换的文本将用先前已从 UTF-8 转换为 UTF-16 的正则表达式进行计算。然后,计算结果将转换为用于目标电子邮件地址的 US-ASCII、用于 Subject:文本的 EMAIL_HEADER_CHARSET(如果有)以及用于邮件主体的 EMAIL_BODY_CHARSET(如果有)。

PROFILE

(字符串,“GSM”、“TDMA”或“CDMA”)要采用的 SMS 配置文件。目前此信息只用于将 SMS 优先级标志映射到 RFC 822 Priority: 标题行标题行。所以,当 USE_SMS_PRIORITY=0(这是此选项的缺省设置)时,此选项将不会有影响。

SELECT_RE

(字符串,US-ASCII 正则表达式)要与每个 SMS 消息的 SMS 目标地址进行比较的 US-ASCII POSIX 兼容正则表达式。如果某条 SMS 消息的目标地址与此 RE 相匹配,则该 SMS 消息将通过网关发送到与此网关配置文件相一致的电子邮件中。

请注意,由于 SMS 消息的目标地址是以 US-ASCII 字符集指定的,所以此正则表达式还必须用 US-ASCII 表示。

SMSC_DEFAULT_CHARSET

(字符串,字符集名称)远程 SMSC 所使用的缺省字符集的名称。此选项的两个通用选项为 US-ASCII 和 UTF-16-BE (USC2)。如果未指定,则假设为 US-ASCII。

USE_SMS_PRIORITY

(整数,0 或 1)缺省情况下(当 USE_SMS_PRIORITY=0 时),SMS 消息中的优先级标志将被忽略并且不与电子邮件消息一起发送。要与电子邮件一起传送优先级标志,请指定 USE_SMS_PRIORITY=1。当与电子邮件一起传送时,从 SMS 到电子邮件的映射如表 D-25 所示。

表 D-25 从 SMS 到电子邮件的优先级标志映射

SMS 配置文件

SMS 优先级标志

电子邮件 Priority: 标题行

GSM

0(非优先级)

123(优先级)

无标题行(表示 Normal

Urgent

TDMA

0(大量)

1(正常)

2(急)

3(特急)

不急

无标题行(表示 Normal

Urgent

Urgent

CDMA

0(正常)

1(交互)

2(急)

3(紧急)

无标题行(表示 Normal

Urgent

Urgent

Urgent

请注意,电子邮件 Priority: 标题行的值包括 NonurgentNormalUrgent

USE_SMS_PRIVACY

(整数,0 或 1)缺省情况下(当 USE_SMS_PRIVACY=0 时),SMS 保密性指示被忽略并且不与电子邮件消息一起发送。要将此消息与电子邮件一起传送,请指定 USE_SMS_PRIVACY=1。当与电子邮件一起传送时,从 SMS 到电子邮件的映射如表 D-26 所示。

表 D-26 从 SMS 到电子邮件的保密性标志映射

SMS 保密性标志

电子邮件 Sensitivity: 标题行

0(无限制)

无标题行

1(受限)

Personal

2(保密)

Private

3(机密)

Company-confidential

请注意,电子邮件 Sensitivity: 标题行的值包括 PersonalPrivateCompany-confidential

双向 SMS 配置示例

性能假设

在方便解释此实例,假设需要以下性能:

为了实现此性能,需要进行如下假设和指定

进一步的假设和指定

SMS 通道配置

要实现上述性能,可以在 imta.cnf 文件中使用以下 SMS 通道配置(将这些行添加至文件底部):

(空行)
sms
sms.domain.com

SMS 通道选项文件

然后,通道的选项配置文件 sms_option 将包含以下设置:

SMPP_SERVER=gateway.domain.com
SMPP_PORT=503
USE_HEADER_FROM=0
DEFAULT_SOURCE_ADDRESS=000
GATEWAY_PROFILE=sms1
SMSC_DEFAULT_CHARSET=UCS2

SMS Gateway Server 配置

最后,Gateway Server 配置文件 sms_gateway.cnf 应类似于以下内容:

测试此配置

如果没有可用于测试的 SMSC,您可能需要执行某些回送测试。使用 sms_option 文件中的某些附加设置可对上述配置执行某些简单的回送测试。

sms_option 文件的附加设置

sms_option 文件的附加设置包括:

! So that we don’t add text to the body of the SMS message
FROM_FORMAT=
SUBJECT_FORMAT=
CONTENT_PREFIX=

没有这些设置,包含以下内容:

user@domain.com (Sample subject) Sample text

的电子邮件就会转换成 SMS 消息:

From:user@domain.com Subject:Sample Subject Msg:Sample text

反过来,这将不会是移动设备到电子邮件代码所期望看到的格式:

user@domain.com (Sample subject) Sample text

因此,需要(用于回送测试)为 FROM_FORMATSUBJECT_FORMATCONTENT_PREFIX 选项指定空字符串。

执行回送测试

发送寻址到 000@sms.domain.com 的测试电子邮件消息,例如

结果是,此电子邮件消息应路由回电子邮件收件人 user@domain.com。请确保已将 sms.domain.com 添加至您的 DNS 或主机表中,以进行测试。


SMS Gateway Server 存储要求

要确定 SMS Gateway Server 所需要的资源数量,请使用您从表 D-27 中的要求生成的数字,同时还要使用您预期每秒中继的消息的数目以及 RECORD_LIFETIME 设置。

表 D-27 包含了历史记录、SMPP 中继和 SMPP 服务器的要求。

表 D-27 SMS Gateway Server 存储要求 

组件

要求

内存中历史记录

已中继的每一条消息都要求 33+m+s 个字节的虚拟内存,其中 m 是此消息的 SMS 消息 ID 的长度 (1 <= m <= 64),s 是此消息的 SMS 源地址的长度 (1 <= s<= 20)。

MAKE_SOURCE_ADDRESS_UNIQUE=0 时,则仅使用 16+m 个字节。对于 64 位操作系统,每条记录都将消耗 49+m+s 个字节的虚拟内存 [当 MAKE_SOURCE_ADDRESS_UNIQUE=0 时为 24+m]。

还请注意,堆分配器实际上可能为每条记录分配更大的虚拟内存。

记录的最大数目为 430 亿条 (2**32-1)。记录数目少于 1680 万条 (2**24) 时,散列表将消耗大约 16 Mb;记录少于 6710 万条 (2**26) 时,散列表将消耗大约 64 Mb;记录大于 6710 万条时,散列表将消耗大约 256 Mb。

64 位操作系统的内存消耗量加倍。

这些消耗不包括各条消息本身所需的内存消耗。

盘上历史记录

每条已中继的消息所需字节的平均数目如下:

81+m+2s+3a+S+2i

其中:

  • m 是 SMS 消息 ID 的平均长度,且 1<=m<=64
  • s 是 SMS 源地址的平均长度,且
    1 <= s <= 20
  • a 是电子邮件地址的平均长度,且 3 <= a <= 129
  • SSubject: 标题行的平均长度,且
    0 <= S<= 80
  • i 是电子邮件消息信封 ID 的平均长度,且
    0 <= i <= 129

任何指定记录的大小都受消息的信封 From:To: 地址的长度、信封和消息 ID 的长度以及 Subject: 标题行的长度的影响。

最大记录长度为 910 个字节。

当使用 MAKE_SOURCE_ADDRESS_UNIQUE=0 时,每条记录的大小(字节)都为:
78+m+3a+S+2i

SMPP 中继

每条已中继的 SMPP 会话将消耗两个 TCP 端口:一个与本地 SMPP 客户机连接,另一个与远程 SMPP 服务器连接。在 32 位操作系统中,每条连接将消耗大约 1 Kb 的虚拟内存;在 64 位操作系统中则要消耗 2 Kb。

SMPP 服务器

每条外来连接都消耗一个 TCP 插槽。在 32 位操作系统中,每条连接将消耗大约 1 Kb 的虚拟内存;在 64 位操作系统中则要消耗 2 Kb。

例如,如果每秒中平均有 50 条消息需要中继,SMS 源地址的长度为 13 个字节,SMS 消息 ID 的一般长度为 12 个字节,电子邮件地址则为 24 个字节,Subject: 行为 40 个字节,电子邮件消息和信封 ID 各为 40 个字节,而历史记录则需要保留 7 天,则:

如果可以提供足够的磁盘空间以处理任何磁盘要求,将严格限制 32 位计算机上的虚拟内存要求大约为 2Gb。要减少虚拟内存或磁盘存储所需的数量,请使用 RECORD_LIFETIME 选项较少记录保留时间长度。



上一个      目录      索引      下一个     


版权所有 2004 Sun Microsystems, Inc.。保留所有权利。