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

附录 D 短消息服务 (SMS)

章介绍如何在 SunTM ONE Messaging Server 上实现短消息服务 (Short Message Service, 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 执行两项功能:


注 –

在 Windows 平台上,Sun Java System Messaging Server 不支持双向 SMS。


要求

本手册假定您已阅读了 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 值。选项 USE_HEADER_FROM=0 时忽略。

FROM_TON

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

MAXLEN

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

MAXPAGES

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

NPI

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

PAGELEN

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

TO

ID 的同义词。 

TO_NPI

NPI 的同义词。 

TO_TON

TON 的同义词。 

TON

为使用 ID 属性给定的目标 SMS 地址,指定一个数字类型 (Type of Number, 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 文本内容类型)会被使用,并且还可以控制已转换部分的最大数目。

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

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

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

显示了 SMS 通道电子邮件处理的流程图。

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

显示了 SMS 通道电子邮件处理的流程图(续)。

以下步骤与图 D–2 中的编号框相对应:

  1. 启动一个空输出缓冲区。该缓冲区所使用的字符集是统一字符编码。

  2. 电子邮件消息的创始者地址来自以下五个源之一,这些源按首选项的降序显示:


    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- 标题行。

  3. 如果 Subject: 标题行不存在或为空,则 SUBJECT_NONE 选项的值会附加到输出缓冲区。

    否则,SUBJECT_FORMAT 选项的处理结果和 LINE_STOP 通道选项的值均会附加到输出缓冲区。

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

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

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

  5. 对于每个文本部分,如果未达到 MAX_MESSAGE_PARTS 限制,则该文本部分就会被解码为 Unicode,并连同 LINE_STOP 通道选项的值一起附加到缓冲区。

  6. 然后,输出缓冲区的结果将从 Unicode 转换成 SMSC 的默认字符集或 UCS2 (UTF-16)。SMSC 的默认字符集是通过 SMSC_DEFAULT_CHARSET 选项来指定的。

  7. 转换完毕后,所得到的结果将被截断,以使之不超过 MAX_MESSAGE_SIZE 中设置的字节数。

  8. 然后,在电子邮件到 SMS 的转换过程中转换而得到的字符串将被分割成一条或多条 SMS 消息,其中任何一条 SMS 消息都不会长于 MAX_PAGE_SIZE 中设置的字节数。最多将生成与 MAX_PAGES_PER_MESSAGE 中所设置数量相同的 SMS 消息数。


    注 –

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


电子邮件消息处理样例

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


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 服务器,并递交使用 ESME_ 通道选项(如SMPP 选项中所述)指定的证书。表 D–2 列出了 BIND_TRANSMITTER PDU(Protocol Data Unit,协议数据单元)中的字段集,并给出了它们的值:

表 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;默认值为表示未知 NPI 的 0x00

addr_range

ESME_IP_ADDRESS 通道选项;默认值为空字符串

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

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

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


1. Resent-reply-to:
2. Resent-from:
3. Reply-to:
4. From:
5. Resent-sender:
6. Sender:
7. Envelope From:

请注意,仅当 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 消息,然后在提交另一条 SMS 消息之前,先等待提交响应(即 SUBMIT_SM_RESP PDU)。

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

站点可能想要将有效性检查和转换应用于收件人电子邮件地址(如将电子邮件定向到通道中所述)中已编码的 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。如果在替代文本中指定了元字符 $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”


SMS 通道配置

本节介绍如何为单向(电子邮件到移动设备)和双向(电子邮件到移动设备和移动设备到电子邮件)功能设置 SMS 通道。除了几种例外情况外,对于单向和双向功能,SMS 通道的设置均相同。这些例外情况将在为双向 SMS 配置 SMS 通道主题中说明。

本节包含以下主题:

添加 SMS 通道

将 SMS 通道添加至 Messaging Server 配置需要两个步骤:

  1. 添加通道定义和重写规则

  2. 创建 SMS 通道选项文件

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

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

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

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

添加通道定义和重写规则

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

Procedure添加通道定义和重写规则

步骤
  1. 将 SMS 通道添加到 MTA 的配置之前,需要为该通道挑选一个名称。通道的名称可以是 smssms_x,其中 x 是长度在一至三十六个字节之间的任何字符串,且不区分大小写。例如,sms_mway

  2. 要添加通道定义,请编辑位于 installation-directory/config/ 目录中的 imta.cnf 文件。在文件末尾于此二行之前添加一个空白行:

    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 通道关键字已过时。如果其存在,则应忽略。


  3. 添加了通道定义后,就请跳至文件的上半部分,并按以下格式添加一条重写规则:

    smpp-host-name $u@smpp-host-name

    例如,

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

  4. 保存 imta.cnf 文件。

  5. 使用 imsimta cnbuild 命令重新编译此配置。

  6. 使用 imsimta restart dispatcher 命令重新启动 SMTP 服务器。

  7. 使用上述配置,将电子邮件消息寻址至 id@smpp-host-name(例如 123456@smpp.siroe.com),从而将其定向到通道。有关寻址的更多信息,请参见电子邮件到 SMS 的转换过程

  8. (可选)如果要对用户隐藏 SMPP 服务器的主机名,或者要将其他主机名与同一通道相关联,则请添加其他重写规则。例如,要将 host-name-1host-name-2 与通道相关联,请将以下内容添加到重写规则中:


    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 MessagingServer 的主机的 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,供 SMPP 中继的 LISTEN_PORT 使用的同一 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 消息中所能包含的总字节数的上限。具体来讲,MAX_MESSAGE_SIZE 指定的最大字节数将用于一条或多条生成的 SMS 消息。任何超出此限值的字节将被放弃。

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

所用的字节数在电子邮件消息从 Unicode 转换成 SMSC 的默认字符集或 UCS2 之后产生。这意味着,在转换为 UCS2 的情况下,值为 960 个字节的 MAX_MESSAGE_SIZE 至多产生 480 个字符,因为每个 UCS2 字符至少两个字节长。

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

最后,请注意将使用这两个限制 MAX_MESSAGE_SIZEMAX_PAGE_SIZE * MAX_PAGES_PER_MESSAGE 中较小的一个。

MAX_PAGE_SIZE

整数,>= 10)使用 MAX_PAGE_SIZE 选项可控制单条 SMS 消息中允许的最大字节数。默认情况下,使用的字节数值为 160。这对应于 MAX_PAGE_SIZE=160

MAX_PAGES_PER_MESSAGE

整数,1 至 255)使用此选项,可控制为给定电子邮件消息生成的 SMS 消息的最大数目。事实上,此选项将截断电子邮件消息,只把电子邮件消息中符合 MAX_PAGES_PER_MESSAGE 设置的部分转换成 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

始终不从 From: 地址设置 SMS 源地址。使用已找到的属性-值对

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 选项用于控制 RFC 822 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 字符集。 

将始终使用 SMSC 默认字符集。该字符集中所没有的字形将由助记符号表示(例如用 "AE" 表示 AE-ligature)。 

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 数字规划指标值

值 

说明 

未知 

ISDN 类(E.163、E.164) 

数据 (X.121) 

电传 (F.69) 

陆地移动设备 (E.212) 

全国 

专用 

10 

ERMES 

14 

IP 地址 (Internet) 

18 

WAP 客户机 ID 

>= 19 

未定义 

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

DEFAULT_DESTINATION_TON

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

表 D–9 典型 TON 值

值 

说明 

未知 

国际 

全国 

网络特定 

用户号码 

字母数字 

缩写 

>=7 

未定义 

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

DEFAULT_PRIORITY

整数,0 至 255)SMS 消息具有强制性优先级字段。下表 D–10 显示了 SMS 优先级值的解释:

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

值 

GSM 

TDMA 

CDMA 

非优先级 

大量 

正常 

优先级 

正常 

交互 

优先级 

紧急 

紧急 

优先级 

特急 

紧急 

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

请注意,如果 USE_HEADER_PRIORITY=1 且电子邮件消息具有 RFC 822 Priority: 标题行,则将使用该标题行中指定的优先级来设置所得到的 SMS 消息的优先级。具体来讲,如果 USE_HEADER_PRIORITY=0,则 SMS 优先级标志会始终根据 DEFAULT_PRIORITY 选项来设置,而 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) 

紧急 

优先级 (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 

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

n >= 0 

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

-1(默认值) 

1(默认值) 

仅当原始电子邮件消息包含 RFC 822 Sensitivity: 标题行时,才设置 SMS 消息的保密性标志。在这种情况下,将 SMS 保密性标志设置为对应于 Sensitivity: 标题行的值。该值为默认值。

n >= 0 

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

表 D–13 显示了 SMS 保密性值的解释:

表 D–13 SMS 保密性值解释

值 

说明 

无限制 

有限制 

机密 

秘密 

>= 4 

未定义 

表 D–14 显示了用于将 RFC 822 Sensitivity: 标题行值转换成 SMS 保密性值的映射:

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

RFC 822 Sensitivity: value 

SMS 保密性值 

个人 

1(有限制) 

专用 

2(机密) 

公司机密 

3(秘密) 

DEFAULT_SERVICE_TYPE

字符串,0 至 5 个字节)与通道生成的 SMS 消息相关联的服务类型。默认情况下,不指定服务类型(即,零长度字符串)。某些通用的服务类型包括:CMT(cellular messaging,蜂窝式邮件服务)、CPT(cellular paging,蜂窝式呼叫)、VMN(voice mail notification,语音邮件通知)、VMA(voice mail alerting,语音邮件警报)、WAP(wireless application protocol,无线应用协议)和 USSD(unstructured supplementary data services,非结构化辅助数据服务)。

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

字符串)在某些实例中,可能需要确保所有 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 协议参数。这些名称以字符串 "ESME_" 开头的选项可用于识别用作外部短消息实体 (External Short Message Entity, ESME) 的 MTA;即,将 MTA 绑定至 SMPP 服务器,以便将 SMS 消息提交至此服务器的关联 SMSC 时。

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)可使用此选项或 port 通道关键字指定 SMPP 服务器侦听的 TCP 端口。此端口号必须通过这两种机制之一进行指定。如果同时使用这两种机制指定,则优先采用 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 个字节)用于格式化 Subject: 标题行的内容,以显示在 SMS 消息中的格式化模板。此选项的默认全局值是 US-ASCII 字符串 "($s)"。有关更多信息,请参见格式化模板

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

SUBJECT_NONE

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

DEBUG

(整数,位掩码)启用调试输出。默认值为 6,即选择警告消息和错误消息。任何非零值都可为通道本身启用调试输出,这与在通道定义中指定 master_debug 相同。表 D–16 定义了 DEBUG 位掩码的位值。

表 D–16 DEBUG 位掩码

位 

值 

说明 

0-31 

-1

极其详细的输出 

1

提示性消息 

2

警告消息 

4

错误消息 

8

子例行程序调用跟踪 

16

散列表诊断 

32

I/O 诊断,接收 

64

I/O 诊断,传输 

128

SMS 到电子邮件转换的诊断(移动设备始发和 SMS 通知) 

256

PDU 诊断,标题数据 

512

PDU 诊断,主体数据 

10 

1024

PDU 诊断,类型-长度-值数据 

11 

2048 

选项处理;将所有选项设置发送到日志文件。 

格式化模板

使用 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 服务器进行通信。

    这是显而易见的:仅向配置中添加附加 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" 的重写规则,如果找不到,则会查找点 (".") 规则。有关重写规则的更多信息,请参见第 11 章,配置重写规则

  2. 为了使用不同的通道选项与同一 SMPP 服务器进行通信。

    要使用不同的通道选项与同一 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" 字段为 IP 地址 a.b.c.d 及您要连接至的 MobileWay SMPP 服务器的 TCP 端口号 p。请将这些值用于 SMPP_SERVERSMPP_PORT 通道选项。将 "Account Login" 和 "Account 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 中:

表 D–18 双向配置的异常情况

例外 

解释 

master 通道关键字

删除 master 通道关键字(如果存在)。

不再需要配置 SMS 通道。 

SMPP_SERVER

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

SMPP_PORT

用于实例化 SMPP 中继的 LISTEN_PORT 设置所用的同一 TCP 端口(请参见SMPP 中继

DEFAULT_SOURCE_ADDRESS

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

GATEWAY_PROFILE 

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

USE_HEADER_FROM

设置为 0

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

设置双向 SMS 路由选择中所提及的,远程 SMSC 需要配置为通过使用 LISTEN_PORT 选项指定的 TCP 端口号,将 SMS 地址(在 DEFAULT_SOURCE_ADDRESS 通道选项中定义)路由至 Gateway 的 SMP 服务器。(有关如何指定 LISTEN_PORT,请参见SMPP 服务器。)

请注意,多个 SMS 通道可使用同一 SMPP 中继。同样,只需要一个 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 服务器所处理的请求 PDU,并指定 Gateway SMPP 服务器的响应。

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

请求 PDU 

SMPP 服务器响应 

BIND_TRANSMITTERBIND _TRANSCEIVERUNBIND

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

OUTBIND

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

SUBMIT_SMDATA_SM

尝试将目标 SMS 地址与唯一的 SMS 源地址或 Gateway 配置文件的 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 Communications Services 6 2005Q4 Deployment Planning 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. 如果是通知,则该 SMS 消息会根据 RFC 1892-1894 被转换成电子邮件传送状态通知 (Delivery Status Notification, 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 的电子邮件到移动设备部分,您必须完成以下配置:

网关配置文件

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

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

步骤
  1. 向 SMS Gateway Server 配置文件添加一个网关配置文件。

    要添加选项组,请使用以下格式:


    [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 通道选项的名称相同。文件名不区分大小写。有关有效通道选项的列表,请参见可用选项

  2. 设置网关配置文件选项(例如 SMSC_DEFAULT_CHARSET),以符合远程 SMSC 的特性。

  3. 设置其他网关配置文件选项,以符合 SMS 通道的电子邮件特性。

    有关网关配置文件选项的完整说明,请参见网关配置文件选项

  4. 设置 CHANNEL 选项。

    将其值设置为 MTA SMS 通道的名称。

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

SMPP 中继

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

Procedure配置 SMPP 中继

步骤
  1. 将 SMPP 中继实例(选项组)添加至 SMS Gateway Server 的配置文件中。

    要添加选项组,请使用以下格式:


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

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

  2. 设置 LISTEN_PORT 选项。

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

  3. 设置 SERVER_HOST 选项。

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

  4. 设置 SERVER_PORT 选项。

    中继的 SERVER_PORT 选项应给定远程 SMSC 的 SMPP 服务器的 TCP 端口。

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

SMPP 服务器

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

Procedure配置 SMPP 服务器

步骤
  1. 将 SMPP 服务器实例(选项组)添加至 SMS Gateway Server 的配置文件中。

    要添加选项组,请使用以下格式:


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

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

  2. 设置 LISTEN_PORT 选项。

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

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

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

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

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

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

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

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

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

Procedure配置网关配置文件

步骤
  1. 将网关配置文件(选项组)添加至 SMS Gateway Server 配置文件中。

    要添加选项组,请使用以下格式:


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

    任何不超过 11 个字符的名称均可用作配置文件的名称。重要的是,它不能是已用于同一个配置文件中另一个网关配置文件的文件名。

  2. 设置 SELECT_RE 选项,必须为每个网关配置文件指定该选项。

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

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

  3. 设置 CHANNEL 选项。

    其值应是 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_INITIALTHREAD_COUNT_MAXIMUMTHREAD_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)工作线程池中每个工作线程的堆栈大小(字节)。默认值为 65,536 个字节 (64 Kb)。

历史数据调整

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

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

以下选项用于调整历史文件:HISTORY_FILE_DIRECTORYHISTORY_FILE_MODEHISTORY_FILE_ROLLOVER_PERIODRECORD_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,即选择警告消息和错误消息。

表 D–21 定义了 DEBUG 位掩码的位值。

表 D–21 DEBUG 位掩码

位 

值 

说明 

0-31 

-1

极其详细的输出 

1

提示性消息 

2

警告消息 

4

错误消息 

8

子例行程序调用跟踪 

16

散列表诊断 

32

I/O 诊断,接收 

64

I/O 诊断,传输 

128

SMS 到电子邮件转换的诊断(移动设备始发和 SMS 通知) 

256

PDU 诊断,标题数据 

512

PDU 诊断,主体数据 

10 

1024

PDU 诊断,类型-长度-值数据 

11 

2048 

选项处理;将所有选项设置发送到日志文件。 

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 s

读取 SMPP 客户机的入站连接超时 

LISTEN_TRANSMIT_TIMEOUT

120 s

写入 SMPP 客户机的入站连接超时 

MAKE_SOURCE_ADDRESSES_UNIQUE

1

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

SERVER_HOST

 

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

SERVER_PORT

 

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

SERVER_RECEIVE_TIMEOUT

600 s

读取出站 SMPP 服务器连接超时 

SERVER_TRANSMIT_TIMEOUT

120 s

写入出站 SMPP 服务器连接超时 

LISTEN_BACKLOG

(整数,范围在 [0,255] 之间)入站 SMPP 客户机连接的 TCP 堆栈所允许的积压连接请求。默认值为 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 s

入站 SMPP 服务器连接的读取超时 

LISTEN_TRANSMIT_TIMEOUT

120 s

入站 SMPP 服务器连接的写入超时 

LISTEN_BACKLOG

(整数,范围在 [0,255] 之间)入站 SMPP 客户机连接的 TCP 堆栈所允许的积压连接请求。默认值为 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 文本插入到电子邮件消息的正文之前转换 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表 D–25 显示了与电子邮件一起传送时,从 SMS 至电子邮件的映射:

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

SMS 配置文件 

SMS 优先级标志 

电子邮件 Priority: 标题行 

GSM 

0(无优先级)

1, 2, 3(优先级)

无标题行(表示 Normal

Urgent

TDMA 

0(批量)

1(普通)

2(紧急)

3(非常紧急)

Nonurgent

无标题行(表示 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表 D–26 显示了与电子邮件一起传送时,从 SMS 至电子邮件的映射:

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

SMS 保密性标志 

电子邮件 Sensitivity: 标题行 

0(无限制)

无标题行 

1(限制)

Personal

2(机密)

Private

3(秘密)

Company-confidential

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

双向 SMS 配置示例

行为假设

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

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

进一步假设和指定

SMS 通道配置

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

(blank line)
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 应包含类似以下内容:


HISTORY_FILE_DIRECTORY=/sms_gateway_cache/
[SMPP_RELAY=relay1]
LISTEN_PORT=503SERVER_HOST=smpp.domain.com
SERVER_PORT=377

[SMPP_SERVER=server1]
LISTEN_PORT=504

[GATEWAY_PROFILE=sms1]
SELECT_RE=000([0-9]{10,10}){0,1}
SMSC_DEFAULT_CHARSET=UCS2

测试此配置

如果没有可用于测试的 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 (Test message) This is a test message which should loop back

结果是此电子邮件消息应路由回电子邮件收件人 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 选项,减少记录的保留时间长度。