1
0
Fork 0
scripts-admin-quickndirty-p.../oldies/lib_gestion-mailinglists.sh

124 lines
3.1 KiB
Bash

# Ici se trouvent réunies les fonctions et la configuration utiles au script
# de gestion des mailing-lists
# Config
LDAP_HOST="ldap.example.net"
LDAP_ROOT="dc=example,dc=net"
CONFIG_IDENTIFIANTS_SMBLDAP="/etc/smbldap-tools/smbldap_bind.conf"
. $CONFIG_IDENTIFIANTS_SMBLDAP
LDAP_PASSWD="$masterPw"
LDAP_BIND_DN="$masterDN"
# Liste, sur stdout, les mailing-lists dont fait déjà parti l'adresse
# email fournie en argument.
# args: email
#
# note : effectué en connexion anonyme. A priori, les droits sont suffisants.
afficher_abonnements_en_cours() {
ldapsearch -x -h "$LDAP_HOST" -b "ou=mailing-lists,$LDAP_ROOT" -LLL "(rfc822MailMember=$1)" cn | sed -n 's/^cn: \(.*\)/\1/p' | sort
}
# Affiche la liste des mailing-lists
#
# note : effectué en connexion anonyme. A priori, les droits sont suffisants.
afficher_listing_mailinglists() {
ldapsearch -x -h "$LDAP_HOST" -b "ou=mailing-lists,$LDAP_ROOT" -LLL cn | sed -n 's/^cn: \(.*\)/\1/p' | sort
}
# Affiche la liste des abonnés d'une mailing-list
# args: mailing-list
#
# note : effectué en connexion anonyme. A priori, les droits sont suffisants.
afficher_abonnes_mailinglist() {
ldapsearch -x -h "$LDAP_HOST" -b "cn=$1,ou=mailing-lists,$LDAP_ROOT" -LLL rfc822MailMember | sed -n 's/^rfc822MailMember: //p'
}
# Supprime l'email d'une mailing-list
# args: email, mailing-list
supprimer_abonnement() {
# Ecriture du mot de passe
LDAP_PASSWDFILE=$( mktemp )
printf "%s" "$LDAP_PASSWD" >$LDAP_PASSWDFILE
# Requete
cat <<EOF | ldapmodify -x -h $LDAP_HOST -D "$LDAP_BIND_DN" -y "$LDAP_PASSWDFILE"
dn: cn=$2,ou=mailing-lists,$LDAP_ROOT
changetype: modify
delete: rfc822MailMember
rfc822MailMember: $1
EOF
RETOUR="$?"
# Effacement du mot de passe
rm -f "$LDAP_PASSWDFILE"
return $RETOUR
}
# Ajoute l'email à une mailing-list
# args: email, mailing-list
creer_abonnement() {
# Ecriture du mot de passe
LDAP_PASSWDFILE=$( mktemp )
printf "%s" "$LDAP_PASSWD" >$LDAP_PASSWDFILE
# Requête
cat <<EOF | ldapmodify -x -h $LDAP_HOST -D "$LDAP_BIND_DN" -y "$LDAP_PASSWDFILE"
dn: cn=$2,ou=mailing-lists,$LDAP_ROOT
changetype: modify
add: rfc822MailMember
rfc822MailMember: $1
EOF
RETOUR="$?"
# Effacement du mot de passe
rm -f "$LDAP_PASSWDFILE"
return $RETOUR
}
# Détruit une mailing-list
# args: mailing-list
supprimer_mailinglist() {
# Ecriture du mot de passe
LDAP_PASSWDFILE=$( mktemp )
printf "%s" "$LDAP_PASSWD" >$LDAP_PASSWDFILE
# Requete
cat <<EOF | ldapmodify -x -h $LDAP_HOST -D "$LDAP_BIND_DN" -y "$LDAP_PASSWDFILE"
dn: cn=$1,ou=mailing-lists,$LDAP_ROOT
changetype: delete
EOF
RETOUR="$?"
# Effacement du mot de passe
rm -f "$LDAP_PASSWDFILE"
return $RETOUR
}
# Crée une mailing-list
# args: mailing-list
creer_mailinglist() {
# Ecriture du mot de passe
LDAP_PASSWDFILE=$( mktemp )
printf "%s" "$LDAP_PASSWD" >$LDAP_PASSWDFILE
# Requete
cat <<EOF | ldapmodify -x -h $LDAP_HOST -D "$LDAP_BIND_DN" -y "$LDAP_PASSWDFILE"
dn: cn=$1,ou=mailing-lists,$LDAP_ROOT
changetype: add
cn: $1
objectClass: nisMailAlias
objectClass: top
EOF
RETOUR="$?"
# Effacement du mot de passe
rm -f "$LDAP_PASSWDFILE"
return $RETOUR
}