Recent Posts ¶

JAMM — an update to the Java Mail Manager

Ronald MacDonald <ronald@rmacd.com> v1.0, Sun Feb 12 21:24:03 EST 2012

So I’ve been using JAMM (the Java Mail Manager) for about two years now and have been making some changes along the way. Most of these have been insignificant alterations to the interface and a few changes to the logic of the template system (struts). I did think, however, that it would be worth releasing this and seeing what sort of use people can get out of it.

There’re still a few things I’d like to implement, but time necessitates I focus on studies… at least, saying that makes me sound as if I’m conscientious about my school work. But that’s quite another story.

What is JAMM?

Quite simply, it’s a front-end written in JSP which handles administration of LDAP-based virtual lookup tables. I use this alongside Postfix and Dovecot. JAMM comes with its own schema, which defines various hierarchies; domains fall within a ‘jvd’ (Jamm Virtual Domain) class, each of which may be delegated to and administered by a ‘sub-postmaster’. Aliasing is handled also.

Screenshots

What’s changed? Here’re some screenshots.

Login page

/code/2012/0212/old_login_thumb.png /code/2012/0212/new_login_thumb.png

Site administration

/code/2012/0212/old_site_thumb.png /code/2012/0212/new_site_thumb.png

Domain administration

/code/2012/0212/old_domain_thumb.png /code/2012/0212/new_domain_thumb.png

Alias creation

/code/2012/0212/old_alias_thumb.png /code/2012/0212/new_alias_thumb.png

Changes

The setup documentation requires ACLs to be set up — as you would expect — on the LDAP server. Due to the fact OpenLDAP now uses LDAP-based configuration files, replacing the usual slapd.conf, rules have had to be modified very slightly. For sake of completeness, here is my ACL ruleset for running JAMM — allowing for the Dovecot user to read the userPassword field, to facilitate authentication. You’ll obviously need to change this to suit your own configuration:

In cn=config (my mail vhost base resides at o=mailsrv,dc=rmacd,dc=com):

olcAccess: {0}to dn.subtree="o=mailsrv,dc=rmacd,dc=com" 1
        by dn.exact="cn=jadmin,dc=rmacd,dc=com" write
        by * break
olcAccess: {1}to dn.regex=".*,jvd=([^,]+),o=mailsrv,dc=rmacd,dc=com" attrs=userPassword
        by self write
        by group/jammPostmaster/roleOccupant.expand="cn=postmaster,jvd=$1,o=mailsrv,dc=rmacd,dc=com" write
        by dn="cn=dovecotuser,dc=rmacd,dc=com" read 2
        by * auth
olcAccess: {2}to dn.regex="jvd=([^,]+),o=mailsrv,dc=rmacd,dc=com"
        by group/jammPostmaster/roleOccupant.expand="cn=postmaster,jvd=$1,o=mailsrv,dc=rmacd,dc=com" write
        by dn="cn=dovecotuser,dc=rmacd,dc=com" read 2
        by * read

        ... [rest of non-mail ACL rules]
1 ‘break’ on this rule will facilitate administrative access by ‘jadmin’ (i.e. Jamm Admin) user.
2 You might not need this, I just put it here for completeness.

Download and Install

Download the source package from the SF.net page at http://jamm.sourceforge.net/ and deploy the WAR file to your /webapps directory.

Once it’s all working, the base install should be available on your server under /jamm-0.9.6. Download jamm.patch and apply as usual: patch -p0 jamm.patch in the base directory of your Jamm installation.