Webmail
Interface graphique de messagerie
Installer une interface graphique de messagerie IMP
Introduction
Ce guide est basé sur l'excellent travail original en anglais de Olivier Schulze L, site web http://www.geocities.com/oliversl/imp/, pour distribution RedHat 9.
Dans ce document, nous allons décrire étape par étape les instructions nécessaires pour configurer une interface graphique, pour un serveur local de messagerie postfix, sur une distribution Mandrake Linux 9.1.
Vous devez auparavant récupérer les paquetages nécessaires à l'installation de l'interface web sur le site de Horde. Il vous faut HORDE 2.2.4 (Architecture PHP), IMP 3.2.2 (Client IMAP), TURBA 1.2 (Gestionnaire de contacts), KRONOLITH 1.1 (Calendrier/Organiseur journalier), MNEMO 1.1 (Gestionnaire de note), NAG 1.1 (Gestionnaire de tâche) et PEAR 1.1, ou leurs versions plus récentes. Le tout est diffusé sous licence libre GNU/GPL, sauf Horde qui est en licence Lesser GNU/GPL.
Si vous souhaitez autoriser le changement en ligne de mot de passe pour la boîte à lettres, ce guide décrit aussi l'installation de POPPASSD-CETI, et de PASSWD 2.2 (Gestionnaire de mot de passe).
En plus de Passwd, Il est aussi possible d'installer facilement les modules FORWARDS 2.2 (Redirection) et VACATION 2.2 (Répondeur automatique), le tout groupé dans le module ACCOUNTS 2.1 (Gestionnaire de Passwd, Forwards et Vacation). Cela n'est pas expliqué dans ce guide mais ne présente aucune difficulté particulière.
Ce guide vous aidera à configurer une installation standard, uniquement testée pour un réseau local, non relié à Internet. Cela doit vous permettre de réaliser un petit serveur de messagerie interne, pour une petite structure, avec une interface graphique ergonomique accessible depuis un navigateur Internet.
Il est ensuite possible de "tuner" votre configuration pour qu'elle corresponde à vos souhaits, ou/et pour réaliser un serveur de messagerie Internet (Le webmail de Free est basé sur horde/imp), mais cela sort du cadre de ce guide et de mes compétences : une attention particulière doit être notamment accordée à la sécurité.
Pré-requis
Pour suivre les instructions ci-dessous, vous aurez besoin d'un minimum de connaissances relatives à Linux, notamment sur l'usage de la console, si vous installez un serveur de messagerie minimum (sans interface graphique type KDE ou Gnome).
Nous utiliserons un serveur Mandrake Linux 9.1, d'adresse IP 192.168.10.1. Je suppose qu'Apache, Mysql, Php et Postfix sont installés et fonctionnent correctement. Sendmail est éventuellement utilisable à la place de Postfix.
Le nom de domaine du serveur est :
Vous pouvez vérifier le nom de domaine votre machine avec l'instruction :
Les paquetages (et leurs dépendances) suivants doivent être présents :
- apache2-2.0.44-11mdk
- apache2-mod_php-2.0.44_4.3.1-2mdk
- php-pear-4.3.0-3mdk
- php-imap-4.3.0-3mdk
- php-ldap-4.3.0-3mdk
- php-mysql-4.3.0-2mdk
- php-xml-4.3.0-2mdk
- mysql-4.0.11a-5mdk
- mysql-client-4.0.11a-5mdk
- imap-2002a-2mdk
- postfix-2.0.6-1mdk
- tcp_wrappers-7.6-22mdk
- poppassd-ceti-1.8-3mdk
- xinetd-2.3.10-1mdk
Quelques rappels
- Pour visionner les paquetages installés sur votre système : rpm -qa | less(Taper q pour quitter)
Si vous n'avez pas tout, il faut installer les paquetages manquants :
rpm -ivh nom_du_paquetage.rpm pour installer un nouveau paquetage
- Vous devez avoir les services httpd, mysql, postfix, xinetd activés. Pour visionner les services fonctionnant :chkconfig --list | less
- Pour mettre en marche un service (exemple avec apache) :
Arrêt d'Apache :
Mise en marche d'Apache :
Redémarrage d'Apache :
- Pour faire en sorte qu'à chaque démarrage de votre poste, le service Apache fonctionne :chkconfig apache on
- Pour avoir une documentation sur une instruction Linux :man instruction(exemple : man chkconfig).
A propos de la configuration des services, consulter également l'article sur la [../admin/daemons.php3 gestion des démons]. - Pour savoir où vous vous situez dans l'arborescence de linux : pwd
- Enfin, n'oubliez pas que l'appui sur la touche de tabulation "tab" permet de compléter un nom :
cd /v "tab" donne automatiquement cd /var
Configurer Apache
Le répertoire d'installation sera : /var/www/html/mail/.
Lancer le service imap, dépendant de xinetd :
service xinetd restart
Modifier php.ini
Modifier le fichier /etc/php.ini :
;short_open_tag = On # ligne à commenter
extension_dir = "/usr/lib/php/extensions"
Fichiers de configuration
Modifier le fichier /etc/httpd/conf/httpd.conf :
ServerName mail.example.com
Modifier le fichier /etc/httpd/conf/commonhttpd.conf :
Ajouter la ligne suivante dans le fichier /etc/hosts :
Remarque : une autre méthode consiste à configurer un VirtualHost.
Création répertoire
Tester Apache
Tester la configuration puis redémarrer Apache pour que les changements prennent effet :
service httpd restart
Créer un fichier temporaire :
Puis à l'aide d'un navigateur, aller à l'adresse Internet : http://mail.example.com/essai.html.
Remarque : On peut utiliser un navigateur texte comme Lynx pour tester la configuration, si l'on n'a pas installé d'interface graphique sur le serveur ou si aucun poste distant n'est connecté au serveur :
Configurer Horde
Une fois Apache configuré, vous avez besoin d'installer et de configurer Horde.
Installer Horde
A partir du répertoire où vous avez stocké les paquetages Horde :
cd /var/www/html/mail
mv horde-2.2.4 horde
Installer Pear
Si vous avez installé le paquetage rpm php-pear, il faut rajouter les modules Pear Date, HTML_Common et HTML_Select. Pour cela, télécharger ces paquetages et les décompresser dans un répertoire quelconque (tar zxvf nom_du_paquetage). Il faut ensuite copier le contenu de ces paquetages dans le répertoires /usr/share/pear en respectant l'arborescence suivante :
Paquetages Date :
mkdir /usr/share/pear/Date
/usr/share/pear/Date.php
/usr/share/pear/Date/Calc.php
/usr/share/pear/Date/Human.php
/usr/share/pear/Date/TimeZone.php
Paquetage HTML_Common :
mkdir /usr/share/pear/HTML
/usr/share/pear/HTML/Common.php
Paquetage HTML_Select :
/usr/share/pear/HTML/Select.php
Si vous n'avez pas installé php-pear, voici comment installer Pear à partir du paquetage original PEAR 1.1 :
cd /usr/share
mv pear-1.1 pear
chown root.root -R pear
Cette procédure sera alors à effectuer à chaque mise à jour de php.
Configurer MySQL
Tester si MySQL est lancé :
Choisissez un mot de passe pour la base Horde :
Créer la base Horde :
mysql --user=root --password < mysql_create.sql
Le mot de passe demandé est celui d'accès root à MySQL
Redémarrer MySQL :
Tester si vous pouvez vous connecter à la base :
Un mot de passe vous est demandé : rentrer celui choisi ci-dessus.
Quitter mysql avec la commande 'exit'
Modifier les fichiers de config Horde
Renommer tous les fichiers :
Modifier le fichier /var/www/html/mail/horde/config/horde.php :
$conf['compress_pages'] = true;
// utiliser IMAP pour authentifier les utilisateurs
$conf['auth']['driver'] = 'imap';
$conf['auth']['params']['dsn'] = '{localhost:143/imap}INBOX';
// utiliser MySQL pour stocker les données de Horde
$conf['prefs']['driver'] = 'sql';
$conf['prefs']['params']['phptype'] = 'mysql';
$conf['prefs']['params']['hostspec'] = 'localhost';
$conf['prefs']['params']['username'] = 'horde';
$conf['prefs']['params']['password'] = 'mon_mot_de_passe';
$conf['prefs']['params']['database'] = 'horde';
$conf['prefs']['params']['table'] = 'horde_prefs';
// Le SMTP postfix, pour envoyer les emails
$conf['mailer']['type'] = 'smtp';
Remarque 1 : mon_mot_de_passe est à remplacer par le mot de passe de la base horde mysql choisi au paragraphe [#configurer mysql Configurer mysql].
Remarque 2 : Si vous souhaitez utiliser sendmail à la place de postfix, il faut remplacer smtp par sendmail ci-dessus. Il faudra alors aussi ajouter dans le fichier /etc/mail/trusted-users le mot apache, pour l'autoriser à envoyer des mails par l'intermédiaire de sendmail.
Modifier le fichier /var/www/html/mail/horde/config/lang.php :/p>
Tester Horde
Vous pouvez tester la configuration initiale de Horde en allant avec un
Puis essayer :
Vous ne devez pas pouvoir accéder avec un navigateur à :
http://mail.example.com/horde/config/
Configurer IMP
Installer IMP
A partir du répertoire où vous avez stocké le paquetage IMP :
cd /var/www/html/mail/horde
mv imp-3.2.2 imp
Configurer Horde pour IMP
Déclarer IMP dans Horde :
Modifier le fichier /var/www/html/mail/horde/config/registry.php :
$this->registry['auth']['login'] = 'imp';
$this->registry['auth']['logout'] = 'imp';
// Montrer l'icône imp dans horde
$this->applications['imp'] = array(
...
'status' => 'active'
);
Configurer les fichiers de config d'IMP
Renommer tous les fichiers :
Modifier le fichier /var/www/html/mail/horde/imp/config/servers.php :
$servers['imap'] = array(
'name' => 'IMAP Server',
'server' => 'localhost',
'protocol' => 'imap/notls',
'port' => 143,
'folders' => 'mail/',
'namespace' => '',
'maildomain' => 'example.com',
'smtphost' => 'mail.example.com',
'realm' => '',
'preferred' => ''
);
Remarque : Il doit être possible à ce niveau de configurer le service sécurisé d'imap (protocol imap/ssl, port 993).
Modifier le fichier /var/www/html/mail/horde/imp/config/prefs.php :
// regarder dans /horde/config/lang.php pour les alias de langue
$_prefs['language'] = array(
'value' => 'fr_FR',
'locked' => false,
'shared' => true,
'type' => 'select',
'desc' => _("Select your preferred language:")
);
// boite postale de l'utilisateur par défaut
// la valeur par défaut INBOX ne peut être changée
$_prefs['mailbox'] = array(
'value' => 'INBOX',
'locked' => true,
'shared' => false,
'type' => 'implicit'
);
// Utiliser IMAP
// Montre seulement les répertoires souscrits par IMAP
$_prefs['subscribe'] = array(
'value' => 1,
'locked' => true,
'shared' => false,
'type' => 'checkbox',
'desc' => _("Use IMAP folder subscriptions")
);
// Répertoire des courriers envoyés
// Utilise le même nom que Mozilla, Outlook Express, etc
$_prefs['sent_mail_folder'] = array(
'value' => 'Sent',
'locked' => false,
'shared' => true,
'type' => 'implicit'
);
// Répertoire poubelle
// Utilise le même nom que Mozilla, Outlook Express, etc
$_prefs['trash_folder'] = array(
'value' => 'Trash',
'locked' => false,
'shared' => false,
'type' => 'implicit'
);
Tester IMP
Vous pouvez tester la configuration initiale de IMP en allant avec un navigateur web sur : http://mail.example.com/horde/imp/test.php.
Se logger avec un utilisateur/passe valide (en l'occurrence un compte pop valide).
Essayer d'envoyer des mails à un autre compte et à vous même.
Utiliser une adresse mail du type utilisateur@mail.example.com Nous verrons plus loin (paragraphe 8) comment [#configurer postfix configurer postfix] pour utiliser une adresse mail du type utilisateur@example.com
Pour créer un compte sans possibilité de connection sur votre serveur, uniquement destiné à la messagerie :
Puis définir le mot de passe du compte nouvellement créé avec passwd :
Remarque 1 : Avec un poste Windows distant, il faut configurer le fichier hosts. Dans le répertoire : C:\WINNT\SYSTEM32\DRIVERS\ETC), rajouter la ligne : 192.168.10.1 mail.example.com Ceci est probablement inutile si votre serveur de messagerie est aussi serveur de nom (DNS).
Remarque 2 : Vous pouvez aussi modifier le fichier 'trailer.txt' situé dans /horde/imp/config/. Ce fichier vous permet d'ajouter un texte à la fin de tous les mails qui seront envoyés par IMP. Par défaut, le texte suivant est ajouté à tous les messages : This mail sent through IMP: http://horde.org/imp/. Si vous ne voulez rien ajouter, effacer tout ce qu'il y a dans ce fichier.
Vous ne devez pas pouvoir accéder avec un navigateur à : http://mail.example.com/horde/config/
Configurer Turba
Maintenant que vous pouvez lancer Horde et IMP, vous avez besoin d'un carnet d'adresses afin de gérer vos contacts.
Installer Turba
A partir du répertoire où vous avez stocké le paquetage TURBA :
cd /var/www/html/mail/horde
mv turba-1.2 turba
cd /var/www/html/mail/horde/turba/config
Renommer tous les fichiers :
Configurer Turba
Déclarer Turba dans Horde :
Modifier le fichier /var/www/html/mail/horde/config/registry.php :
$this->applications['turba'] = array(
...
'status' => 'active'
);
Configurer dans IMP l'icône pour Turba :
Modifier le fichier /var/www/html/mail/horde/imp/config/conf.php :
Configurer dans Turba l'icône pour IMP :
Modifier le fichier /var/www/html/mail/horde/turba/config/conf.php :
Modifier le fichier /var/www/html/mail/horde/turba/config/prefs.php :
// Règler le même langage par défaut que Horde et IMP
$_prefs['language'] = array(
'value' => 'fr_FR',
'locked' => false,
'shared' => true,
'type' => 'select',
'desc' => _("Select your preferred language:")
);
Configurer Turba pour utiliser MySQL pour enregistrer les données des contacts :
Modifier le fichier /var/www/html/mail/horde/turba/config/sources.php :
// de la base de données comme dans /horde/config/horde.php
// Configurer aussi le titre dans votre langue
$cfgSources['localsql'] = array(
'title' => 'My Address Book',
'type' => 'sql',
'params' => array(
'phptype' => 'mysql',
'hostspec' => 'localhost',
'username' => 'horde',
'password' => 'mon_mot_de_passe',
'database' => 'horde',
'table' => 'turba_objects'
),
);
Remarque : mon_mot_de_passe est à remplacer par le mot de passe de la base horde mysql choisi au paragraphe [#configurer mysql Configurer mysql]
Configurer MySQL pour Turba
Créer la base dans MySQL que Turba utilisera :
mysql --user=root --password -D horde < turba.sql
Tester Turba
Vous pouvez tester la configuration initiale de Turba en allant avec un navigateur web sur :
Créer une nouvelle entrée dans le carnet d'adresse et aller dans IMP, puis Options et choisissez d'utiliser le carnet d'adresses avec le nom "My Address Book".
Configurer poppassd (optionnel : non sécurisé)
Maintenant que vous avez configuré Horde avec IMP et Turba, vous avez besoin de fournir à vos utilisateurs une méthode pour changer leur mot de passe au travers de Horde.
Installer poppassd-ceti
Activer le service poppassd :
service xinetd restart
Installer passwd
A partir du répertoire où vous avez stocké le paquetage PASSWD :
cd /var/www/html/mail/horde/
mv passwd-2.2 passwd
cd /var/www/html/mail/horde/passwd/config
Renommer tous les fichiers :
Configurer Horde pour Passwd
Modifier le fichier /var/www/html/mail/horde/config/registry.php :
'fileroot' => dirname(__FILE__) . '/../passwd',
'webroot' => $this->applications['horde']['webroot'] . '/passwd',
'icon' => $this->applications['horde']['webroot'] . '/passwd/graphics/lock.gif',
'name' => _("Password"),
'allow_guests' => false,
'status' => 'active'
);
Configurer IMP pour Passwd
Configurer l'icône Passwd dans IMP :
Modifier le fichier /var/www/html/mail/horde/imp/config/conf.php :
Configurer le fichier de config de Passwd
Configurer l'icône pour IMP dans Passwd :
Modifier le fichier /var/www/html/mail/horde/passwd/config/conf.php :
Editer le fichier /var/www/html/mail/horde/passwd/config/backends.php :
'name' => 'nom de votre organisation',
'preferred' => '',
'password policy' => array(),
'driver' => 'poppassd',
'params' => array(
'host' => 'localhost',
'port' => '106'
)
);
Tester Passwd
Vous pouvez tester la configuration initiale de Passwd en allant avec un navigateur web sur : http://mail.example.com/horde/passwd/
Regardez dans /var/log/messages pour les messages de débuggage.
Changez votre mot de passe. Attention : n'importe quel mot de passe de n'importe quelle longueur sera accepté car poppassd est lancé sous l'identité root.
Kronolith, Mnemo et Nag
Décompresser les paquetages et renommer chaque répertoire :
tar zxvf mnemo-1.1.tar.gz -C /var/www/html/mail/horde/
tar zxvf nag-1.1.tar.gz -C /var/www/html/mail/horde/
cd /var/www/html/mail/horde/
mv kronolith-1.1 kronolith
mv mnemo-1.1 mnemo
mv nag-1.1 nag
Installer Kronolith
Créer la base dans MySQL que Kronolith utilisera :
# mysql --user=root --password -D horde < kronolith.sql
Modifier le fichier /var/www/html/mail/horde/config/registry.php :
'fileroot' => dirname(__FILE__) . '/../kronolith',
'webroot' => $this->applications['horde']['webroot'] . '/kronolith',
'icon' => $this->applications['horde']['webroot'] . '/kronolith/graphics/kronolith.gif',
'name' => _("Calendar"),
'allow_guests' => false,
'status' => 'active'
);
Configurer l'icône Kronolith dans IMP :
Modifier le fichier /var/www/html/mail/horde/imp/config/conf.php :
cd /var/www/html/mail/horde/kronolith/config
Renommer tous les fichiers :
Configurer l'icône IMP dans Kronolith et les paramètres d'accès à la base MySQL :
Modifier le fichier /var/www/html/mail/horde/kronolith/config/conf.php :
$conf['calendar']['driver'] = 'sql';
$conf['calendar']['params']['phptype'] = 'mysql';
$conf['calendar']['params']['hostspec'] = 'localhost';
$conf['calendar']['params']['username'] = 'horde';
$conf['calendar']['params']['password'] = 'mon_mot_de_passe';
$conf['calendar']['params']['database'] = 'horde';
$conf['calendar']['params']['table'] = 'kronolith_events';
$conf['menu']['apps'] = array('imp');
Remarque : mon_mot_de_passe est à remplacer par le mot de passe de la base horde mysql choisi au paragraphe « Configurer mysql ».
Installer Mnemo
Créer la base dans MySQL que Mnemo utilisera :
mysql --user=root --password -D horde < mnemo_memos.sql
Modifier le fichier /var/www/html/mail/horde/config/registry.php :
'fileroot' => dirname(__FILE__) . '/../mnemo',
'webroot' => $this->applications['horde']['webroot'] . '/mnemo',
'icon' => $this->applications['horde']['webroot'] . '/mnemo/graphics/mnemo.gif',
'name' => _("Memos"),
'allow_guests' => false,
'status' => 'active'
);
Configurer l'icône Mnemo dans IMP :
Modifier le fichier /var/www/html/mail/horde/imp/config/conf.php :
cd /var/www/html/mail/horde/mnemo/config
Renommer tous les fichiers :
Configurer l'icône IMP dans Mnemo et les paramètres d'accès à la base MySQL :
Modifier le fichier /var/www/html/mail/horde/mnemo/config/conf.php :
$conf['storage']['driver'] = 'sql';
$conf['storage']['params']['phptype'] = 'mysql';
$conf['storage']['params']['hostspec'] = 'localhost';
$conf['storage']['params']['username'] = 'horde';
$conf['storage']['params']['password'] = 'mon_mot_de_passe';
$conf['storage']['params']['database'] = 'horde';
$conf['storage']['params']['table'] = 'mnemo_memos';
$conf['menu']['apps'] = array('imp');
Remarque : mon_mot_de_passe est à remplacer par le mot de passe de la base horde mysql choisi au paragraphe [#configurer mysql Configurer mysql]
Installer Nag
Créer la base dans MySQL que Nag utilisera :
mysql --user=root --password -D horde < nag_tasks.sql
Modifier le fichier /var/www/html/mail/horde/config/registry.php :
'fileroot' => dirname(__FILE__) . '/../nag',
'webroot' => $this->applications['horde']['webroot'] . '/nag',
'icon' => $this->applications['horde']['webroot'] . '/nag/graphics/nag.gif',
'name' => _("Tasks"),
'allow_guests' => false,
'status' => 'active'
);
Configurer l'icône Nag dans IMP :
Modifier le fichier /var/www/html/mail/horde/imp/config/conf.php :
cd /var/www/html/mail/horde/nag/config
Renommer tous les fichiers :
Configurer l'icône IMP dans Nag et les paramètres d'accès à la base MySQL :
Modifier le fichier /var/www/html/mail/horde/nag/config/conf.php :
$conf['storage']['driver'] = 'sql';
$conf['storage']['params']['phptype'] = 'mysql';
$conf['storage']['params']['hostspec'] = 'localhost';
$conf['storage']['params']['username'] = 'horde';
$conf['storage']['params']['password'] = 'mon_mot_de_passe';
$conf['storage']['params']['database'] = 'horde';
$conf['storage']['params']['table'] = 'nag_tasks';
$conf['menu']['apps'] = array('imp');
Remarque : mon_mot_de_passe est à remplacer par le mot de passe de la base horde mysql choisi au paragraphe [#configurer mysql Configurer mysql]
Sécurité
Vérifier que les répertoires config de chaque module Horde sont inaccessibles à un navigateur web. Si ce n'est pas le cas, revoir la configuration de Apache.
Une fois l'installation terminée, lancer le script :
sh scripts/set_perms.sh
Répondre 'apache' pour le groupe, et toutes les autres questions par oui (y).
Ce script va changer le propriétaire, le groupe et les autorisations de chaque fichier à l'intérieur du répertoire horde.
Configurer Postfix
En réseau local, lorsque machin@mail.example.com envoie un mail à truc@mail.example.com, l'adresse de réponse est machin@example.com. Postfix ne peut envoyer la réponse.
Pour que cela fonctionne correctement, il faut rajouter (ou décommenter) les lignes suivantes du fichiers /etc/postfix/main.cf :
mydestination = $myhostname, localhost.$mydomain, $mydomain
Conclusion
Si vous avez suivi ce document jusqu'à ce point, vous disposez d'une interface web complète de messagerie, avec la possibilité de changer de mot de passe en ligne, et avec un gestionnaire d'adresse, de calendrier, mémos et tâches.
Toutes les réponses à vos questions en tant qu'utilisateur de cette interface sont probablement dans la FAQ utilisateur de horde.
En tant qu'administrateur, il vous est maintenant possible de configurer plus finement votre interface. Beaucoup d'informations intéressantes sont disponibles dans la FAQ administrateur de Horde. Et en cas de problème insoluble, après avoir consulté la documentation présente avec chaque paquetage (dans le répertoire /docs associé), le site Horde et les FAQ, il y a encore la possibilité de poser vos questions sur la mailing-list de Horde...
Copyright
Copyright © 05/05/2004, Laurent Dubettier-Grenier
Ce document est publié sous licence Creative Commons Attribution, Partage à l'identique, Contexte non commercial 2.0 : http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ |