Edgewall Software

How to use Mailman as a source of authentication

Kudos to Christopher Gabriel for his original idea.

Mailman can be used as a source of authentication for Trac. This is super handy, as it allows to have a single sign-on between the two. This page describes how to set this up.

First, please install mod_macro and mod_python, and add www-data to the group list. Apache 2.4 or later is needed to use mod_macro.

An Apache macro needs to be defined as follows:

<Macro PrivateProjectMailman $name $list>
        <Location /svn/$name>
                AuthName "$name"
                AuthType Basic
                PythonPath "sys.path+['/etc/apache2/']"
                PythonAuthenHandler mailauth
                PythonOption MailmanList $list
                AuthUserFile /dev/null
                AuthBasicAuthoritative Off
                require valid-user
        </Location>

        <Location "/$name">
                AuthName "$name"
                AuthType Basic
                PythonPath "sys.path+['/etc/apache2/']"
                PythonAuthenHandler mailauth
                PythonOption MailmanList $list
                AuthUserFile /dev/null
                AuthBasicAuthoritative Off
                require valid-user
        </Location>
</Macro>


<Macro PublicProjectMailman $name $list>
        <Location /svn/$name>
                <LimitExcept GET PROPFIND OPTIONS REPORT>
                AuthName "$name"
                AuthType Basic
                PythonPath "sys.path+['/etc/apache2/']"
                PythonAuthenHandler mailauth
                PythonOption MailmanList $list
                AuthUserFile /dev/null
                AuthBasicAuthoritative Off
                require valid-user
                </LimitExcept>
        </Location>

        <Location "/$name/login">
                AuthName "$name"
                AuthType Basic
                PythonPath "sys.path+['/etc/apache2/']"
                PythonAuthenHandler mailauth
                PythonOption MailmanList $list
                AuthUserFile /dev/null
                AuthBasicAuthoritative Off
                require valid-user
        </Location>
</Macro> 

Then, in the relative VirtualHost add the following:

Use PrivateProjectMailman progetto-x lista-progetto-x

or:

Use PublicProjectMailman progetto-x lista-progetto-x

And you are done.

Last modified 8 years ago Last modified on Mar 20, 2016, 11:05:54 PM
Note: See TracWiki for help on using the wiki.