Hey all, I just committed timeout and aggressive connection reaping in the HEAD. A few changes. For one, thread pools can be shared among mulitiple ServerMBean (which I plan to rename Service real soon) instances. For two, timeout works. For three, there was a long standing bug where connections could hang in the idle state for clients that let them for periods beying the "life" parameter -- that is fixed.
Timeout is different than "Life". Life = time you can have the connection regardless of whatever you're doing. Timeout is the time you can sit idle between commands. You need both for high end scalability and DoS protection. Meaning while Timeout is good (say I issue "HELO" to SMTP and sit for 31 seconds...it'll hang up on me), it doesn't do anything for the DATA command. Meaning that transfer must be interrupted by "life" because it would be too inefficient to up the time byte by byte.
I also thing the thread pooling difference will be very helpful to a lot of people. I still think that you ought to have seperate thread pools for SMTP and POP. However, you very well might want hte same thread pool for SMTP, SMTP/SSL and POP vs POP/SSL.