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

Having used JAMM (the Java Mail Manager) for about two years now, I’ve made some changes. Most of these are quite insignificant and merely comprise of adjustments to Struts logic and to interface CSS. These have been compiled into a short patch and are available below.

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.