as thought invite messages are routed now correctly to
the public IP of
the UAC.
Now I have another problem. ACK and BYE messages have the same problem.
The loadbalancer(s) are trying to send the messages to the private IP,
which of course does not work.
I thought at least the BYE message is an in-dialog-request, and
therefore it should work ? Do you have an idea how to route this kind
of messages correctly through the LB to the UAC's ?
Hi,
I've solved the problem. No need to answer :D
Best regards, Florian
The
request sent out by the LB still has the Route header. This
indicates that either:
- the load balancer does not detect the domain/IP in the Route
header
as an internal one (alias=....)
- the loose_route function is not called in the LB.
Many thanks ! I did not call loose_route in the LB, I think that will
solve it.
Best regards,
Florian
>
> Florian Meister schrieb:
> > Hi,
> >
> > I'm trying to set up a HA-OBP for both natted and non-natted
users.
> >
> > Atm my setup looks like that:
> >
> >
> > [UAC] <---> (NAT) <---> [LB] <---> [REG + Proxy] <--->
[PSTN GW]
> >
> > At the loadbalancer I use add_path and add_path_received to add a
> path-header to the request sent to the Registrar. (Of course only
for
> register requests). I use a few parameters
for telling the
registrar
> module to use the path header. When looking
in the mysql-db I can
see
the
correct value in the path-field in the location-table.
>
> When getting an invite from the PSTN gateway for one of the UAC's
the
Proxy is adding a route-header according to the
path-value in the
mysql. That seems also correct. Now to my problem:
>
> The loadbalancer is sending out the INVITE to the private-ip, not
to
> the public-nat-ip of the UAC. It seems that the received-parameter
in
> the Route-header is somehow ignored. I am
using the use_received
> parameter in the loadbalancer, but it does not work.
> >
> > In the following you can find the SIP trace (made on the
> loadbalancer) and the loadbalancer config, since I think there is
the
problem.
>
> Thanks,
>
> Florian
>
>
> Here is the SIP-trace of the INVITE:
>
> 09:49:07.785294 IP [Proxy+Registrar].5060 > [Loadbalancer].5060:
SIP,
> length: 1101
> > E..i..@.?.Yb..,F..,+.....U.BINVITE sip:435572949012@[PRIVATE IP
of
> UAC];user=phone SIP/2.0
> > Record-Route: <sip:[Proxy+Registrar];lr;ftag=as33339e2e>
> > Via: SIP/2.0/UDP [Proxy+Registrar];branch=z9hG4bK3d51.bf3830b5.0
> > Via: SIP/2.0/UDP [PSTN
> Gateway]:5060;branch=z9hG4bK521a62f5;rport=5060
> > Route: <sip:[Loadbalancer];lr;received="sip:[PUBLIC NAT IP of
> UAC]:64224">
> > Max-Forwards: 69
> > From: "4366480588134" <sip:4366480588134@[PSTN
> Gateway]>;tag=as33339e2e
> > To: <sip:+435572949012@[Proxy+Registrar]>
> > Contact: <sip:4366480588134@[PSTN Gateway]>
> > Call-ID: 067ebe30188025880d0c9f6e78c1b86d@[PSTN Gateway]
> > CSeq: 102 INVITE
> > User-Agent: Asterisk PBX 1.6.1.5
> > Date: Fri, 25 Sep 2009 07:40:26 GMT
> > Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE,
NOTIFY,
INFO
> Supported: replaces, timer
> Content-Type: application/sdp
> Content-Length: 312
>
> v=0
> o=root 1940822246 1940822246 IN IP4 [PSTN Gateway]
> s=Asterisk PBX 1.6.1.5
> c=IN IP4 [PSTN Gateway]
> t=0 0
> m=audio 19178 RTP/AVP 8 3 0 101
> a=rtpmap:8 PCMA/8000
> a=rtpmap:3 GSM/8000
> a=rtpmap:0 PCMU/8000
> a=rtpmap:101 telephone-event/8000
> a=fmtp:101 0-16
> a=silenceSupp:off - - - -
> a=ptime:20
> a=sendrecv
>
> 09:49:07.786459 IP [Loadbalancer].5060 > [Proxy+Registrar].5060:
SIP,
length: 445
E.....@.@.Z...,+..,F........SIP/2.0 100 Giving a
try
Via: SIP/2.0/UDP
[Proxy+Registrar];branch=z9hG4bK3d51.bf3830b5.0;rport=5060;received=[Pr
> oxy+Registrar]
> > Via: SIP/2.0/UDP [PSTN
> Gateway]:5060;branch=z9hG4bK521a62f5;rport=5060
> > From: "4366480588134" <sip:4366480588134@[PSTN
> Gateway]>;tag=as33339e2e
> > To: <sip:+435572949012@[Proxy+Registrar]>
> > Call-ID: 067ebe30188025880d0c9f6e78c1b86d@[PSTN Gateway]
> > CSeq: 102 INVITE
> > Server: Kamailio (1.5.1-notls (i386/linux))
> > Content-Length: 0
> >
> >
> > 09:49:07.786608 IP [Loadbalancer].5060 > [PRIVATE IP of
UAC].5060:
> SIP, length: 1307
> > E..7..@.@..@..,+.........#>.INVITE sip:435572949012@[PRIVATE IP
of
UAC];user=phone SIP/2.0
Record-Route:
<sip:[Loadbalancer];lr;ftag=as33339e2e;nat=yes>
Record-Route: <sip:[Proxy+Registrar];lr;ftag=as33339e2e>
Via: SIP/2.0/UDP [Loadbalancer];branch=z9hG4bK3d51.207ba0a5.0
Via: SIP/2.0/UDP
[Proxy+Registrar];rport=5060;received=[Proxy+Registrar];branch=z9hG4bK3
> d51.bf3830b5.0
> > Via: SIP/2.0/UDP [PSTN
> Gateway]:5060;branch=z9hG4bK521a62f5;rport=5060
> > Route: <sip:[Loadbalancer];lr;received="sip:[PUBLIC NAT IP of
> UAC]:64224">
> > Max-Forwards: 68
> > From: "4366480588134" <sip:4366480588134@[PSTN
> Gateway]>;tag=as33339e2e
> > To: <sip:+435572949012@[Proxy+Registrar]>
> > Contact: <sip:4366480588134@[PSTN Gateway]>
> > Call-ID: 067ebe30188025880d0c9f6e78c1b86d@[PSTN Gateway]
> > CSeq: 102 INVITE
> > User-Agent: Asterisk PBX 1.6.1.5
> > Date: Fri, 25 Sep 2009 07:40:26 GMT
> > Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE,
NOTIFY,
> INFO
> > Supported: replaces, timer
> > Content-Type: application/sdp
> > Content-Length: 330
> > Path: <sip:[Loadbalancer];lr>
> >
> > v=0
> > o=root 1940822246 1940822246 IN IP4 [PSTN Gateway]
> > s=Asterisk PBX 1.6.1.5
> > c=IN IP4 [Loadbalancer]
> > t=0 0
> > m=audio 35480 RTP/AVP 8 3 0 101
> > a=rtpmap:8 PCMA/8000
> > a=rtpmap:3 GSM/8000
> > a=rtpmap:0 PCMU/8000
> > a=rtpmap:101 telephone-event/8000
> > a=fmtp:101 0-16
> > a=silenceSupp:off - - - -
> > a=ptime:20
> > a=sendrecv
> > a=nortpproxy:yes
> >
> > 09:49:08.258116 IP [Loadbalancer].5060 > [PRIVATE IP of
UAC].5060:
> SIP, length: 1307
> > E..7..@.@..@..,+.........#>.INVITE sip:435572949012@[PRIVATE IP
of
UAC];user=phone SIP/2.0
Record-Route:
<sip:[Loadbalancer];lr;ftag=as33339e2e;nat=yes>
Record-Route: <sip:[Proxy+Registrar];lr;ftag=as33339e2e>
Via: SIP/2.0/UDP [Loadbalancer];branch=z9hG4bK3d51.207ba0a5.0
Via: SIP/2.0/UDP
[Proxy+Registrar];rport=5060;received=[Proxy+Registrar];branch=z9hG4bK3
> d51.bf3830b5.0
> > Via: SIP/2.0/UDP [PSTN
> Gateway]:5060;branch=z9hG4bK521a62f5;rport=5060
> > Route: <sip:[Loadbalancer];lr;received="sip:[PUBLIC NAT IP of
> UAC]:64224">
> > Max-Forwards: 68
> > From: "4366480588134" <sip:4366480588134@[PSTN
> Gateway]>;tag=as33339e2e
> > To: <sip:+435572949012@[Proxy+Registrar]>
> > Contact: <sip:4366480588134@[PSTN Gateway]>
> > Call-ID: 067ebe30188025880d0c9f6e78c1b86d@[PSTN Gateway]
> > CSeq: 102 INVITE
> > User-Agent: Asterisk PBX 1.6.1.5
> > Date: Fri, 25 Sep 2009 07:40:26 GMT
> > Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE,
NOTIFY,
> INFO
> > Supported: replaces, timer
> > Content-Type: application/sdp
> > Content-Length: 330
> > Path: <sip:[Loadbalancer];lr>
> >
> > v=0
> > o=root 1940822246 1940822246 IN IP4 [PSTN Gateway]
> > s=Asterisk PBX 1.6.1.5
> > c=IN IP4 [Loadbalancer]
> > t=0 0
> > m=audio 35480 RTP/AVP 8 3 0 101
> > a=rtpmap:8 PCMA/8000
> > a=rtpmap:3 GSM/8000
> > a=rtpmap:0 PCMU/8000
> > a=rtpmap:101 telephone-event/8000
> > a=fmtp:101 0-16
> > a=silenceSupp:off - - - -
> > a=ptime:20
> > a=sendrecv
> > a=nortpproxy:yes
> >
> > 09:49:09.258109 IP [Loadbalancer].5060 > [PRIVATE IP of
UAC].5060:
> SIP, length: 1307
> > E..7..@.@..@..,+.........#>.INVITE sip:435572949012@[PRIVATE IP
of
UAC];user=phone SIP/2.0
Record-Route:
<sip:[Loadbalancer];lr;ftag=as33339e2e;nat=yes>
Record-Route: <sip:[Proxy+Registrar];lr;ftag=as33339e2e>
Via: SIP/2.0/UDP [Loadbalancer];branch=z9hG4bK3d51.207ba0a5.0
Via: SIP/2.0/UDP
[Proxy+Registrar];rport=5060;received=[Proxy+Registrar];branch=z9hG4bK3
> d51.bf3830b5.0
> > Via: SIP/2.0/UDP [PSTN
> Gateway]:5060;branch=z9hG4bK521a62f5;rport=5060
> > Route: <sip:[Loadbalancer];lr;received="sip:[PUBLIC NAT IP of
> UAC]:64224">
> > Max-Forwards: 68
> > From: "4366480588134" <sip:4366480588134@[PSTN
> Gateway]>;tag=as33339e2e
> > To: <sip:+435572949012@[Proxy+Registrar]>
> > Contact: <sip:4366480588134@[PSTN Gateway]>
> > Call-ID: 067ebe30188025880d0c9f6e78c1b86d@[PSTN Gateway]
> > CSeq: 102 INVITE
> > User-Agent: Asterisk PBX 1.6.1.5
> > Date: Fri, 25 Sep 2009 07:40:26 GMT
> > Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE,
NOTIFY,
> INFO
> > Supported: replaces, timer
> > Content-Type: application/sdp
> > Content-Length: 330
> > Path: <sip:[Loadbalancer];lr>
> >
> > v=0
> > o=root 1940822246 1940822246 IN IP4 [PSTN Gateway]
> > s=Asterisk PBX 1.6.1.5
> > c=IN IP4 [Loadbalancer]
> > t=0 0
> > m=audio 35480 RTP/AVP 8 3 0 101
> > a=rtpmap:8 PCMA/8000
> > a=rtpmap:3 GSM/8000
> > a=rtpmap:0 PCMU/8000
> > a=rtpmap:101 telephone-event/8000
> > a=fmtp:101 0-16
> > a=silenceSupp:off - - - -
> > a=ptime:20
> > a=sendrecv
> > a=nortpproxy:yes
> >
> > 09:49:11.258107 IP [Loadbalancer].5060 > [PRIVATE IP of
UAC].5060:
> SIP, length: 1307
> > E..7..@.@..@..,+.........#>.INVITE sip:435572949012@[PRIVATE IP
of
UAC];user=phone SIP/2.0
Record-Route:
<sip:[Loadbalancer];lr;ftag=as33339e2e;nat=yes>
Record-Route: <sip:[Proxy+Registrar];lr;ftag=as33339e2e>
Via: SIP/2.0/UDP [Loadbalancer];branch=z9hG4bK3d51.207ba0a5.0
Via: SIP/2.0/UDP
[Proxy+Registrar];rport=5060;received=[Proxy+Registrar];branch=z9hG4bK3
> d51.bf3830b5.0
> > Via: SIP/2.0/UDP [PSTN
> Gateway]:5060;branch=z9hG4bK521a62f5;rport=5060
> > Route: <sip:[Loadbalancer];lr;received="sip:[PUBLIC NAT IP of
> UAC]:64224">
> > Max-Forwards: 68
> > From: "4366480588134" <sip:4366480588134@[PSTN
> Gateway]>;tag=as33339e2e
> > To: <sip:+435572949012@[Proxy+Registrar]>
> > Contact: <sip:4366480588134@[PSTN Gateway]>
> > Call-ID: 067ebe30188025880d0c9f6e78c1b86d@[PSTN Gateway]
> > CSeq: 102 INVITE
> > User-Agent: Asterisk PBX 1.6.1.5
> > Date: Fri, 25 Sep 2009 07:40:26 GMT
> > Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE,
NOTIFY,
INFO
> Supported: replaces, timer
> Content-Type: application/sdp
> Content-Length: 330
> Path: <sip:[Loadbalancer];lr>
>
> v=0
> o=root 1940822246 1940822246 IN IP4 [PSTN Gateway]
> s=Asterisk PBX 1.6.1.5
> c=IN IP4 [Loadbalancer]
> t=0 0
> m=audio 35480 RTP/AVP 8 3 0 101
> a=rtpmap:8 PCMA/8000
> a=rtpmap:3 GSM/8000
> a=rtpmap:0 PCMU/8000
> a=rtpmap:101 telephone-event/8000
> a=fmtp:101 0-16
> a=silenceSupp:off - - - -
> a=ptime:20
> a=sendrecv
> a=nortpproxy:yes
>
> 09:49:15.023388 IP [Proxy+Registrar].5060 > [Loadbalancer].5060:
SIP,
> length: 397
> > E.....@.?.\"..,F..,+......a.CANCEL sip:435572949012@[PRIVATE IP
of
UAC];user=phone SIP/2.0
Via: SIP/2.0/UDP
[Proxy+Registrar];branch=z9hG4bK3d51.bf3830b5.0
From: "4366480588134" <sip:4366480588134@[PSTN
Gateway]>;tag=as33339e2e
> Call-ID: 067ebe30188025880d0c9f6e78c1b86d@[PSTN Gateway]
> To: <sip:+435572949012@[Proxy+Registrar]>
> CSeq: 102 CANCEL
> Max-Forwards: 70
> User-Agent: OpenSER (1.3.2-notls (x86_64/linux))
> Content-Length: 0
>
>
> 09:49:15.024138 IP [Loadbalancer].5060 > [Proxy+Registrar].5060:
SIP,
length: 413
E.....@.@.[...,+..,F........SIP/2.0 200
canceling
Via: SIP/2.0/UDP
[Proxy+Registrar];branch=z9hG4bK3d51.bf3830b5.0;rport=5060;received=[Pr
oxy+Registrar]
From: "4366480588134"
<sip:4366480588134@[PSTN
Gateway]>;tag=as33339e2e
Call-ID: 067ebe30188025880d0c9f6e78c1b86d@[PSTN
Gateway]
To:
<sip:+435572949012@[Proxy+Registrar]>;tag=77b8b5897dbef36847302656cec98
25e-db87
> CSeq: 102 CANCEL
> Server: Kamailio (1.5.1-notls (i386/linux))
> Content-Length: 0
>
>
> 09:49:15.024576 IP [Loadbalancer].5060 > [Proxy+Registrar].5060:
SIP,
length: 493
E.. ..@.@.Z...,+..,F........SIP/2.0 487
Request Terminated
Via: SIP/2.0/UDP
[Proxy+Registrar];branch=z9hG4bK3d51.bf3830b5.0;rport=5060;received=[Pr
oxy+Registrar]
Via: SIP/2.0/UDP [PSTN
Gateway]:5060;branch=z9hG4bK521a62f5;rport=5060
From: "4366480588134"
<sip:4366480588134@[PSTN
Gateway]>;tag=as33339e2e
To:
<sip:+435572949012@[Proxy+Registrar]>;tag=77b8b5897dbef36847302656cec98
25e-db87
> Call-ID: 067ebe30188025880d0c9f6e78c1b86d@[PSTN Gateway]
> CSeq: 102 INVITE
> Server: Kamailio (1.5.1-notls (i386/linux))
> Content-Length: 0
>
>
> 09:49:15.025180 IP [Proxy+Registrar].5060 > [Loadbalancer].5060:
SIP,
length: 433
E.....@.?.[...,F..,+.......MACK
sip:435572949012@[PRIVATE IP of
UAC];user=phone SIP/2.0
Via: SIP/2.0/UDP
[Proxy+Registrar];branch=z9hG4bK3d51.bf3830b5.0
From: "4366480588134" <sip:4366480588134@[PSTN
Gateway]>;tag=as33339e2e
Call-ID: 067ebe30188025880d0c9f6e78c1b86d@[PSTN
Gateway]
To:
<sip:+435572949012@[Proxy+Registrar]>;tag=77b8b5897dbef36847302656cec98
> 25e-db87
> > CSeq: 102 ACK
> > Max-Forwards: 70
> > User-Agent: OpenSER (1.3.2-notls (x86_64/linux))
> > Content-Length: 0
> >
> >
> > ----------------This is the config of my loadbalancer------------
--
--
> ----:
> >
> > ####### Global Parameters #########
> >
> > debug=100
> > log_stderror=yes
> > log_facility=LOG_LOCAL0
> >
> > fork=no
> > children=4
> >
> > disable_tcp=yes
> >
> > port=5060
> >
> > listen=[Loadbalancer]
> >
> > ####### Modules Section ########
> >
> > mpath="/usr/lib/kamailio/modules/"
> >
> > loadmodule "mi_fifo.so"
> > loadmodule "sl.so"
> > loadmodule "tm.so"
> > loadmodule "rr.so"
> > loadmodule "pv.so"
> > loadmodule "maxfwd.so"
> > loadmodule "textops.so"
> > loadmodule "siputils.so"
> > loadmodule "xlog.so"
> > loadmodule "nathelper.so"
> > loadmodule "dispatcher.so"
> > loadmodule "path.so"
> >
> > # ----------------- setting module-specific parameters ----------
--
--
-
# ----- mi_fifo params -----
modparam("mi_fifo", "fifo_name", "/tmp/kamailio_fifo")
# ----- rr params -----
# add value to ;lr param to cope with most of the UAs
#modparam("rr", "enable_full_lr", 1)
# do not append from tag to the RR (no need for this script)
#modparam("rr", "append_fromtag", 0)
# -- nathelper
modparam("nathelper", "rtpproxy_sock",
"/var/run/rtpproxy/rtpproxy.sock")
> modparam("nathelper", "received_avp", "$avp(i:80)")
>
> # -- dispatcher params --
> modparam("dispatcher", "list_file",
"/etc/kamailio/dispatcher.list")
> >
> > # -- path params --
> > modparam("path", "use_received", 1)
> >
> > ####### Routing Logic ########
> >
> >
> > # main request routing logic
> >
> > route{
> > xlog("L_ALERT", "[$rm] from [$fu] to [$tu]\n");
> > if (!mf_process_maxfwd_header("10")) {
> > sl_send_reply("483","Too Many Hops");
> > exit;
> > }
> >
> > # NAT detection
> > route(4);
> >
> > if (has_totag()) {
> > xlog("L_ALERT", "_____HASTOTAG [$rm] from [$fu]
to
[$tu]\n");
> # sequential request withing a dialog should
> # take the path determined by record-routing
> if (loose_route()) {
> xlog("L_ALERT", "_____LOOSE_ROUTE [$rm]
from
> [$fu] to [$tu]\n");
> > t_relay();
> > exit;
> > } else {
> > if ( is_method("ACK") ) {
> > if ( t_check_trans() ) {
> > xlog("L_ALERT",
"_____NON-
> > LOOSE, STATEFUL-ACK [$rm] from [$fu] to [$tu]\n");
> > > # non loose-route, but
> > stateful ACK; must be an ACK after a 487 or e.g. 404 from upstream
> > server
> > > t_relay();
> > > exit;
> > > } else {
> > > xlog("L_ALERT",
> > "_____ACK_WITHOUT_TRANSACTION [$rm] from [$fu] to [$tu]\n");
> > > # ACK without matching
> > transaction ... ignore and discard.\n");
> > > exit;
> > > }
> > > }
> > > sl_send_reply("404","Not
here");
> > > }
> > > exit;
> > > }
> > >
> > > #initial requests
> > >
> > > # CANCEL processing
> > > if (is_method("CANCEL"))
> > > {
> > > if (t_check_trans())
> > > t_relay();
> > > exit;
> > > }
> > >
> > > t_check_trans();
> > >
> > > # record routing
> > > if (!is_method("REGISTER|MESSAGE"))
> > > xlog("L_ALERT", "_____RECORD_ROUTING [$rm]
from
> [$fu]
> > to [$tu]\n");
> > > record_route();
> > >
> > > #if ($rU==NULL) {
> > > # # request with no Username in RURI
> > > # sl_send_reply("484","Address
Incomplete");
> > > # exit;
> > > #}
> > >
> > > if (check_route_param("nat=yes")) {
> > > setbflag(6);
> > > }
> > > #if (isflagset(5) || isbflagset(6)) {
> > > route(5);
> > > #}
> > >
> > > /* example how to enable some additional event routes */
> > > if (is_method("INVITE")) {
> > > t_on_reply("1");
> > > t_on_failure("1");
> > > }
> > >
> > > if(!ds_is_from_list()) {
> > > ds_select_domain("0", "0");
> > > }
> > > if (!t_relay()) {
> > > sl_reply_error();
> > > }
> > > }
> > >
> > >
> > > # Caller NAT detection route
> > > route[4]{
> > > force_rport();
> > > if (nat_uac_test("19")) {
> > > if (method=="REGISTER") {
> > > add_path_received();
> > > fix_nated_register();
> > > } else {
> > > fix_nated_contact();
> > > }
> > > setflag(5);
> > > }
> > > else {
> > > add_path();
> > > }
> > > return;
> > > }
> > >
> > > # RTPProxy control
> > > route[5] {
> > > if (is_method("BYE")) {
> > > unforce_rtp_proxy();
> > > } else if (is_method("INVITE")){
> > > force_rtp_proxy();
> > > }
> > > if (!has_totag()) add_rr_param(";nat=yes");
> > > return;
> > > }
> > >
> > > onreply_route[1] {
> > > xdbg("incoming reply\n");
> > >
> > > #if ((isflagset(5) || isbflagset(6)) &&
> status=~"(183)|(2[0-
> > 9][0-9])") {
> > > if (status=~"(183)|(2[0-9][0-9])") {
> > > force_rtp_proxy();
> > > }
> > > if (isbflagset(6)) {
> > > fix_nated_contact();
> > > }
> > > }
> > >
> > > failure_route[1] {
> > > #if (is_method("INVITE") && (isbflagset(6) ||
> isflagset(5)))
> > {
> > > if (is_method("INVITE")) {
> > > unforce_rtp_proxy();
> > > }
> > >
> > > if (t_was_cancelled()) {
> > > exit;
> > > }
> > > }
> > >
> > >
> > >
> > >
> > > _______________________________________________
> > > Kamailio (OpenSER) - Users mailing list
> > > Users(a)lists.kamailio.org
> > >
http://lists.kamailio.org/cgi-bin/mailman/listinfo/users
> > >
http://lists.openser-project.org/cgi-bin/mailman/listinfo/users
>
> _______________________________________________
> Kamailio (OpenSER) - Users mailing list
> Users(a)lists.kamailio.org
>
http://lists.kamailio.org/cgi-bin/mailman/listinfo/users
>
http://lists.openser-project.org/cgi-bin/mailman/listinfo/users