agregausuario.sh (agregar usuarios de correo en un sistema postfix + courier imap + ldap)
Nombre: agregausuario.sh
Autor: Otilio
Origen:
Lenguaje: sh/bash + perl
Licencia: GPL
Propósito: Agregar usuarios de correo en un sistema postfix + courier imap + ldap
Dependencias: Postfix-ldap, courier-imap, courier-ldap, slapd, perl, sasl.
Código:
#!/bin/bash
# Avisamos si no se pasan los parámetros correctos
if [ "X" = X"$5" ]
then
echo "Suministre el usuario, su dominio, una contraseña y su nombre y primer apellido
ejemplo: $0 pepe sudominio.com sucontraseña Francisco Fernandez
"
exit 0
fi
# Si todo va bien, el script se ejecuta
USER=$1
DOMAIN=$2
MAILL=$USER@$DOMAIN
PASS=`./encript.pl $3` ## Script auxiliar en perl comentado más adelante
NOM=$4
APELL=$5
echo "dn: uid=$USER,ou=people,dc=dominio,dc=com
uid: $USER
givenName: $NOM
sn: $NOM
cn: $NOM $APELL
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: shadowAccount
objectClass: CourierMailAccount
gidNumber: 5000 ## Vuestro group ID, en mi caso 5000
shadowExpire: -1
shadowFlag: 0
shadowInactive: -1
shadowMax: 999999
shadowMin: -1
shadowWarning: 7
mail: $MAILL
loginShell: /bin/false
defaultdelivery: /var/vmail
mailbox: $DOMAIN/$USER/Maildir/
homeDirectory: /var/vmail/$DOMAIN/$USER/
UserPassword: {crypt}$PASS" >> ldif.$$
ldapadd -xD "cn=admin,dc=dominio,dc=com" -W -f ldif.$$ ## Podéis poner '-w clave_ldap', pero no es aconsejable, por lo cual os pedirá la clave del admin de ldap
rm ldif.$$
mkdir /var/vmail/$DOMAIN/$USER
maildirmake /var/vmail/$DOMAIN/$USER/Maildir
chown -R vmail:vmail /var/vmail/$DOMAIN/$USER
Script auxiliar: encript.pl, hace el primer cifrado de la clave con perl
#!/usr/bin/perl
$claro=$ARGV[0];
chomp $claro;
$salt = join '', ('.', '/', 0..9, 'A'..'Z', 'a'..'z')[rand 64, rand 64];
printf "%s\n", crypt("$claro", "$salt");
Comentarios: Adaptar el sistema de directorios a vuestro gusto. Aunque en mi caso lo uso para añadir cuentas de correo, con pequeños cambios sirve para otro tipo de usuarios de directorio ldap. Si sólo tenéis un dominio alojado os podéis ahorrar la variable $DOMAIN y sustituirla por vuestro dominio en cuestión.