You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-user@james.apache.org by Phillip Odam <ph...@nitorgroup.com> on 2013/02/11 17:47:37 UTC
Using connectionBacklog
Can anyone confirm successful use of connectionBacklog for the smtp
service on james 3.0 beta4 (or any v3). Successful use of
connectionBacklog for any of the other services e.g. imap, lmtp and pop3
is also of interest as under the covers the code is all common.
Firstly I gather the connectionBacklog setting is controlling the
backlog just as is done in
http://docs.oracle.com/javase/6/docs/api/java/net/ServerSocket.html
Secondly comparing the code
-
http://svn.apache.org/repos/asf/james/protocols/trunk/netty/src/main/java/org/apache/james/protocols/netty/AbstractAsyncServer.java
-
http://svn.apache.org/repos/asf/james/protocols/tags/protocols-1.6.2/netty/src/main/java/org/apache/james/protocols/netty/AbstractAsyncServer.java
reports no differences so apart from the different versions of netty
between beta4 and where beta5 development is there should be no
difference with the backlog between beta4 and the current development
stream.
Changing the connectionBacklog value does cause the startup log entry
(SMTP Service connection backlog is: XXX) to change accordingly, however...
SETUP
-----
connectionBacklog = 1
connectionLimit = 1
TESTING
-------
With two command lines, use telnet to connect to the smtp service, the
first telnet instance will establish a connection.
The second instance reports back immediately that a connection can not
be established, whereas I would expect the second instance to hang and
either establish a connection when the first telnet instance disconnects
or a timeout occurs.
Testing thus far has not been in a controlled environment so the backlog
issue may well not be with james, but before I go much further I wanted
to see what anyone else out there is seeing.
Thanks
Phillip
---------------------------------------------------------------------
To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
For additional commands, e-mail: server-user-help@james.apache.org
Re: Using connectionBacklog
Posted by Phillip Odam <ph...@nitorgroup.com>.
Hi Eric
Yes, I've had a look over the netty documentation and the james source
code for setting up the connection and like you've pointed out the
setting of the backlog.
What I'm still puzzling over is how the setting for controlling the
maximum length of the queue of pending connections is set.
I've not spotted anything in the netty documentation describing the
purpose of the backlog option but going by numerous other network
applications e.g. Apache HTTPD the ListenBacklog directive does exactly
as I'd expect of a backlog.
So far though, I've not found what effect the backlog set in netty by
james is doing... Nothing in the james source code appears to be
incorrectly setting the backlog so I'm thinking the next step may just
be to knock together a basic test app to determine whether it's a bug in
that version of netty or ... wherever the investigation takes me.
Thanks
Phillip
On 2/13/13 1:25 AM, Eric Charles wrote:
> Hi Philipp,
>
> James creates the Netty ServerBootstrap [1] given the option
> connectionBacklog ( bootstrap.setOption("backlog", backlog);)
>
> It also add to the Netty pipeline a ConnectionLimitUpstreamHandler [2]
> that controls with a map the simultaneous connections [2]
>
> Does it makes sense?
>
> Thx, Eric
>
> [1]
> http://static.netty.io/3.6/api/org/jboss/netty/bootstrap/ServerBootstrap.html
>
>
> [2]
> https://svn.apache.org/repos/asf/james/protocols/trunk/netty/src/main/java/org/apache/james/protocols/netty/ConnectionLimitUpstreamHandler.java
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
For additional commands, e-mail: server-user-help@james.apache.org
Re: Using connectionBacklog
Posted by Eric Charles <er...@apache.org>.
Hi Philipp,
James creates the Netty ServerBootstrap [1] given the option
connectionBacklog ( bootstrap.setOption("backlog", backlog);)
It also add to the Netty pipeline a ConnectionLimitUpstreamHandler [2]
that controls with a map the simultaneous connections [2]
Does it makes sense?
Thx, Eric
[1]
http://static.netty.io/3.6/api/org/jboss/netty/bootstrap/ServerBootstrap.html
[2]
https://svn.apache.org/repos/asf/james/protocols/trunk/netty/src/main/java/org/apache/james/protocols/netty/ConnectionLimitUpstreamHandler.java
On 12/02/2013 16:12, Phillip Odam wrote:
> Hi Eric
>
> Thanks so much for the once again speedy reply.
>
> I must be missing something here. Are you saying the purpose of the
> backlog is not to control the maximum length of the queue of pending
> connections?
>
> I have never programmed with netty but having directly used the java
> class ServerSocket, my understanding of backlog is along the line of the
> Java runtime documentation/implementation. I had assumed based on the
> terminology around james and for that matter netty, that connection
> limit would refer to the maximum number of active connections allowed to
> the server. Whereas connection backlog is a holding place for pending
> connections when the connection limit is exceeded.
>
> From what I've seen so far on netty and it's use I was of the
> understanding that their use of backlog was in line with mine.
>
> Thanks
> Phillip
>
> On 2/12/13 10:17 AM, Eric Charles wrote:
>> Hi Phillip,
>>
>> It is rejected because you set connectionLimit=1.
>>
>> connectionBacklog and connectionLimit are two different technical way to
>> achieve the same goal. That's not ideal, but allows to configure in
>> different ways.
>>
>> In you case, you will need to also set connectionLimit to 200.
>>
>> Thx, Eric
>>
>>
>> On 12/02/2013 15:11, Phillip Odam wrote:
>>> Thanks for the response Eric.
>>>
>>> I must admit I had thought the backlog count would not include the
>>> current connections. However when testing I also tried a greater number
>>> for backlog e.g.
>>>
>>> connectionBacklog = 200
>>> connectionLimit = 1
>>>
>>> And I'm still only able to make one connection and all subsequent
>>> connections are immediately rejected. Has anyone seen backlog working in
>>> james?
>>>
>>> Phillip
>>>
>>> On 2/12/13 1:46 AM, Eric Charles wrote:
>>>> Hi,
>>>>
>>>> If you set backlog=1, the socket can not queue more than one request at
>>>> a time. So if the socket is already busy with one connection, a second
>>>> connection request will be simply rejected. The backlog property is
>>>> given to netty for its bootstrap.
>>>>
>>>> The connectionLimit is implemented with Netty handlers which rejects
>>>> connection if you have already more open connection than the given
>>>> number.
>>>>
>>>> Thx, Eric
>>>>
>>>>
>>>> On 11/02/2013 16:47, Phillip Odam wrote:
>>>>> Can anyone confirm successful use of connectionBacklog for the smtp
>>>>> service on james 3.0 beta4 (or any v3). Successful use of
>>>>> connectionBacklog for any of the other services e.g. imap, lmtp and
>>>>> pop3
>>>>> is also of interest as under the covers the code is all common.
>>>>>
>>>>> Firstly I gather the connectionBacklog setting is controlling the
>>>>> backlog just as is done in
>>>>> http://docs.oracle.com/javase/6/docs/api/java/net/ServerSocket.html
>>>>>
>>>>> Secondly comparing the code
>>>>> -
>>>>> http://svn.apache.org/repos/asf/james/protocols/trunk/netty/src/main/java/org/apache/james/protocols/netty/AbstractAsyncServer.java
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> -
>>>>> http://svn.apache.org/repos/asf/james/protocols/tags/protocols-1.6.2/netty/src/main/java/org/apache/james/protocols/netty/AbstractAsyncServer.java
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> reports no differences so apart from the different versions of netty
>>>>> between beta4 and where beta5 development is there should be no
>>>>> difference with the backlog between beta4 and the current development
>>>>> stream.
>>>>>
>>>>>
>>>>> Changing the connectionBacklog value does cause the startup log entry
>>>>> (SMTP Service connection backlog is: XXX) to change accordingly,
>>>>> however...
>>>>>
>>>>> SETUP
>>>>> -----
>>>>>
>>>>> connectionBacklog = 1
>>>>> connectionLimit = 1
>>>>>
>>>>> TESTING
>>>>> -------
>>>>>
>>>>> With two command lines, use telnet to connect to the smtp service, the
>>>>> first telnet instance will establish a connection.
>>>>>
>>>>> The second instance reports back immediately that a connection can not
>>>>> be established, whereas I would expect the second instance to hang and
>>>>> either establish a connection when the first telnet instance
>>>>> disconnects
>>>>> or a timeout occurs.
>>>>>
>>>>>
>>>>> Testing thus far has not been in a controlled environment so the
>>>>> backlog
>>>>> issue may well not be with james, but before I go much further I
>>>>> wanted
>>>>> to see what anyone else out there is seeing.
>>>>>
>>>>> Thanks
>>>>> Phillip
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>>>>> For additional commands, e-mail: server-user-help@james.apache.org
>>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>>>> For additional commands, e-mail: server-user-help@james.apache.org
>>>>
>>>>
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>>> For additional commands, e-mail: server-user-help@james.apache.org
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>> For additional commands, e-mail: server-user-help@james.apache.org
>>
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
> For additional commands, e-mail: server-user-help@james.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
For additional commands, e-mail: server-user-help@james.apache.org
Re: Using connectionBacklog
Posted by Phillip Odam <ph...@nitorgroup.com>.
Hi Eric
Thanks so much for the once again speedy reply.
I must be missing something here. Are you saying the purpose of the
backlog is not to control the maximum length of the queue of pending
connections?
I have never programmed with netty but having directly used the java
class ServerSocket, my understanding of backlog is along the line of the
Java runtime documentation/implementation. I had assumed based on the
terminology around james and for that matter netty, that connection
limit would refer to the maximum number of active connections allowed to
the server. Whereas connection backlog is a holding place for pending
connections when the connection limit is exceeded.
From what I've seen so far on netty and it's use I was of the
understanding that their use of backlog was in line with mine.
Thanks
Phillip
On 2/12/13 10:17 AM, Eric Charles wrote:
> Hi Phillip,
>
> It is rejected because you set connectionLimit=1.
>
> connectionBacklog and connectionLimit are two different technical way to
> achieve the same goal. That's not ideal, but allows to configure in
> different ways.
>
> In you case, you will need to also set connectionLimit to 200.
>
> Thx, Eric
>
>
> On 12/02/2013 15:11, Phillip Odam wrote:
>> Thanks for the response Eric.
>>
>> I must admit I had thought the backlog count would not include the
>> current connections. However when testing I also tried a greater number
>> for backlog e.g.
>>
>> connectionBacklog = 200
>> connectionLimit = 1
>>
>> And I'm still only able to make one connection and all subsequent
>> connections are immediately rejected. Has anyone seen backlog working in
>> james?
>>
>> Phillip
>>
>> On 2/12/13 1:46 AM, Eric Charles wrote:
>>> Hi,
>>>
>>> If you set backlog=1, the socket can not queue more than one request at
>>> a time. So if the socket is already busy with one connection, a second
>>> connection request will be simply rejected. The backlog property is
>>> given to netty for its bootstrap.
>>>
>>> The connectionLimit is implemented with Netty handlers which rejects
>>> connection if you have already more open connection than the given
>>> number.
>>>
>>> Thx, Eric
>>>
>>>
>>> On 11/02/2013 16:47, Phillip Odam wrote:
>>>> Can anyone confirm successful use of connectionBacklog for the smtp
>>>> service on james 3.0 beta4 (or any v3). Successful use of
>>>> connectionBacklog for any of the other services e.g. imap, lmtp and
>>>> pop3
>>>> is also of interest as under the covers the code is all common.
>>>>
>>>> Firstly I gather the connectionBacklog setting is controlling the
>>>> backlog just as is done in
>>>> http://docs.oracle.com/javase/6/docs/api/java/net/ServerSocket.html
>>>>
>>>> Secondly comparing the code
>>>> -
>>>> http://svn.apache.org/repos/asf/james/protocols/trunk/netty/src/main/java/org/apache/james/protocols/netty/AbstractAsyncServer.java
>>>>
>>>>
>>>>
>>>>
>>>> -
>>>> http://svn.apache.org/repos/asf/james/protocols/tags/protocols-1.6.2/netty/src/main/java/org/apache/james/protocols/netty/AbstractAsyncServer.java
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> reports no differences so apart from the different versions of netty
>>>> between beta4 and where beta5 development is there should be no
>>>> difference with the backlog between beta4 and the current development
>>>> stream.
>>>>
>>>>
>>>> Changing the connectionBacklog value does cause the startup log entry
>>>> (SMTP Service connection backlog is: XXX) to change accordingly,
>>>> however...
>>>>
>>>> SETUP
>>>> -----
>>>>
>>>> connectionBacklog = 1
>>>> connectionLimit = 1
>>>>
>>>> TESTING
>>>> -------
>>>>
>>>> With two command lines, use telnet to connect to the smtp service, the
>>>> first telnet instance will establish a connection.
>>>>
>>>> The second instance reports back immediately that a connection can not
>>>> be established, whereas I would expect the second instance to hang and
>>>> either establish a connection when the first telnet instance
>>>> disconnects
>>>> or a timeout occurs.
>>>>
>>>>
>>>> Testing thus far has not been in a controlled environment so the
>>>> backlog
>>>> issue may well not be with james, but before I go much further I wanted
>>>> to see what anyone else out there is seeing.
>>>>
>>>> Thanks
>>>> Phillip
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>>>> For additional commands, e-mail: server-user-help@james.apache.org
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>>> For additional commands, e-mail: server-user-help@james.apache.org
>>>
>>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>> For additional commands, e-mail: server-user-help@james.apache.org
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
> For additional commands, e-mail: server-user-help@james.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
For additional commands, e-mail: server-user-help@james.apache.org
Re: Using connectionBacklog
Posted by Eric Charles <er...@apache.org>.
Hi Phillip,
It is rejected because you set connectionLimit=1.
connectionBacklog and connectionLimit are two different technical way to
achieve the same goal. That's not ideal, but allows to configure in
different ways.
In you case, you will need to also set connectionLimit to 200.
Thx, Eric
On 12/02/2013 15:11, Phillip Odam wrote:
> Thanks for the response Eric.
>
> I must admit I had thought the backlog count would not include the
> current connections. However when testing I also tried a greater number
> for backlog e.g.
>
> connectionBacklog = 200
> connectionLimit = 1
>
> And I'm still only able to make one connection and all subsequent
> connections are immediately rejected. Has anyone seen backlog working in
> james?
>
> Phillip
>
> On 2/12/13 1:46 AM, Eric Charles wrote:
>> Hi,
>>
>> If you set backlog=1, the socket can not queue more than one request at
>> a time. So if the socket is already busy with one connection, a second
>> connection request will be simply rejected. The backlog property is
>> given to netty for its bootstrap.
>>
>> The connectionLimit is implemented with Netty handlers which rejects
>> connection if you have already more open connection than the given
>> number.
>>
>> Thx, Eric
>>
>>
>> On 11/02/2013 16:47, Phillip Odam wrote:
>>> Can anyone confirm successful use of connectionBacklog for the smtp
>>> service on james 3.0 beta4 (or any v3). Successful use of
>>> connectionBacklog for any of the other services e.g. imap, lmtp and pop3
>>> is also of interest as under the covers the code is all common.
>>>
>>> Firstly I gather the connectionBacklog setting is controlling the
>>> backlog just as is done in
>>> http://docs.oracle.com/javase/6/docs/api/java/net/ServerSocket.html
>>>
>>> Secondly comparing the code
>>> -
>>> http://svn.apache.org/repos/asf/james/protocols/trunk/netty/src/main/java/org/apache/james/protocols/netty/AbstractAsyncServer.java
>>>
>>>
>>>
>>> -
>>> http://svn.apache.org/repos/asf/james/protocols/tags/protocols-1.6.2/netty/src/main/java/org/apache/james/protocols/netty/AbstractAsyncServer.java
>>>
>>>
>>>
>>>
>>> reports no differences so apart from the different versions of netty
>>> between beta4 and where beta5 development is there should be no
>>> difference with the backlog between beta4 and the current development
>>> stream.
>>>
>>>
>>> Changing the connectionBacklog value does cause the startup log entry
>>> (SMTP Service connection backlog is: XXX) to change accordingly,
>>> however...
>>>
>>> SETUP
>>> -----
>>>
>>> connectionBacklog = 1
>>> connectionLimit = 1
>>>
>>> TESTING
>>> -------
>>>
>>> With two command lines, use telnet to connect to the smtp service, the
>>> first telnet instance will establish a connection.
>>>
>>> The second instance reports back immediately that a connection can not
>>> be established, whereas I would expect the second instance to hang and
>>> either establish a connection when the first telnet instance disconnects
>>> or a timeout occurs.
>>>
>>>
>>> Testing thus far has not been in a controlled environment so the backlog
>>> issue may well not be with james, but before I go much further I wanted
>>> to see what anyone else out there is seeing.
>>>
>>> Thanks
>>> Phillip
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>>> For additional commands, e-mail: server-user-help@james.apache.org
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>> For additional commands, e-mail: server-user-help@james.apache.org
>>
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
> For additional commands, e-mail: server-user-help@james.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
For additional commands, e-mail: server-user-help@james.apache.org
Re: Using connectionBacklog
Posted by Phillip Odam <ph...@nitorgroup.com>.
Thanks for the response Eric.
I must admit I had thought the backlog count would not include the
current connections. However when testing I also tried a greater number
for backlog e.g.
connectionBacklog = 200
connectionLimit = 1
And I'm still only able to make one connection and all subsequent
connections are immediately rejected. Has anyone seen backlog working in
james?
Phillip
On 2/12/13 1:46 AM, Eric Charles wrote:
> Hi,
>
> If you set backlog=1, the socket can not queue more than one request at
> a time. So if the socket is already busy with one connection, a second
> connection request will be simply rejected. The backlog property is
> given to netty for its bootstrap.
>
> The connectionLimit is implemented with Netty handlers which rejects
> connection if you have already more open connection than the given number.
>
> Thx, Eric
>
>
> On 11/02/2013 16:47, Phillip Odam wrote:
>> Can anyone confirm successful use of connectionBacklog for the smtp
>> service on james 3.0 beta4 (or any v3). Successful use of
>> connectionBacklog for any of the other services e.g. imap, lmtp and pop3
>> is also of interest as under the covers the code is all common.
>>
>> Firstly I gather the connectionBacklog setting is controlling the
>> backlog just as is done in
>> http://docs.oracle.com/javase/6/docs/api/java/net/ServerSocket.html
>>
>> Secondly comparing the code
>> -
>> http://svn.apache.org/repos/asf/james/protocols/trunk/netty/src/main/java/org/apache/james/protocols/netty/AbstractAsyncServer.java
>>
>>
>> -
>> http://svn.apache.org/repos/asf/james/protocols/tags/protocols-1.6.2/netty/src/main/java/org/apache/james/protocols/netty/AbstractAsyncServer.java
>>
>>
>>
>> reports no differences so apart from the different versions of netty
>> between beta4 and where beta5 development is there should be no
>> difference with the backlog between beta4 and the current development
>> stream.
>>
>>
>> Changing the connectionBacklog value does cause the startup log entry
>> (SMTP Service connection backlog is: XXX) to change accordingly,
>> however...
>>
>> SETUP
>> -----
>>
>> connectionBacklog = 1
>> connectionLimit = 1
>>
>> TESTING
>> -------
>>
>> With two command lines, use telnet to connect to the smtp service, the
>> first telnet instance will establish a connection.
>>
>> The second instance reports back immediately that a connection can not
>> be established, whereas I would expect the second instance to hang and
>> either establish a connection when the first telnet instance disconnects
>> or a timeout occurs.
>>
>>
>> Testing thus far has not been in a controlled environment so the backlog
>> issue may well not be with james, but before I go much further I wanted
>> to see what anyone else out there is seeing.
>>
>> Thanks
>> Phillip
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>> For additional commands, e-mail: server-user-help@james.apache.org
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
> For additional commands, e-mail: server-user-help@james.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
For additional commands, e-mail: server-user-help@james.apache.org
Re: Using connectionBacklog
Posted by Eric Charles <er...@apache.org>.
Hi,
If you set backlog=1, the socket can not queue more than one request at
a time. So if the socket is already busy with one connection, a second
connection request will be simply rejected. The backlog property is
given to netty for its bootstrap.
The connectionLimit is implemented with Netty handlers which rejects
connection if you have already more open connection than the given number.
Thx, Eric
On 11/02/2013 16:47, Phillip Odam wrote:
> Can anyone confirm successful use of connectionBacklog for the smtp
> service on james 3.0 beta4 (or any v3). Successful use of
> connectionBacklog for any of the other services e.g. imap, lmtp and pop3
> is also of interest as under the covers the code is all common.
>
> Firstly I gather the connectionBacklog setting is controlling the
> backlog just as is done in
> http://docs.oracle.com/javase/6/docs/api/java/net/ServerSocket.html
>
> Secondly comparing the code
> -
> http://svn.apache.org/repos/asf/james/protocols/trunk/netty/src/main/java/org/apache/james/protocols/netty/AbstractAsyncServer.java
>
> -
> http://svn.apache.org/repos/asf/james/protocols/tags/protocols-1.6.2/netty/src/main/java/org/apache/james/protocols/netty/AbstractAsyncServer.java
>
>
> reports no differences so apart from the different versions of netty
> between beta4 and where beta5 development is there should be no
> difference with the backlog between beta4 and the current development
> stream.
>
>
> Changing the connectionBacklog value does cause the startup log entry
> (SMTP Service connection backlog is: XXX) to change accordingly, however...
>
> SETUP
> -----
>
> connectionBacklog = 1
> connectionLimit = 1
>
> TESTING
> -------
>
> With two command lines, use telnet to connect to the smtp service, the
> first telnet instance will establish a connection.
>
> The second instance reports back immediately that a connection can not
> be established, whereas I would expect the second instance to hang and
> either establish a connection when the first telnet instance disconnects
> or a timeout occurs.
>
>
> Testing thus far has not been in a controlled environment so the backlog
> issue may well not be with james, but before I go much further I wanted
> to see what anyone else out there is seeing.
>
> Thanks
> Phillip
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
> For additional commands, e-mail: server-user-help@james.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
For additional commands, e-mail: server-user-help@james.apache.org