Edgewall Software

Version 3 (modified by figaro, 8 years ago) ( diff )

Cosmetic changes

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.

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.

Note: See TracWiki for help on using the wiki.