目录

简介

先决条件

要求

使用的组件

背景信息

配置

SMS网关的好处

网络图和通信流

配置

ISE

后缀

Maildrop和Mailfilter

Kannel

验证

ISE

后缀

Maildrop

Mailfilter

Kannel

访客电话

故障排除

ISE

相关信息

简介

本文描述如何集成开放源解决方案(后缀， Maildrop， Kannel)用思科身份服务引擎(ISE)为了提供短消息服务(SMS)消息对有访客帐户的用户。

先决条件

要求

Cisco 建议您了解以下主题：

- 思科ISE和访客访问

- Linux和Shell script程序

使用的组件

本文档中的信息基于以下软件和硬件版本：

- Cisco ISE版本1.2或以上

- 后缀版本2.10

- Maildrop版本2.6.0

- Kannel版本1.5.0

Note:请是消息灵通的后缀、Maildrop和Kannel是开放源解决方案，并且思科不支持这些产品。此配置示例提交ISE如何可以集成以其他产品为了提供端到端解决方案。

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始（默认）配置。如果您使用的是真实网络，请确保您已经了解所有命令的潜在影响。

背景信息

ISE允许您创建临时网络网络访问的访客帐户，典型地访客、访客、承包商、顾问和客户。这样帐户由赞助商用户创建通过赞助商门户。当您创建帐户时，发送与SMS的一动态生成的访问口令直接地到来宾用户移动电话是可能的。

思科ISE能通过与简单邮件传输协议(SMTP)的电子邮件发送这些凭证到Mail2SMS网关。此网关对SMS交付负责。

配置

SMS网关的好处

有在市场的多Mail2SMS网关解决方案。他们能通常接收与使用的数据不同的协议，例如SMTP、短的消息点对点(SMPP)， FTP， HTTP (简单对象访问协议(SOAP)，网站服务)，并且传送SMS信息到特定移动电话。

构件您自己的SMS网关也许是最佳的。它允许：

- 较大适应性

- 能力建立关于路由(基于时间的复合规则，基于策略的，基于内容的)

- 与本地数据库的集成(例如，不同的活动目录组的不同的路由策略)

- 潜在地更低操作成本(没有需要支付一外部服务)

- 也使用此解决方案的可能性作为电子邮件生成由ISE和被发送的健康警报

有混合部署-也集成与一外部服务的一个个人SMS网关也许是值得的。

网络图和通信流

这是流：

1. 赞助商用户创建与SMS通知的一个访客帐户，并且为用户提供移动电话编号。ISE发送电子邮件到已配置的SMTP服务器。源地址(从)属于一个特定赞助商用户，而目的地址(对)在ISE配置全局(在本例中， sms@test-cisco.com)。所有关于新建立的用户的详细信息，例如用户名和密码，是在该电子邮件里面正文。

2. 电子邮件在后缀服务器到达，配置与maildrop作为一个本地交付代理程序。在对SMS用户maildir目录的交付之前， maildrop搜索在主目录的mailfilter用户的。mailfilter脚本解析电子邮件，并且，如果找到所有必要数据，使用wget为了发送HTTP GET请求到Kannel smsbox。HTTP GET请求与用户名和密码一起包含文本消息和用户的移动电话编号。Kannel smsbox是使用为了接受从用户的所有请求为了发送SMS Kannel的前端(通过它到Kannel bearerbox)。

3. 请求对Kannel bearerbox，有责任发送SMS的Kannel smsbox发送。

4. 也许有多个规则，并且短消息服务在bearerbox集中(SMSCs)配置。此示例使用一个外部SMPP服务器。本地连接的移动电话的配置是容易和被提交以后。

此解决方案(后缀每个模块， Kannel smsbox和Kannel bearerbox)在独立服务器可以安装。为了简化在本例中，它在同一个服务器配置。

配置

ISE

完成这些步骤为了配置ISE。

1. 配置赞助商门户用户。在本例中，使用默认ISE配置，并且用户在SponsorAllAccount组中安置：

赞助商用户的电子邮件可以是配置的以后从赞助商门户。

2. 为了能发送SMS通知，请编辑SponsorAllAccount组的默认权限：

默认情况下，发送SMS权限禁用。

3. 配置SMTP服务器，并且确保DNS设置正确。

所有通知电子邮件被发送到smtp.test-cisco.com主机。ISE不设法检查DNS MX记录已配置的域(此SMTP服务器对待中继)。

4. 定制被发送作为SMS通知的电子邮件。

5. 配置目的地电子邮件地址，是唯一的设置没有被留下作为默认。所有通知通过SMTP服务器发送配置前与到作为sms@test-cisco.com设置的字段。

Note:配置ISE为了通过电子邮件发送预警通知是可能的。这可能也集成以建议方案为了发送警报作为SMS到移动电话。思科建议您使用在后缀服务器的单独的帐户此(例如， alert@test-cisco.com)。

后缀

后缀是收到从ISE的电子邮件的SMTP服务器。默认配置使用除了一些次要变化。完成这些步骤为了配置它。

1. 配置后缀为了是test-cisco.com域的本地目的地。也配置一个本地交付代理程序是重要的：maildrop。这是在main.cf的必要的更改：

myhostname = smtp.test-cisco.com

mydomain = test-cisco.com

mydestination = $myhostname, $mydomain, localhost

local_transport = maildrop

2. 下一步是激活在master.cf的maildrop。更换在master.cf的正确线路：

maildrop  unix  -       n       n       -       -       pipe

flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${user}
没有虚拟域，由于它是一简单部署， {用户}参数使用而不是默认{收件人}参数。

3. 配置用于为了收到电子邮件的本地帐户SMS ：

neptun ~ # useradd sms

neptun ~ # passwd sms

New password:

BAD PASSWORD: it is too simplistic/systematic

Retype new password:

passwd: password updated successfully

neptun ~ # chown -R sms:sms /home/sms/

现在，应该正确地传送所有电子邮件对SMS用户。当首先收到电子邮件时， maildir结构自动地创建。

Maildrop和Mailfilter

在交付之前， maildrop搜索在主目录的.mailfilter用户的。如果找到该文件，脚本被执行。应该对用户只限制文件的权限：

neptun sms # touch /home/sms/.mailfilter

neptun sms # chmod go-rwx /home/sms/.mailfilter

这是文件的内容：

# Mailfilter script for parsing ISE SMS messages

# Author: Michal Garcarz at cisco.com

# Date: 1 Dec 2013

#DEFAULT="$HOME/.maildir/"

DATE=`date`

SHELL="/bin/bash"

# Our log file

logfile "/home/sms/maildrop.log"

# Our verbosity in the log file

VERBOSE="5"

log "-------------SMS MAILFILTER LOG-----------"

log "Email received at: $DATE"

if (/^Subject:.*Guest.*Text.*Notification.*/)

{

log "Email processed by script sending SMS via Kannel"

USERNAME=""

PASSWORD=""

TO=""

if (/^text:Username:(.*)/:b)

{

log "Username exists $MATCH1"

USERNAME=$MATCH1

}

if (/^text:Password:(.*)/:b)

{

log "Password exists $MATCH1"

PASSWORD=$MATCH1

}

if (/^to:(.*)/:b)

{

log "Mobile phone exists $MATCH1"

TO=$MATCH1

}

if ($USERNAME ne "" && $PASSWORD ne "" && $TO ne "")

{

log "Sending via HTTP to kannel username=$USERNAME password=$PASSWORD to=$TO"

DATA="ISE Guest portal Username: $USERNAME Password: $PASSWORD"

#also curl can be used instead of wget

xfilter "wget -O/dev/null \"http://192.168.112.100:13013/cgi-bin/sendsms?username=

tester&password=foobar&to=$TO&text=$DATA\" >> /tmp/maildrop-kannel.log 2>>

/tmp/maildrop-kannel.log"

}

#deliver to maildir (not used since xfilter returns !=0)

to $DEFAULT/

}

脚本：

- 检查主题是否是作为的相同的什么在ISE配置

- 读取用户名和密码到电子邮件正文的字段(使用从ISE的默认模板)

- 如果所有字段存在，呼叫一个外部程序：wget为了发送HTTP GET到与所有的Kannel smsbox参数。注意特定凭证用于URL (username=tester&password=foobar)。这些是用户配置的凭证在Kannel以权限发送SMS。

有两日志文件在这里：

- /home/sms/maildrop.log -从脚本的执行的日志

- /tmp/maildrop-kannel.log -从wget的执行的日志

Kannel

smsbox和bearerbox可以从单个文件配置。此配置使用外部SMPP服务器交付。如果搜索smpp sms服务提供商说明，找到在Web的多个服务是容易的。因为没有需要收到和路由SMS消息，配置简单。此解决方案仅是为发送并且使用一个SMPP供应商。

这是摘自/etc/kannel/kannel.conf的一个部分：

#bearerbox

group = core

admin-port = 13000

admin-password = bar

smsbox-port = 13001

log-level = 0

log-file = "/var/log/kannel/kannel.log"

access-log = "/var/log/kannel/access.log"

# SMSC SMPP

group = smsc

smsc = smpp

host = ****.com

port = 1775

smsc-username = 4ljt7wi3

smsc-password = ******

system-type =

address-range =

# SMSBOX SETUP

group = smsbox

bearerbox-host = localhost

sendsms-port = 13013

sendsms-chars = "0123456789 +-"

global-sender = 12345

log-file = "/var/log/kannel/smsbox.log"

log-level = 0

access-log = "/var/log/kannel/access.log"

white-list =

black-list =

reply-couldnotfetch =

reply-couldnotrepresent =

reply-requestfailed =

reply-emptymessage =

# SEND-SMS USERS, this credentials has been used in wget script

group = sendsms-user

username = tester

password = foobar

user-deny-ip = "*.*.*.*"

user-allow-ip = "192.168.*.*"

# SMS SERVICE Default

# there should be default always (this is for receiving SMS messages - not used)

group = sms-service

keyword = default

text = "No service specified"

通过USB附加移动电话和配置GSM SMSC是可能的：

group = smsc

smsc = at                  #type = GSM

smsc-id = usb0-modem

my-number = 1234

modemtype = auto           #types: wavecom, siemens, siemens-tc35, falcom,

nokiaphone, ericsson

device = /dev/ttyUSB0      #phone device seen on server

在多数电话上，它也要求激活调制解调器功能;例如，在机器人版本2.2和以上，它在设置/束缚和束缚可移植的Hotspot/USB启用。

切记运行bearerbox和smsbox。示例如下：

neptun ~ # /etc/init.d/kannel-bearerbox start

* Starting kannel bearerbox ...                                              [ ok ]

neptun ~ # /etc/init.d/kannel-smsbox start

* Starting kannel smsbox ...                                                 [ ok ]

neptun ~ # netstat -atcpn

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address     Foreign Address    State    PID/Program name

tcp        0      0 0.0.0.0:13013     0.0.0.0:*          LISTEN   24170/smsbox

tcp        0      0 0.0.0.0:13000     0.0.0.0:*          LISTEN   24151/bearerbox

tcp        0      0 0.0.0.0:13001     0.0.0.0:*          LISTEN   24151/bearerbox

Bearerbox必须有配置的至少一个SMSC为了开始。

验证

使用本部分可确认配置能否正常运行。

ISE

使用赞助商门户的默认端口(8443)。赞助商登录https://ise.test-cisco.com:8443/sponsorportal/。

确保赞助商安排一个电子邮件地址分配在我的设置：

创建与SMS通知的访客帐户：

您接收确认访客帐户顺利地创建：

ISE应该发送电子邮件到已配置的SMTP服务器。

后缀

SMTP服务器收到消息并且使用maildrop为了提供它到本地帐户(sms@test-cisco.com)。这是摘自/var/log/messages的一个部分：

Nov 30 22:39:47 neptun postfix/smtpd[18460]: connect from unknown[192.168.112.1]

Nov 30 22:39:47 neptun postfix/smtpd[18460]: 2B36030B32: client=unknown

[192.168.112.1]

Nov 30 22:39:47 neptun postfix/cleanup[18463]: 2B36030B32: message-id=

<563762958.941385847586377.JavaMail.root@ise2>

Nov 30 22:39:47 neptun postfix/qmgr[32658]: 2B36030B32: from=<sponsor@test-cisco.com>,

size=689, nrcpt=1 (queue active)

Nov 30 22:39:47 neptun postfix/pipe[18464]: 2B36030B32: to=<sms@test-cisco.com>,

relay=maildrop, delay=0.18, delays=0.14/0/0/0.04, dsn=2.0.0, status=sent (delivered

via maildrop service)

Maildrop

在您发送电子邮件对SMS前， maildir目录执行/home/sms/.mailfilter，进行一特定操作。

这是摘自/home/sms/maildrop.log的一个部分：

-------------SMS MAILFILTER LOG-----------

Email received at: Sat Nov 30 22:39:47 CET 2013

Email processed by script sending SMS via Kannel

Username exists  jsmith02

Password exists  t6ub79_6r

Mobile phone exists 4850xxxxxxx

Sending via HTTP to kannel username= jsmith02 password= t6ub79_6r to=4850xxxxxxx

Mailfilter

mailfilter脚本读所有数据并且执行xfilter，呼叫wget为了通过所有参数到Kannel。

这是摘自/tmp/maildrop-kannel.log的一个部分：

--2013-11-30 22:39:47--  http://192.168.112.100:13013/cgi-bin/sendsms?username=

tester&password=foobar&to=4850xxxxxxx&text=ISE%20Guest%20portal%20Username:

%20%20jsmith02%20Password:%20%20t6ub79_6r

Connecting to 192.168.112.100:13013... connected.

HTTP request sent, awaiting response... 202 Accepted

Length: 24 [text/html]

Saving to: `/dev/null'

0K                                                       100% 1.14M=0s

2013-11-30 22:39:47 (1.14 MB/s) - `/dev/null' saved [24/24]

HTTP GET请求接受。

Kannel

Kannel smsbox报道接收从wget的一个HTTP请求，并且发送该请求对bearerbox为了传送SMS。

这是摘自/var/log/kannel/smsbox.log的一个部分：

2013-11-30 22:39:47 [18184] [5] INFO: smsbox: Got HTTP request </cgi-bin/sendsms>

from <192.168.112.100>

2013-11-30 22:39:47 [18184] [5] INFO: sendsms used by <tester>

2013-11-30 22:39:47 [18184] [5] INFO: sendsms sender:<tester:12345>

(192.168.112.100) to:<4850xxxxxxx> msg:<ISE Guest portal Username:

jsmith02 Password:  t6ub79_6r>

2013-11-30 22:39:47 [18184] [5] DEBUG: Stored UUID fd508632-9408-49e1-9eda-

3ce8d4b939d4

2013-11-30 22:39:47 [18184] [5] DEBUG: message length 57, sending 1 messages

2013-11-30 22:39:47 [18184] [5] DEBUG: Status: 202 Answer: <Sent.>

2013-11-30 22:39:47 [18184] [5] DEBUG: Delayed reply - wait for bearerbox

2013-11-30 22:39:47 [18184] [0] DEBUG: Got ACK (0) of fd508632-9408-49e1-9eda-

3ce8d4b939d4

Kannel bearerbox连接到远程SMPP服务器并且顺利地传送信息。

这是摘自/var/log/kannel/kannel.log的一个部分：

2013-11-30 22:39:47 [18165] [8] DEBUG: boxc_receiver: sms received

2013-11-30 22:39:47 [18165] [8] DEBUG: send_msg: sending msg to box: <127.0.0.1>

2013-11-30 22:39:47 [18165] [6] DEBUG: SMPP[SMPP:*****.com:1775/0:4ljt7wi3:]:

throughput (0.00,0.00)

2013-11-30 22:39:47 [18165] [6] DEBUG: SMPP[SMPP:*****.com:1775/0:4ljt7wi3:]:

Sending PDU:

2013-11-30 22:39:47 [18165] [6] DEBUG: SMPP PDU 0x2056bf0 dump:

2013-11-30 22:39:47 [18165] [6] DEBUG:   type_name: submit_sm

2013-11-30 22:39:47 [18165] [6] DEBUG:   command_id: 4 = 0x00000004

2013-11-30 22:39:47 [18165] [6] DEBUG:   command_status: 0 = 0x00000000

2013-11-30 22:39:47 [18165] [6] DEBUG:   sequence_number: 5 = 0x00000005

2013-11-30 22:39:47 [18165] [6] DEBUG:   service_type: NULL

2013-11-30 22:39:47 [18165] [6] DEBUG:   source_addr_ton: 2 = 0x00000002

2013-11-30 22:39:47 [18165] [6] DEBUG:   source_addr_npi: 1 = 0x00000001

2013-11-30 22:39:47 [18165] [6] DEBUG:   source_addr: "12345"

2013-11-30 22:39:47 [18165] [6] DEBUG:   dest_addr_ton: 2 = 0x00000002

2013-11-30 22:39:47 [18165] [6] DEBUG:   dest_addr_npi: 1 = 0x00000001

2013-11-30 22:39:47 [18165] [6] DEBUG:   destination_addr: "4850xxxxxxx"

2013-11-30 22:39:47 [18165] [6] DEBUG:   esm_class: 3 = 0x00000003

2013-11-30 22:39:47 [18165] [6] DEBUG:   protocol_id: 0 = 0x00000000

2013-11-30 22:39:47 [18165] [6] DEBUG:   priority_flag: 0 = 0x00000000

2013-11-30 22:39:47 [18165] [6] DEBUG:   schedule_delivery_time: NULL

2013-11-30 22:39:47 [18165] [6] DEBUG:   validity_period: NULL

2013-11-30 22:39:47 [18165] [6] DEBUG:   registered_delivery: 0 = 0x00000000

2013-11-30 22:39:47 [18165] [6] DEBUG:   replace_if_present_flag: 0 = 0x00000000

2013-11-30 22:39:47 [18165] [6] DEBUG:   data_coding: 0 = 0x00000000

2013-11-30 22:39:47 [18165] [6] DEBUG:   sm_default_msg_id: 0 = 0x00000000

2013-11-30 22:39:47 [18165] [6] DEBUG:   sm_length: 57 = 0x00000039

2013-11-30 22:39:47 [18165] [6] DEBUG:   short_message:

2013-11-30 22:39:47 [18165] [6] DEBUG:    Octet string at 0x205ec70:

2013-11-30 22:39:47 [18165] [6] DEBUG:      len:  57

2013-11-30 22:39:47 [18165] [6] DEBUG:      size: 58

2013-11-30 22:39:47 [18165] [6] DEBUG:      immutable: 0

2013-11-30 22:39:47 [18165] [6] DEBUG:      data&colon; 49 53 45 20 47 75 65 73

74 20 70 6f 72 74 61 6c   ISE Guest portal

2013-11-30 22:39:47 [18165] [6] DEBUG:      data&colon; 20 55 73 65 72 6e 61 6d

65 3a 20 20 6a 73 6d 69    Username:  jsmi

2013-11-30 22:39:47 [18165] [6] DEBUG:      data&colon; 74 68 30 32 20 50 61 73

73 77 6f 72 64 3a 20 20   th02 Password:

2013-11-30 22:39:47 [18165] [6] DEBUG:      data&colon; 74 36 75 62 37 39 11 36

72                        t6ub79.6r

2013-11-30 22:39:47 [18165] [6] DEBUG:    Octet string dump ends.

2013-11-30 22:39:47 [18165] [6] DEBUG: SMPP PDU dump ends.

2013-11-30 22:39:47 [18165] [6] DEBUG: SMPP[SMPP:******.com:1775/0:4ljt7wi3:]:

throughput (1.00,0.00)

2013-11-30 22:39:47 [18165] [6] DEBUG: SMPP[SMPP:******.com:1775/0:4ljt7wi3:]:

throughput (1.00,0.00)

2013-11-30 22:39:47 [18165] [6] DEBUG: SMPP[SMPP:******.com:1775/0:4ljt7wi3:]:

Got PDU:

2013-11-30 22:39:47 [18165] [6] DEBUG: SMPP PDU 0x2056bf0 dump:

2013-11-30 22:39:47 [18165] [6] DEBUG:   type_name: submit_sm_resp

2013-11-30 22:39:47 [18165] [6] DEBUG:   command_id: 2147483652 = 0x80000004

2013-11-30 22:39:47 [18165] [6] DEBUG:   command_status: 0 = 0x00000000

2013-11-30 22:39:47 [18165] [6] DEBUG:   sequence_number: 5 = 0x00000005

2013-11-30 22:39:47 [18165] [6] DEBUG:   message_id: "4128473611307259"

2013-11-30 22:39:47 [18165] [6] DEBUG: SMPP PDU dump ends.

2013-11-30 22:39:47 [18165] [6] DEBUG: SMPP[SMPP:******.com:1775/0:4ljt7wi3:]:

throughput (1.00,0.00)

注意源地址设置作为12345。此设置不重要。重视的外部SMPP服务器重写。采购其它服务为了不同地被提交是可能的。

访客电话

来宾用户接收SMS ：

故障排除

本部分提供了可用于对配置进行故障排除的信息。

ISE

当您创建访客帐户时，您也许遇到此错误：无法传送文本消息对以下来宾用户：xxxx。 您必须添加您的对Settings页的电子邮件地址。如果收到该错误消息，请验证赞助商电子邮件地址。

相关信息

- 思科身份服务引擎-用户指南1.2

- Kannel文档

- 后缀文档

- 技术支持和文档 - Cisco Systems