sorry for again and again because my mail seems to be unreadable
Pls help me to config ser.cfg Now my envirmonet is: ser server: 172.16.255.1:5060 ( without DNS server ) SIP PSTN gateway: 172.16.255.1:6050 SIP UA: 172.16.2.xx And all SIP UAs have a PSTN number like 6169xxxx
There are no DNS server in the system.(we don't apply for a domain name) I want: 1 All users use digest authorization when SIP UA registing ------ finished 2 All calls from SIP UA need authorization (return 407 to Invite request) 3 All calls to PSTN transfer to the SIP PSTN gateway(number no like "6169xxxx") -------- almost finished 3 All calls from the SIP PSTN gateway do not need authorization(I think use a caller sip:gateway@172.16.255.1:6050 as caller when call from gateway,then all call from this user and this ip address needn't authorazation) 4 All calls need write CDR record to mysq datebase The bigest problem is I don't know how to write conditonal sentence , like if(uri!=~"xxxx") or if((uri=="xxxx") | (uri=="yyyy")) There are no document talking about the syntax.
Please help me. Any help is appreciate.
Now my ser.cfg is:
# # $Id: ser.cfg,v 1.21.2.1 2003/07/30 16:46:18 andrei Exp $ # # simple quick-start config script #
# ----------- global configuration parameters ------------------------
#debug=3 # debug level (cmd line: -dddddddddd) #fork=yes #log_stderror=no # (cmd line: -E)
/* Uncomment these lines to enter debugging mode debug=7 fork=no log_stderror=yes */
debug=7 log_stderror=yes
check_via=no # (cmd. line: -v) dns=no # (cmd. line: -r) rev_dns=no # (cmd. line: -R) #port=5060 #children=4 fifo="/tmp/ser_fifo"
# ------------------ module loading ----------------------------------
# Uncomment this if you want to use SQL database loadmodule "/usr/lib/ser/modules/mysql.so"
loadmodule "/usr/lib/ser/modules/sl.so" loadmodule "/usr/lib/ser/modules/tm.so" loadmodule "/usr/lib/ser/modules/rr.so" loadmodule "/usr/lib/ser/modules/maxfwd.so" loadmodule "/usr/lib/ser/modules/usrloc.so" loadmodule "/usr/lib/ser/modules/registrar.so"
# Uncomment this if you want digest authentication # mysql.so must be loaded ! loadmodule "/usr/lib/ser/modules/auth.so" loadmodule "/usr/lib/ser/modules/auth_db.so"
# ----------------- setting module-specific parameters ---------------
# -- usrloc params --
modparam("usrloc", "db_mode", 0)
# Uncomment this if you want to use SQL database # for persistent storage and comment the previous line modparam("usrloc", "db_mode", 2)
# -- auth params -- # Uncomment if you are using auth module # modparam("auth_db", "calculate_ha1", yes) # # If you set "calculate_ha1" parameter to yes (which true in this config), # uncomment also the following parameter) # modparam("auth_db", "password_column", "password")
# -- rr params -- # add value to ;lr param to make some broken UAs happy modparam("rr", "enable_full_lr", 1)
# ------------------------- request routing logic -------------------
# main routing logic
route{ # initial sanity checks -- messages with # max_forwards==0, or excessively long requests # if (!mf_process_maxfwd_header("10")) { # sl_send_reply("483","Too Many Hops"); # break; # };
if (len_gt( max_len )) { sl_send_reply("513", "Message too big"); break; };
# we record-route all messages -- to make sure that # subsequent messages will go through our proxy; that's # particularly good if upstream and downstream entities # use different transport protocol record_route(); # loose-route processing if (loose_route()) { t_relay(); break; };
# if the request is for other domain use UsrLoc # (in case, it does not work, use the following command # with proper names and addresses in it) if (uri==myself) {
if (method=="REGISTER") { # Uncomment this if you want to use digest authentication if (!www_authorize("novsky.com", "subscriber")) { www_challenge("novsky.com", "0"); break; };
save("location"); break; };
# native SIP destinations are handled using our USRLOC DB # if (!lookup("location")) { # if(uri=~"^sip:6169*@") { # forward(172.16.255.1,6050); # break; # }; # else { # sl_send_reply("404", "Not Found"); # break; # }; # };
if(uri=~"^sip:6169[0-9]*@[0-9|.]*") { if(!lookup("location")) { sl_send_reply("404", "Not Found"); break; }; };
forward(172.16.255.1,6050); break; }; # forward to current uri now; use stateful forwarding; that # works reliably even if we forward from TCP to UDP if (!t_relay()) { sl_reply_error(); };
}
Best regards
wangji
Hello,
Unfortunately we cannot write the entire configuration file for you, you should try yourself and ask for advice on particular problems, then we can help you. Maybe somebody else on the list have similar configuration and might send you the configuration script.
Also, read the following documentation:
SIP introduction: http://iptel.org/ser/doc/sip_intro/sip_introduction.html
Dan Austin's howto: http://iptel.org/ser/doc/ser-howto/ser-Howto.html
Administrator's guide: http://iptel.org/ser/doc/seruser/seruser.html
SER Wiki page: http://www.voip-info.org/wiki-SER+tips+and+tricks
The documentation covers everything you are going to need.
Also take a look at the mailing list archives because most of the stuff has been covered already.
You can search through the archives using google. For example if you were looking for mails related to accounting then you can type "accounting site:mail.iptel.org".
Also make yourself familiar with the ngrep utility, the utility can make dumps of SIP messages.
Jan.
On 26-11 12:09, xwang@novsky.com wrote:
sorry for again and again because my mail seems to be unreadable
Pls help me to config ser.cfg Now my envirmonet is: ser server: 172.16.255.1:5060 ( without DNS server ) SIP PSTN gateway: 172.16.255.1:6050 SIP UA: 172.16.2.xx And all SIP UAs have a PSTN number like 6169xxxx
There are no DNS server in the system.(we don't apply for a domain name) I want: 1 All users use digest authorization when SIP UA registing ------ finished 2 All calls from SIP UA need authorization (return 407 to Invite request) 3 All calls to PSTN transfer to the SIP PSTN gateway(number no like "6169xxxx") -------- almost finished 3 All calls from the SIP PSTN gateway do not need authorization(I think use a caller sip:gateway@172.16.255.1:6050 as caller when call from gateway,then all call from this user and this ip address needn't authorazation) 4 All calls need write CDR record to mysq datebase The bigest problem is I don't know how to write conditonal sentence , like if(uri!=~"xxxx") or if((uri=="xxxx") | (uri=="yyyy")) There are no document talking about the syntax.
Please help me. Any help is appreciate.
Now my ser.cfg is:
# # $Id: ser.cfg,v 1.21.2.1 2003/07/30 16:46:18 andrei Exp $ # # simple quick-start config script #
# ----------- global configuration parameters ------------------------
#debug=3 # debug level (cmd line: -dddddddddd) #fork=yes #log_stderror=no # (cmd line: -E)
/* Uncomment these lines to enter debugging mode debug=7 fork=no log_stderror=yes */
debug=7 log_stderror=yes
check_via=no # (cmd. line: -v) dns=no # (cmd. line: -r) rev_dns=no # (cmd. line: -R) #port=5060 #children=4 fifo="/tmp/ser_fifo"
# ------------------ module loading ----------------------------------
# Uncomment this if you want to use SQL database loadmodule "/usr/lib/ser/modules/mysql.so"
loadmodule "/usr/lib/ser/modules/sl.so" loadmodule "/usr/lib/ser/modules/tm.so" loadmodule "/usr/lib/ser/modules/rr.so" loadmodule "/usr/lib/ser/modules/maxfwd.so" loadmodule "/usr/lib/ser/modules/usrloc.so" loadmodule "/usr/lib/ser/modules/registrar.so"
# Uncomment this if you want digest authentication # mysql.so must be loaded ! loadmodule "/usr/lib/ser/modules/auth.so" loadmodule "/usr/lib/ser/modules/auth_db.so"
# ----------------- setting module-specific parameters ---------------
# -- usrloc params --
modparam("usrloc", "db_mode", 0)
# Uncomment this if you want to use SQL database # for persistent storage and comment the previous line modparam("usrloc", "db_mode", 2)
# -- auth params -- # Uncomment if you are using auth module # modparam("auth_db", "calculate_ha1", yes) # # If you set "calculate_ha1" parameter to yes (which true in this config), # uncomment also the following parameter) # modparam("auth_db", "password_column", "password")
# -- rr params -- # add value to ;lr param to make some broken UAs happy modparam("rr", "enable_full_lr", 1)
# ------------------------- request routing logic -------------------
# main routing logic
route{ # initial sanity checks -- messages with # max_forwards==0, or excessively long requests # if (!mf_process_maxfwd_header("10")) { # sl_send_reply("483","Too Many Hops"); # break; # };
if (len_gt( max_len )) { sl_send_reply("513", "Message too big"); break; };
# we record-route all messages -- to make sure that # subsequent messages will go through our proxy; that's # particularly good if upstream and downstream entities # use different transport protocol record_route(); # loose-route processing if (loose_route()) { t_relay(); break; };
# if the request is for other domain use UsrLoc # (in case, it does not work, use the following command # with proper names and addresses in it) if (uri==myself) {
if (method=="REGISTER") {
# Uncomment this if you want to use digest authentication if (!www_authorize("novsky.com", "subscriber")) { www_challenge("novsky.com", "0"); break; };
save("location"); break; }; # native SIP destinations are handled using our USRLOC DB
# if (!lookup("location")) { # if(uri=~"^sip:6169*@") { # forward(172.16.255.1,6050); # break; # }; # else { # sl_send_reply("404", "Not Found"); # break; # }; # };
if(uri=~"^sip:6169[0-9]*@[0-9|\.]*") { if(!lookup("location")) { sl_send_reply("404", "Not Found"); break; }; }; forward(172.16.255.1,6050); break;
}; # forward to current uri now; use stateful forwarding; that # works reliably even if we forward from TCP to UDP if (!t_relay()) { sl_reply_error(); };
}
Best regards
wangji _______________________________________________ Serusers mailing list serusers@lists.iptel.org http://lists.iptel.org/mailman/listinfo/serusers
None of your messages is particularly readable. -jiri
At , xwang@novsky.com wrote:
--===============1474182210== Content-type: text/plain Content-Transfer-Encoding: base64
c29ycnkgZm9yIGFnYWluIGFuZCBhZ2FpbiBiZWNhdXNlIG15IG1haWwgc2Vl bXMgdG8gYmUgdW5yZWFkYWJsZQ0KDQoNCg0KUGxzIGhlbHAgbWUgdG8gY29u ZmlnIHNlci5jZmcNCk5vdyBteSBlbnZpcm1vbmV0IGlzOg0Kc2VyIHNlcnZl cjogMTcyLjE2LjI1NS4xOjUwNjAgKCB3aXRob3V0IEROUyBzZXJ2ZXIgKQ0K U0lQIFBTVE4gZ2F0ZXdheTogMTcyLjE2LjI1NS4xOjYwNTANClNJUCBVQTog MTcyLjE2LjIueHgNCkFuZCBhbGwgU0lQIFVBcyBoYXZlIGEgUFNUTiBudW1i ZXIgbGlrZSA2MTY5eHh4eA0KDQogVGhlcmUgYXJlIG5vIEROUyBzZXJ2ZXIg aW4gdGhlIHN5c3RlbS4od2UgZG9uJ3QgYXBwbHkgZm9yIGEgZG9tYWluIG5h bWUpDQogSSB3YW50Og0KIDEgQWxsIHVzZXJzIHVzZSBkaWdlc3QgYXV0aG9y aXphdGlvbiB3aGVuIFNJUCBVQSByZWdpc3RpbmcgLS0tLS0tIGZpbmlzaGVk DQogMiBBbGwgY2FsbHMgZnJvbSBTSVAgVUEgbmVlZCBhdXRob3JpemF0aW9u IChyZXR1cm4gNDA3IHRvIEludml0ZSByZXF1ZXN0KQ0KIDMgQWxsIGNhbGxz IHRvIFBTVE4gdHJhbnNmZXIgdG8gdGhlIFNJUCBQU1ROIGdhdGV3YXkobnVt YmVyIG5vIGxpa2UgIjYxNjl4eHh4IikgICAgLS0tLS0tLS0gYWxtb3N0IGZp bmlzaGVkDQogMyBBbGwgY2FsbHMgZnJvbSB0aGUgU0lQIFBTVE4gZ2F0ZXdh eSBkbyBub3QgbmVlZCBhdXRob3JpemF0aW9uKEkgdGhpbmsgdXNlIGEgY2Fs bGVyIHNpcDpnYXRld2F5QDE3Mi4xNi4yNTUuMTo2MDUwIGFzIGNhbGxlciB3 aGVuIGNhbGwgZnJvbSBnYXRld2F5LHRoZW4gYWxsIGNhbGwgZnJvbSB0aGlz IHVzZXIgYW5kIHRoaXMgaXAgYWRkcmVzcyBuZWVkbid0IGF1dGhvcmF6YXRp b24pIA0KIDQgQWxsIGNhbGxzIG5lZWQgd3JpdGUgQ0RSIHJlY29yZCB0byBt eXNxIGRhdGViYXNlDQpUaGUgYmlnZXN0IHByb2JsZW0gaXMgSSBkb24ndCBr bm93IGhvdyB0byB3cml0ZSBjb25kaXRvbmFsIHNlbnRlbmNlICwgbGlrZQ0K aWYodXJpIT1+Inh4eHgiKQ0Kb3INCmlmKCh1cmk9PSJ4eHh4IikgfCAodXJp PT0ieXl5eSIpKQ0KVGhlcmUgYXJlIG5vIGRvY3VtZW50IHRhbGtpbmcgYWJv dXQgdGhlIHN5bnRheC4NCg0KDQpQbGVhc2UgaGVscCBtZS4gQW55IGhlbHAg aXMgYXBwcmVjaWF0ZS4NCg0KTm93IG15IHNlci5jZmcgaXM6DQoNCg0KIw0K IyAkSWQ6IHNlci5jZmcsdiAxLjIxLjIuMSAyMDAzLzA3LzMwIDE2OjQ2OjE4 IGFuZHJlaSBFeHAgJA0KIw0KIyBzaW1wbGUgcXVpY2stc3RhcnQgY29uZmln IHNjcmlwdA0KIw0KDQojIC0tLS0tLS0tLS0tIGdsb2JhbCBjb25maWd1cmF0 aW9uIHBhcmFtZXRlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCiNk ZWJ1Zz0zICAgICAgICAgIyBkZWJ1ZyBsZXZlbCAoY21kIGxpbmU6IC1kZGRk ZGRkZGRkKQ0KI2Zvcms9eWVzDQojbG9nX3N0ZGVycm9yPW5vCSMgKGNtZCBs aW5lOiAtRSkNCg0KLyogVW5jb21tZW50IHRoZXNlIGxpbmVzIHRvIGVudGVy IGRlYnVnZ2luZyBtb2RlIA0KZGVidWc9Nw0KZm9yaz1ubw0KbG9nX3N0ZGVy cm9yPXllcw0KKi8NCg0KZGVidWc9Nw0KbG9nX3N0ZGVycm9yPXllcw0KDQpj aGVja192aWE9bm8JIyAoY21kLiBsaW5lOiAtdikNCmRucz1ubyAgICAgICAg ICAgIyAoY21kLiBsaW5lOiAtcikNCnJldl9kbnM9bm8gICAgICAjIChjbWQu IGxpbmU6IC1SKQ0KI3BvcnQ9NTA2MA0KI2NoaWxkcmVuPTQNCmZpZm89Ii90 bXAvc2VyX2ZpZm8iDQoNCiMgLS0tLS0tLS0tLS0tLS0tLS0tIG1vZHVsZSBs b2FkaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0K IyBVbmNvbW1lbnQgdGhpcyBpZiB5b3Ugd2FudCB0byB1c2UgU1FMIGRhdGFi YXNlDQpsb2FkbW9kdWxlICIvdXNyL2xpYi9zZXIvbW9kdWxlcy9teXNxbC5z byINCg0KbG9hZG1vZHVsZSAiL3Vzci9saWIvc2VyL21vZHVsZXMvc2wuc28i DQpsb2FkbW9kdWxlICIvdXNyL2xpYi9zZXIvbW9kdWxlcy90bS5zbyINCmxv YWRtb2R1bGUgIi91c3IvbGliL3Nlci9tb2R1bGVzL3JyLnNvIg0KbG9hZG1v ZHVsZSAiL3Vzci9saWIvc2VyL21vZHVsZXMvbWF4ZndkLnNvIg0KbG9hZG1v ZHVsZSAiL3Vzci9saWIvc2VyL21vZHVsZXMvdXNybG9jLnNvIg0KbG9hZG1v ZHVsZSAiL3Vzci9saWIvc2VyL21vZHVsZXMvcmVnaXN0cmFyLnNvIg0KDQoj IFVuY29tbWVudCB0aGlzIGlmIHlvdSB3YW50IGRpZ2VzdCBhdXRoZW50aWNh dGlvbg0KIyBteXNxbC5zbyBtdXN0IGJlIGxvYWRlZCAhDQpsb2FkbW9kdWxl ICIvdXNyL2xpYi9zZXIvbW9kdWxlcy9hdXRoLnNvIg0KbG9hZG1vZHVsZSAi L3Vzci9saWIvc2VyL21vZHVsZXMvYXV0aF9kYi5zbyINCg0KIyAtLS0tLS0t LS0tLS0tLS0tLSBzZXR0aW5nIG1vZHVsZS1zcGVjaWZpYyBwYXJhbWV0ZXJz IC0tLS0tLS0tLS0tLS0tLQ0KDQojIC0tIHVzcmxvYyBwYXJhbXMgLS0NCg0K bW9kcGFyYW0oInVzcmxvYyIsICJkYl9tb2RlIiwgICAwKQ0KDQojIFVuY29t bWVudCB0aGlzIGlmIHlvdSB3YW50IHRvIHVzZSBTUUwgZGF0YWJhc2UgDQoj IGZvciBwZXJzaXN0ZW50IHN0b3JhZ2UgYW5kIGNvbW1lbnQgdGhlIHByZXZp b3VzIGxpbmUNCm1vZHBhcmFtKCJ1c3Jsb2MiLCAiZGJfbW9kZSIsIDIpDQoN CiMgLS0gYXV0aCBwYXJhbXMgLS0NCiMgVW5jb21tZW50IGlmIHlvdSBhcmUg dXNpbmcgYXV0aCBtb2R1bGUNCiMNCm1vZHBhcmFtKCJhdXRoX2RiIiwgImNh bGN1bGF0ZV9oYTEiLCB5ZXMpDQojDQojIElmIHlvdSBzZXQgImNhbGN1bGF0 ZV9oYTEiIHBhcmFtZXRlciB0byB5ZXMgKHdoaWNoIHRydWUgaW4gdGhpcyBj b25maWcpLCANCiMgdW5jb21tZW50IGFsc28gdGhlIGZvbGxvd2luZyBwYXJh bWV0ZXIpDQojDQptb2RwYXJhbSgiYXV0aF9kYiIsICJwYXNzd29yZF9jb2x1 bW4iLCAicGFzc3dvcmQiKQ0KDQojIC0tIHJyIHBhcmFtcyAtLQ0KIyBhZGQg dmFsdWUgdG8gO2xyIHBhcmFtIHRvIG1ha2Ugc29tZSBicm9rZW4gVUFzIGhh cHB5DQptb2RwYXJhbSgicnIiLCAiZW5hYmxlX2Z1bGxfbHIiLCAxKQ0KDQoj IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIHJlcXVlc3Qgcm91dGluZyBs b2dpYyAtLS0tLS0tLS0tLS0tLS0tLS0tDQoNCiMgbWFpbiByb3V0aW5nIGxv Z2ljDQoNCnJvdXRlew0KCSMgaW5pdGlhbCBzYW5pdHkgY2hlY2tzIC0tIG1l c3NhZ2VzIHdpdGgNCgkjIG1heF9mb3J3YXJkcz09MCwgb3IgZXhjZXNzaXZl bHkgbG9uZyByZXF1ZXN0cw0KIwlpZiAoIW1mX3Byb2Nlc3NfbWF4ZndkX2hl YWRlcigiMTAiKSkgew0KIwkJc2xfc2VuZF9yZXBseSgiNDgzIiwiVG9vIE1h bnkgSG9wcyIpOw0KIwkJYnJlYWs7DQojCX07DQoNCglpZiAobGVuX2d0KCBt YXhfbGVuICkpIHsNCgkJc2xfc2VuZF9yZXBseSgiNTEzIiwgIk1lc3NhZ2Ug dG9vIGJpZyIpOw0KCQlicmVhazsNCgl9Ow0KDQoJIyB3ZSByZWNvcmQtcm91 dGUgYWxsIG1lc3NhZ2VzIC0tIHRvIG1ha2Ugc3VyZSB0aGF0DQoJIyBzdWJz ZXF1ZW50IG1lc3NhZ2VzIHdpbGwgZ28gdGhyb3VnaCBvdXIgcHJveHk7IHRo YXQncw0KCSMgcGFydGljdWxhcmx5IGdvb2QgaWYgdXBzdHJlYW0gYW5kIGRv d25zdHJlYW0gZW50aXRpZXMNCgkjIHVzZSBkaWZmZXJlbnQgdHJhbnNwb3J0 IHByb3RvY29sDQoJcmVjb3JkX3JvdXRlKCk7CQ0KCSMgbG9vc2Utcm91dGUg cHJvY2Vzc2luZw0KCWlmIChsb29zZV9yb3V0ZSgpKSB7DQoJCXRfcmVsYXko KTsNCgkJYnJlYWs7DQoJfTsNCg0KCSMgaWYgdGhlIHJlcXVlc3QgaXMgZm9y IG90aGVyIGRvbWFpbiB1c2UgVXNyTG9jDQoJIyAoaW4gY2FzZSwgaXQgZG9l cyBub3Qgd29yaywgdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZA0KCSMgd2l0 aCBwcm9wZXIgbmFtZXMgYW5kIGFkZHJlc3NlcyBpbiBpdCkNCglpZiAodXJp PT1teXNlbGYpIHsNCg0KCQlpZiAobWV0aG9kPT0iUkVHSVNURVIiKSB7DQoj IFVuY29tbWVudCB0aGlzIGlmIHlvdSB3YW50IHRvIHVzZSBkaWdlc3QgYXV0 aGVudGljYXRpb24NCgkJCWlmICghd3d3X2F1dGhvcml6ZSgibm92c2t5LmNv bSIsICJzdWJzY3JpYmVyIikpIHsNCgkJCQl3d3dfY2hhbGxlbmdlKCJub3Zz a3kuY29tIiwgIjAiKTsNCgkJCQlicmVhazsNCgkJCX07DQoNCgkJCXNhdmUo ImxvY2F0aW9uIik7DQoJCQlicmVhazsNCgkJfTsNCg0KCQkjIG5hdGl2ZSBT SVAgZGVzdGluYXRpb25zIGFyZSBoYW5kbGVkIHVzaW5nIG91ciBVU1JMT0Mg REINCiMJCWlmICghbG9va3VwKCJsb2NhdGlvbiIpKSB7DQojCQkJaWYodXJp PX4iXnNpcDo2MTY5KkAiKQl7DQojCQkJCWZvcndhcmQoMTcyLjE2LjI1NS4x LDYwNTApOw0KIwkJCQlicmVhazsNCiMJCQl9Ow0KIwkJCWVsc2UJew0KIwkJ CXNsX3NlbmRfcmVwbHkoIjQwNCIsICJOb3QgRm91bmQiKTsNCiMJCQlicmVh azsNCiMJCQl9Ow0KIwkJfTsNCg0KCQlpZih1cmk9fiJec2lwOjYxNjlbMC05 XSpAWzAtOXxcLl0qIikJew0KCQkJaWYoIWxvb2t1cCgibG9jYXRpb24iKSkJ ew0KCQkJCXNsX3NlbmRfcmVwbHkoIjQwNCIsICJOb3QgRm91bmQiKTsNCgkJ CQlicmVhazsNCgkJCX07DQoJCX07DQoNCgkJZm9yd2FyZCgxNzIuMTYuMjU1 LjEsNjA1MCk7DQoJCWJyZWFrOw0KCX07DQoJIyBmb3J3YXJkIHRvIGN1cnJl bnQgdXJpIG5vdzsgdXNlIHN0YXRlZnVsIGZvcndhcmRpbmc7IHRoYXQNCgkj IHdvcmtzIHJlbGlhYmx5IGV2ZW4gaWYgd2UgZm9yd2FyZCBmcm9tIFRDUCB0 byBVRFANCglpZiAoIXRfcmVsYXkoKSkgew0KCQlzbF9yZXBseV9lcnJvcigp Ow0KCX07DQoNCn0NCg0KDQoNCkJlc3QgcmVnYXJkcw0KDQp3YW5namkg
--===============1474182210== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline
Serusers mailing list serusers@lists.iptel.org http://lists.iptel.org/mailman/listinfo/serusers
--===============1474182210==--
-- Jiri Kuthan http://iptel.org/~jiri/