JAMES mailing list manager enhancement (moderation and bounce manager)
JAMES mailing list manager enhancement.
The main aim of this project is to improve JAMES mlm: to add moderation feature and bounce manager (using VERP). The second - is to add a possibility of getting a mail from archive by it's id.
JAMES is was designed to accommodate certain objectives, it provides a comprehensive set of services, including many that are usually available only in high-end or well-established e-mail servers. These services are primarily implemented using the Matcher and Mailet APIs, so all features which will be added are based on Mailet API.
This project will add possibilities listed below:
To add moderators and create mailing lists dynamically: i plan to use JAMES telnet console for input and a mailet (with predefined format of body) for alternative handling, today JAMES uses CommandListservManager mailet for mailing list handling, subscription list is described declaratively in mailet configuration file and every subscription list can have only one moderator (who is conforming when new user is being created).
- То moderate a mailing list in four ways: today mailing list software can quickly determine whether a sender's email address is on subscriber list or not and apply simple posting rules based on sender's permissions. To the software, posting privileges belong to a sender's email address because it is on a subscriber list, whereas a human moderator knows that the email account belongs to an individual who has been granted posting privileges and thats why moderator can ACCEPT a email (or ALLOW receiving messages from this sender). If moderator doesn't know a sender he can REJECT a message (or even block a sender to prevent receiving messages from him). By default, if message was in queue for a long time, it will be automatically rejected.
So I going to implement four command's for ModerationMailet: ACCEPT, ALLOW, REJECT, BLOCK.
- To use bounce manager: Aaron Johnson wrote a good article on his blog about using of VERP with james. In fact anyone who has spent any time working a application that sends emails has come across more than their fair share of bounced emails, and we can't determine address of receiver form this message. But using VERP we can find out this.
For example: we has a mailing list address dev <at> james.apache.org, and a subscriber kirill.kosinov <at> gmail.com, so message contents are:
From: dev <at> james.apache.org To: kirill.kosinov <at> gmail.com
After VERP processing we will have following:
Return-Path: dev-kirill.kosinov=gmail.com <at> james.apache.org From: dev <at> james.apache.org To: kirill.kosinov <at> gmail.com
By handling this messages we can determine broken addresses, and not to send messages to them.
- Sources in form of patches.
- UML diagrams.
- Technical documentation.
- Users documentation.
April 14 - May 25
I will spend this time to study JAMES architecture and avalon framework, it seems that i should change mailet configuration on the fly, so it will be necessary to find out a correct way to do this.
May 26 - June 20
During this period I will work on mailing lists management and user management (moderation ACL's). Stub for moderation commands (Accept, Allow, Reject, Block) will be created for ACL testing.
June 21 - July 14
Implementation of commands Accept и Allow, testing.
July 15 - August 11
Implementation of Block command, it requires maintenance of blocked users list, unblocking of blocked users. Bounce manager implementation (based on VERP)
August 11 - August 18
Testing period for new and old features of JAMES.
Why JAMES project?
Today, when many people from all over the world take part in development process, mailing lists discussion became a most popular way of work synchronization (mail often no need of immediate response), thats why mailing list managers should be on top of functionality. JAMES is the first mail server that i configured for "two minutes", it gives an API for development, well documented code and some examples, it is good application, and I'll do my best to add functionality which it needs. Also it was always difficult to me to configure services like exim, it is wery difficult task for an ordinary user, and i want JAMES mlm to became a user friendly service.
I am a student of Kursk State University, also i worked as a Java developer for two years. During my work i participated in two web projects (www.appek.org, b4u.whiteants.net) and some desktop projects, i also fulfilled all requirements for SCJP exam, so i have approved base knowledges of Java. I like Java because it is a very flexible platform and it gives an opportunity to develop application using modern technologies of programming (unit testing, soa). Java code can be well described with UML, during my work i understood, that timeline and good documentation is a half of success.