Interface utilisateurs

De wikilivois
Sauter à la navigation Sauter à la recherche

Phamm

http://www.phamm.org

Installation

http://www.phamm.org

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/


  /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


#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

  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');


Envoi d'un message de bienvenu à la création d'un compte

  config.inc.php
// Welcome message
define ('SEND_WELCOME',1);
$welcome_msg = '../welcome_message.txt';
$welcome_subject = 'Bienvenue!';
$welcome_sender = 'chris@livois.com';
//$welcome_bcc = 'root@localhost';


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

  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";


Plugin mail

Le plugin mail utilise les quatre classes LDAP suivantes :

  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>


Nous n'utilisons pas le suffix S pour la gestion des quota. La ligne <suffix>S</suffix> est supprimée.

  plugins/mail.xml
                        <attribute name="quota">
                                <table>1</table>
                                <default>50</default>
                                <multiplier>1048576</multiplier>
                                <minAuthLevel>4</minAuthLevel>
                        </attribute>


Le répertoire vdHome doit être changé à /home/vmail/ pour notre configuration.

  plugins/mail.xml
                        <attribute name="vdHome">
                                <hidden>1</hidden>
                                <required>1</required>
                                <default>/home/vmail/</default>
                                <minAuthLevel>4</minAuthLevel>


Pour que les utilisateurs puissent changer eux même leur niveau de spam:

  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>


Plugin person

  plugins/person.xml
        <account>
                <objectClasses>
                        <objectClass name="inetOrgPerson">
                                <bug>0</bug>
                        </objectClass>
                </objectClasses>
                <attributes>
                        <attribute name="givenName">
                                <table>1</table>
                        </attribute>
                        <attribute name="telephoneNumber">
                                <table>1</table>
                        </attribute>
                        <attribute name="homePhone">
                                <table>1</table>
                        </attribute>
                        <attribute name="mobile">
                                <table>1</table>
                        </attribute>
                        <attribute name="homePostalAddress">
                                <textarea>1</textarea>
                        </attribute>
                </attributes>
        </account>


Divers

  config.inc.php
// Default language (user can change it)
$language               = 'fr_FR';


  config.inc.php
// Permit login without @domain (use it with carefull)
define ('DEFAULT_DOMAIN','livois.com')


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 :

  www-data/main.php
       //$uid = str_replace ( '@', CHR_UID_ACCOUNT, $mail);
        $uid = strtok($mail,'@');


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:

  /etc/crontab
0,30 */1 * * * root /var/www/www.livois.com/phamm/tools/cleaner.sh


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:

  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;
}


Traduction

Exemple :

  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';


Configurer le filtre de spam d'amavisd

http://www.ijs.si/software/amavisd/README.lookups.txt

  /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))'
};


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:

  /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


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

  /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


Editer master.cf

  /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}


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

  
/plugins/mail/functions/add_mail.php">
    // vacation
    $info["vacationActive"]                     = "FALSE";
    $info["otherTransport"]                     = "gnarwl:";
    $info["otherTransport"]                     = "phamm:";


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/


  /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


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

Tête de GNU 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.