(Not) Learning Java #3

Ah, the bane of my life, procrastination, has struck again.

I had the idea to develop a mail filtering server (MTA) that would essentially be a gateway in the email system that would process incoming email and then output it to another (external) MTA, such as a groupware server of some sort, like Exchange, Lotus Notes, or whatever. That part is irrelevant really. The basic concept is that this would be an initial spam filter that would filter against custom regex lists (I have personally developed quite a few filters and spam email databases that could be implemented), but would most likely include common technologies such as RBL lookups, and the like. Whatever I could think of, really.

While searching for some libraries to handle SMTP traffic, etc (Why re-invent the wheel), I came across Apache JAMES. This has (kind of) thrown a spanner in the works, in that it is a fully functional enterprise mail server (go read the project site and see what it can do), and I may be able to configure it to do exactly what I want (especially with its built-in filtering language), or at least, failing that, I should be able to utilize its API to build the service that I desire – and that would at least get me back on track with Java development.

While I have downloaded the Early dev release of version 3, both on my server and at home, I have yet to fiddle around with the configuration and start it up to see what I can get it to do.

My initial target is to get the server listening on port 25 and accepting any mail that is sent to it and save it to a file in the file system.

Outside of James, in terms of developing from scratch, I was thinking I would need at least 3 services to handle full mail processing. One service to receive mail (SMTP Listener), one or more services to filter accepted mail, and another service to deliver mail.