Interface utilisateurs
Phamm
Installation
Note: <phamm> correspond au répertoire d'installation de phamm, c'est à dire /var/www/www.livois.com/ dans notre cas.
On note <phamm> le répertoire d'installation
#cp <phamm>/schema/* /etc/openldap/schema/ #cp <phamm>/phamm.acl /etc/openldap/
<licode file=/etc/openldap/slapd.conf>
- lock down passwords
access to dn.regex="vd=([^,]+),o=hebergement,dc=livois,dc=com$" attrs=userPassword
by dn="cn=Manager,dc=livois,dc=com" write by dn.exact="cn=phamm,o=hebergement,dc=livois,dc=com" write by dn.exact,expand="cn=postmaster,vd=$1,o=hebergement,dc=livois,dc=com" write by self write by anonymous auth by * none
- allow users to write some stuff
access to dn.regex="vd=([^,]+),o=hebergement,dc=livois,dc=com$"
by dn="cn=Manager,dc=livois,dc=com" write by dn.exact="cn=phamm,o=hebergement,dc=livois,dc=com" write by dn.exact,expand="cn=postmaster,vd=$1,o=hebergement,dc=livois,dc=com" write by self write by * read
- lock down passwords
access to attrs=userPassword
by dn="cn=Manager,dc=livois,dc=com" write by self write by anonymous auth by * none
</licode>
#ldapadd -v -x -D "cn=manager,dc=livois,dc=com" -W -h localhost -f examples/sample-mail.ldif -c
Configuration
#cp config.inc.php.template config.inc.php
LDAP
<licode file=config.inc.php> // *============================* // *=== LDAP Server Settings ===* // *============================*
// The server address (IP or FQDN) define ('LDAP_HOST_NAME','127.0.0.1');
// The protocol version [2,3] define ('LDAP_PROTOCOL_VERSION','3');
// The server port define ('LDAP_PORT','389');
// The container define ('SUFFIX','dc=livois,dc=com');
// The admin bind dn (could be rootdn) define ('BINDDN','cn=manager,dc=livois,dc=com');
// The Phamm container define ('LDAP_BASE','o=hebergement,dc=livois,dc=com'); </licode>
Envoi d'un message de bienvenu à la création d'un compte
<licode file=config.inc.php> // Welcome message define ('SEND_WELCOME',1); $welcome_msg = '../welcome_message.txt'; $welcome_subject = 'Bienvenue!'; $welcome_sender = 'christophe@livois.com'; //$welcome_bcc = 'root@localhost'; </licode>
Editer <phamm>/plugins/mail/welcome_message.txt. Chaque nouvel utilisateur recevra un e-mail avec ce message de bienvenue lors de sa création.
Plugins
<licode file=config.inc.php> // *============================* // *=== Plugins Settings ===* // *============================*
// The default plugin define ('DEFAULT_PLUGIN','mail');
// This array contains the active plugins // NOTE the display order reflect this order $plugins = array(); $plugins[] = "mail"; $plugins[] = "alias"; $plugins[] = "person";
// Account can be mail OR alias $plugins_exclusion = array("mail","alias");
// This array contains the TLDs (filter option) $tld = array(); $tld[] = ".com"; $tld[] = ".org"; $tld[] = ".net"; // $tld[] = ".biz"; $tld[] = ".info"; </licode>
Plugin mail
Le plugin mail utilise les quatre classes LDAP suivantes : <licode file=plugins/mail.xml>
<objectClasses> <objectClass name="VirtualMailAccount"> <bug>0</bug> </objectClass> <objectClass name="Vacation"> <bug>0</bug> </objectClass> <objectClass name="VirtualForward"> <bug>0</bug> </objectClass> <objectClass name="amavisAccount"> <bug>0</bug> </objectClass> </objectClasses>
</licode>
Nous n'utilisons pas le suffix S pour la gestion des quota. La ligne <suffix>S</suffix> est supprimée. <licode file=plugins/mail.xml>
<attribute name="quota">1
<default>50</default> <multiplier>1048576</multiplier> <minAuthLevel>4</minAuthLevel> </attribute>
</licode>
Le répertoire vdHome doit être changé à /home/vmail/ pour notre configuration. <licode file=plugins/mail.xml>
<attribute name="vdHome"> <hidden>1</hidden> <required>1</required> <default>/home/vmail/</default> <minAuthLevel>4</minAuthLevel>
</licode>
Pour que les utilisateurs puissent changer eux même leur niveau de spam: <licode file=plugins/mail.xml>
<attribute name="amavisSpamKillLevel"> <default>3.5</default> <size>3</size> <minAuthLevel>2</minAuthLevel> </attribute> <attribute name="amavisSpamTag2Level"> <default>3.0</default> <size>3</size> <minAuthLevel>2</minAuthLevel> </attribute> <attribute name="amavisSpamTagLevel"> <default>2.0</default> <size>3</size> <minAuthLevel>2</minAuthLevel> </attribute>
</licode>
Plugin person
<licode file=plugins/person.xml>
<account> <objectClasses> <objectClass name="inetOrgPerson"> <bug>0</bug> </objectClass> </objectClasses> <attributes> <attribute name="givenName">1
</attribute> <attribute name="telephoneNumber">1
</attribute> <attribute name="homePhone">1
</attribute> <attribute name="mobile">1
</attribute> <attribute name="homePostalAddress"> <textarea>1</textarea> </attribute> </attributes> </account>
</licode>
Divers
<licode file=config.inc.php> // Default language (user can change it) $language = 'fr_FR'; </licode>
<licode file=config.inc.php> // Permit login without @domain (use it with carefull) define ('DEFAULT_DOMAIN','livois.com') </licode>
Lorsque le mail de l'utilisateur est de la forme login@livois.com, l'uid créé par défaut va être login.livois.com. Pour que l'uid soit égale à "login", éditer www-data/main.php de la façon suivante : <licode file=www-data/main.php>
//$uid = str_replace ( '@', CHR_UID_ACCOUNT, $mail); $uid = strtok($mail,'@');
</licode>
Scripts phamm
cleaner.sh script Edit the cleaner.sh script to reflect the your ldap layout. Phamm does not really delete accounts. Phamm mark them as "Deleting". You can use tools/cleaner.sh to do this with crond. Set this script with cron can be useful: <licode file=/etc/crontab> 0,30 */1 * * * root /var/www/www.livois.com/phamm/tools/cleaner.sh </licode>
Remarque : Attention à ajouter les classes Vacation,VirtualForward, AmavisAccount à chaque utilisateur (dans les cas où les utilisateurs sont créés autrementqu'avec phamm). Sinon , phamm va génèrer des messages d'erreur.
Configuration avancée
Style
Exemple: <licode file=www-data/style/phamm/main.css> .data {
FONT-FAMILY: sans-serif,helvetica,arial,verdana; /*background-color: #f2770d; background-color: #0080c0;*/ background-color: #9999FF; border: 1px solid #2c1602; FONT-SIZE: 14px;
}
.zata {
FONT-FAMILY: sans-serif,helvetica,arial,verdana; /*BACKGROUND-COLOR: #CCCCCC;*/ BACKGROUND-COLOR: #CCCCFF;
BORDER: 1px solid #000000; FONT-SIZE: 14px;
}
TR.data:hover {
/*BACKGROUND-COLOR: #FFBBBB;*/ BACKGROUND-COLOR: #ffffaa;
}
TR.zata:hover {
/*BACKGROUND-COLOR: #FFBBBB;*/ BACKGROUND-COLOR: #FFFFCC;
}
</licode>
Traduction
Exemple : <licode file=locales/fr_FR.php> $lang["account"] = 'Compte'; $lang["cn"] = 'Nom affiché'; $lang["sn"] = 'Nom de famille';
$lang["givenName"] = 'Prénom'; $lang["telephoneNumber"] = 'Tel. de bureau'; $lang["homePhone"] = 'Tel.personnel'; $lang["mobile"] = 'Tel. portable'; $lang["homePostalAddress"] = 'Adresse postale';
$lang["amavisBypassVirusChecks"] = 'Virus check'; $lang["account;amavisBypassVirusChecks;TRUE"] = 'Set Virus Checks'; $lang["account;amavisBypassVirusChecks;FALSE"] = 'Unset Virus Checks'; $lang["amavisBypassSpamChecks"] = 'SPAM check'; $lang["account;amavisBypassSpamChecks;TRUE"] = 'Set SPAM Check'; $lang["account;amavisBypassSpamChecks;FALSE"] = 'Unset SPAM Check';
$lang["creationDate"] = 'Date de création'; $lang["execute_command"] = 'Action';
</licode>
Configurer le filtre de spam d'amavisd
http://www.ijs.si/software/amavisd/README.lookups.txt
<licode file=/etc/amavisd.conf> $enable_ldap = 1; $default_ldap = {
hostname => 'localhost', tls => 0, base => 'o=hebergement,dc=livois,dc=com', query_filter => '(&(objectClass=amavisAccount)(mail=%m))'
}; </licode>
Auto reply avec Gnarwl
Gnarwl veut dire Gnu Neat Auto Reply With LDAP. Cet outil envoie une réponse automatique de type message d'absence. L'outil gnarwl garde en mémoire ceux qui ont reçu le message d'absence afin d'en envoyer qu'un seul par destinataire sur une période donnée.
Le script fork.pl introduit par Phamm permet :
- d'envoyer le message au destinataire (copie dans maildir)
- de renvoyer le message d'absence à l'expéditeur
- de transférer le message au destinataire (vacationForward)
L'utilisateur peut paramètrer via Phamm et LDAP :
- l'activation du message d'absence (vacationActive)
- le message à envoyer (vacationInfo)
- un destinataire (vacationForward) à qui retransmettre tous les messages, s'il est défini
Installation
Télécharger gnarwl sur www.home.unix-ag.org/patrick/index.php?gnarwl
#wget http://www.home.unix-ag.org/patrick/software/gnarwl/gnarwl-3.3.tgz #cd gnarwl-<version> #./configure
Editer Makefile en remplaçant prefix=/usr/local par prefix=
#make #make install
Configuration de Gnarwl
Le fichier gnarwl.cfg doit être protégé mais doit aussi pouvoir être lu par l'utilisateur vmail.
#chown vmail:vmail /etc/gnarwl.cfg #chmod 600 /etc/gnarwl.cfg
Editer gnarwl.cfg: <licode file=/etc/gnarwl.cfg>
- From where to start searching the LDAP tree (you have to change this!)
base o=hebergement,dc=livois,dc=com
- After how many hours the block on a specific sender/receiver combo expires.
- Set to 0 to deactivate this feature (not recommended).
blockexpire 48
- How to send mail. Specify full name to your MTA plus arguments. Only the
- map_sender and map_receiver macros are expanded. This program must be
- able to accept email from stdin.
mta /usr/sbin/sendmail -F $recepient -t $sender </licode>
Changer les droits utilisateurs du répertoire de travail de gnarwl car il sera lancé par l'utilisateur vmail (cf master.cf).
#chown vmail:vmail /var/lib/gnarwl -R
Configuration de Postfix
Editer main.cf <licode file=/etc/postfix/main.cf>
- transport on the fly for gnarwl
gnarwl_server_host = $ldap_server_host gnarwl_search_base = $ldap_search_base gnarwl_query_filter = (&(&(objectClass=VirtualMailAccount)(mail=%s))(vacationActive=TRUE)(accountActive=TRUE)(delete=FALSE)) gnarwl_result_attribute = otherTransport gnarwl_cache = no gnarwl_bind = no
transport_maps = hash:/etc/postfix/transport, ldap:gnarwl, ldap:transport </licode>
Editer master.cf <licode file=/etc/postfix/master.cf> gnarwl unix - n n - - pipe
flags=FRh user=vmail argv=/usr/local/bin/gnarwl -s ${sender} -a ${recipient}
phamm unix - n n - - pipe
flags=FRh user=vmail argv=/opt/script/fork.pl -m ${recipient}
</licode>
L'utilisation de « gnarwl: » dans otherTransport empêche le destinataire initial de recevoir le mail qui lui destiné. Pour qu'il lui parvienne, utiliser « phamm: » dans otherTransport.
Editer add_mail.php <licode file="<phamm>/plugins/mail/functions/add_mail.php">
// vacation $info["vacationActive"] = "FALSE"; $info["otherTransport"] = "gnarwl:"; $info["otherTransport"] = "phamm:";
</licode>
Le rajout de la ligne avec « phamm: » fait que les utilisateurs recevront les messages qui leurs sont destinés même s'ils ont paramétré un message d'absence.
Editer /opt/script/fork.pl
#mkdir /opt/script #cp /var/www/www.livois.com/phamm/examples/fork/fork.pl /opt/script/ #chown vmail:vmail /opt/script/fork.pl #chmod u+x /opt/script/
<licode file=/opt/script/fork.pl>
$ldap->bind("cn=phamm,o=hebergement,dc=livois,dc=com", password=>"xxxxx");
- CHANGE-THIS
$mesg = $ldap->search(filter=>"(mail=$mail)", base=>"o=hebergement,dc=livois,dc=com",
attrs=> ['vdHome', 'mailbox', 'vacationForward'] );
$cmd2="/bin/gnarwl";
- CHANGE-THIS
</licode>
Aller plus loin
- Lire la FAQ (/share/doc/packages/gnarwl/FAQ.gz ) de gnarwl incluse dans le package.
- La liste de ceux qui ont reçu le message d'absence se trouve dans des fichiers binaires lisible avec le programme damnit livré avec gnarwl :
# damnit -l /var/lib/gnarwl/block/clemence\@livois.com
Fri Nov 11 19:33:40 2005 -> christophe.delivois@free.fr
- Quand l'utilisateur désactive le message d'absence, phamm devrait le supprimer (est-ce dans <www>/phamm/plugins/mail/functions/modify_mail.php ?).
Copyright
© 2006-2007 Christophe de Livois
Vous avez l'autorisation de copier, distribuer et/ou modifier ce document suivant les termes de la GNU Free Documentation License, Version 1.2 ou n'importe quelle version ultérieure publiée par la Free Software Foundation; sans section invariante, sans page de garde, sans entête et sans page finale. Pour plus d'informations consulter le site de l'APRIL. |