Nico and Co.
 

Syndication

Syndicate content

Filtrage ? - La Quadrature du Net

 


 
LDAP to Mailman
Nicolas  01/06/2005 - 09:29   

I maintain various web sites which use LDAP to maintain information about users. I often need these user to be subscribed to mailing lists based on groups or other attributes stored in the LDAP directory. The following script, called regurlarly with a few appropriate parameters will do just that :

#! /bin/sh
# mmldap : An ldap extractor for mailman
#
# Usage: mmldap <listname> <base> <filter> [<listoptions>]
#  <listname> is the name of and existing mailman list
#  <base> is the basedn for ldapsearch
#  <filter> is the ldap filter for ldapsearch
#  <listoptions> are the parameters passed to mailman's sync_members command
#     defaults are : -a -w=no -g=no
#
# Example :
#   mmldap MyList ou=users,o=test "(&(objectclass=user)(mail=*@*)(subscribeML=true)(!(logindisabled=true)))
#
# Author : nicolas@barcet.com


## You can define here the ice command option. Type ice on the command prompt
## for more help.
LDAPOPTIONS=""

#set default is nothing set above
if (test LDAPOPTIONS="") then
        # by default will connect anonymously to localhost with a subtree search
        LDAPOPTIONS="-s sub -h localhost"
fi

case "$1" in
    -h)
        cat $0.help
        ;;

    --help)
        more $0.readme
        ;;

    *)
        if (test -n "$3") then
                LISTNAME=$1
                BASE=$2
                FILTER=$3

                echo "$0 invoked at `date` for $LISTNAME"

                if (test -n "$4") then
                        OPTIONS=$4
                else
                        OPTIONS="-a -w=no -g=no"
                fi

                ldapsearch $LDAPOPTION -b $BASE -x $FILTER mail | grep mail: | awk '{print $2}' > /tmp/maillist
                /usr/lib/mailman/bin/sync_members $OPTIONS -f /tmp/maillist $LISTNAME
                rm /tmp/maillist

        else
                echo "  Usage: $0 <listname> <base> <filter> [<listoptions>]"
                echo "  <listname> is the name of and existing mailman list"
                echo "  <base> is the basedn for ldapsearch"
                echo "  <filter> is the ldap filter for ldapsearch"
                echo "  <listoptions> are the parameters passed to mailman's sync_members command"
                echo "     defaults are : -a -w=no -g=no"
        fi
        ;;
esac


Technorati Tags:

Répondre

Le contenu de ce champ ne sera pas affiché aux utilisateurs qui n'ont pas de droits d'administration sur ce site.
Captcha Image: you will need to recognize the text in it.
Veuillez saisir les lettres/chiffres apparaissant dans l'image ci dessus.
 

Trucs et astuces

Pour savoir d'un coup d'oeil s'il y a de nouveaux commentaires, inscrivez vous...

Connexion


Commentaires récents



Promouvoir et soutenir le logiciel libre


Eliminate DRM!
DRM ?


GeoURL

View blog reactions

Nethique.info