يوضح هذا المستند كيفية دمج حلول المصدر المفتوح (PostFix، و MailDrop، و Channel) مع محرك خدمات الهوية (ISE) من Cisco لتقديم رسالة خدمة الرسائل القصيرة (SMS) إلى المستخدمين الذين لديهم حسابات الضيف.
توصي Cisco بأن تكون لديك معرفة بالمواضيع التالية:
تستند المعلومات الواردة في هذا المستند إلى إصدارات البرامج والمكونات المادية التالية:
تم إنشاء المعلومات الواردة في هذا المستند من الأجهزة الموجودة في بيئة معملية خاصة. بدأت جميع الأجهزة المُستخدمة في هذا المستند بتكوين ممسوح (افتراضي). إذا كانت شبكتك مباشرة، فتأكد من فهمك للتأثير المحتمل لأي أمر.
يسمح لك ISE بإنشاء حسابات ضيوف للوصول المؤقت إلى الشبكة، وذلك عادة للضيوف والزوار والمقاولين والمستشارين والعملاء. يتم إنشاء هذه الحسابات بواسطة المستخدمين الكفلاء عبر بوابة الكفيل. عند إنشاء الحساب، من الممكن إرسال كلمة مرور وصول يتم إنشاؤها بشكل ديناميكي باستخدام SMS مباشرة إلى هاتف المستخدم الجوال الضيف.
يمكن أن يرسل Cisco ISE بيانات الاعتماد هذه عبر البريد الإلكتروني باستخدام بروتوكول نقل البريد البسيط (SMTP) إلى عبارة Mail2SMS. هذه البوابة مسؤولة عن تسليم SMS.
توجد حلول متعددة لعبارة Mail2SMS في السوق. يمكنهم عادة تلقي البيانات باستخدام بروتوكولات مختلفة، مثل SMTP، و Short Message Peer-to-Peer (SMPP)، و FTP، و HTTP (بروتوكول الوصول البسيط إلى الكائنات (SOAP)، وخدمات الويب)، وإرسال رسالة SMS إلى الهاتف المحمول المحدد.
قد يكون من الأفضل إنشاء بوابة رسائل SMS الخاصة بك. وهو يسمح بما يلي:
قد يكون من المفيد إجراء عملية نشر مختلطة - عبارة SMS شخصية يتم دمجها أيضا مع خدمة خارجية.
هنا هو التدفق:
يمكن تثبيت كل وحدة نمطية من هذا الحل (Postfix و Kannel smsbox و Kannel bearerbox) على خادم منفصل. من أجل البساطة في هذا المثال، يتم تكوينه على نفس الخادم.
أتمت هذا steps in order to شكلت ال ISE.
PostFix هو خادم SMTP يستقبل رسائل البريد الإلكتروني من ISE. يتم إستخدام التكوين الافتراضي باستثناء بعض التغييرات الثانوية. أتمت هذا steps in order to شكلت هو.
myhostname = smtp.test-cisco.com
mydomain = test-cisco.com
mydestination = $myhostname, $mydomain, localhost
local_transport = maildrop
maildrop unix - n n - - pipe
flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${user}
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. يتم إنشاء بنية البريد الإلكتروني تلقائيا عندما يستلم البريد الإلكتروني لأول مرة.
قبل التسليم مباشرة، يبحث إرسال البريد عن .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/
}
النص:
يوجد ملفان للسجل هنا:
يمكن تكوين كل من Smsbox و bearebox من الملف المفرد. يستخدم هذا التكوين خادم SMPP الخارجي للتسليم. من السهل العثور على خدمات متعددة على الويب إذا قمت بالبحث عن عبارة مزود خدمة SMPP SMS. التكوين بسيط، نظرا لعدم وجود حاجة إلى تلقي رسائل 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 من نظام التشغيل Android والإصدارات الأحدث، يتم تمكينه في Settings/Tearing وتوصيل النقاط الساخنة المحمولة/منافذ USB.
تذكر أن تشغل كل من BearBox و 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
يجب أن يحتوي BearBox على SMSC واحد على الأقل تم تكوينه من أجل البدء.
استخدم هذا القسم لتأكيد عمل التكوين بشكل صحيح.
يتم إستخدام المنفذ الافتراضي لبوابة الكفيل (8443). يقوم الكفيل بتسجيل الدخول إلى https://ise.test-cisco.com:8443/sponsorportal/.
تأكد من أن الكفيل لديه عنوان بريد إلكتروني معين في إعداداتي:
إنشاء حساب الضيف باستخدام إعلام SMS:
تتلقى تأكيدا بأن حساب الضيف تم إنشاؤه بنجاح:
يجب على ISE إرسال بريد إلكتروني إلى خادم SMTP الذي تم تكوينه.
يتلقى خادم SMTP الرسالة ويستخدم إرسال البريد لتسليمها إلى الحساب المحلي (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=,
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)
قبل إرسال البريد الإلكتروني إلى رسائل SMS، يقوم دليل البريد بتنفيذ /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 كافة البيانات ويقوم بتنفيذ xfilter، الذي يقوم باستدعاء wget لتمرير كافة المعلمات إلى القناة.
هنا مقتطف من /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 smsbox بالإعلام عن تلقيه طلب HTTP من Wget وأنه قام بإرسال هذا الطلب إلى مربع المراقبة لتسليم رسائل 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
2013-11-30 22:39:47 [18184] [5] INFO: sendsms sender:<tester:12345>
(192.168.112.100) to:<4850xxxxxxx> msg: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
يتصل مربع قناة قناة كانيل بخادم 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: 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: 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: 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: 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:
يوفر هذا القسم معلومات يمكنك إستخدامها لاستكشاف أخطاء التكوين وإصلاحها.
قد تواجه هذا الخطأ عند إنشاء حساب ضيف: يتعذر إرسال رسالة نصية إلى المستخدمين الضيوف التاليين: xxxx. يجب إضافة عنوان بريدك الإلكتروني إلى صفحة الإعدادات. إذا ظهرت رسالة الخطأ هذه، فتحقق من عنوان البريد الإلكتروني الخاص بالكفيل.
المراجعة | تاريخ النشر | التعليقات |
---|---|---|
1.0 |
04-Dec-2013 |
الإصدار الأولي |