Starbridge Corp

Installation Webmail Horde

lundi 6 août 2007 par tonio

 Présentation

Cet article va détailler pas à pas l’installation d’un webmail sur une plateforme Debian 5.0 lenny (cela fonctionne bien sur avec Squeeze).

Il s’agit du Webmail Horde, très complet au niveau des fonctionnalités, modulaire et très bien maintenu.

Il s’agit en fait d’un groupware, dont le webmail n’est qu’un élément. Cela permettra des évolutions futures.

Plusieurs version sont disponibles sur le site de Horde :

On prendra le package Horde Groupware Webmail Edition qui facilite l’installation. On peut egalement choisir d’installer séparement les modules. Le reste du tuto est compatible avec une installation standard.

On part du principe que le serveur de mail est installé selon le tuto Installation Serveur Mail Postfix, Amavisd, Mysql, Spamassassin, Dspam,Courier-IMAP

Pour fonctionner en toute sécurité il faut activer le SSL sur Apache (si ce n’est pas déjà fait)

 Apache2.2 SSL

On active le ssl par la commande :

a2enmod ssl

Puis on crée le virtual host :

cd /etc/apache2/sites-available/
vi ssl

Et on colle :

On édite le fichier ports.conf pour activer le port 443 :

vi /etc/apache2/ports.conf

et on ajoute la ligne

listen 443

puis on active le virtual host :

a2ensite ssl

Génération des certificats :

Dans le cas ou on a suivi le tuto sur l’installation du serveur de mail cette etape a déja été effectuée. On peut passer à la suivante.

Pour un serveur en production, il serait préférable d’utiliser un véritable certificat fourni et signé par une autorité de certification de confiance. (payant).

On édite la configuration de ssl pour pouvoir signer des certificats sur 10 ans, au lieu d’1 an par défaut :

vi /etc/ssl/openssl.cnf on change la ligne default_days en

Si on n’en possede pas, on crée le Certificat Racine :

cd ~
/usr/lib/ssl/misc/CA.pl -newca

on entre les parametres requis, on choisis un pass phrase de son choix et on laisse "challenge password" vide.

Ce certificat racine sert à signer les certificats. Il est localisé dans le répertoire /demoCA.

On crée maintenant une clé privée pour le serveur ainsi qu’un certificat public non signé.

Il est important de crée un certificat avec le meme nom que celui utilisé pour la connection. Par exemple si on se connecte au serveur web par www.starbridge.org il faut créer un certificat avec un Common Name en www.starbridge.org.

On part du principe que l’on utilise www.starbridge.org.

On crée donc un certificat public non signé et une clé, puis on le signe avec le CA :

cd ~/CERT
openssl req -new -nodes -keyout starbridge-key-www.pem -out starbridge-req-www.pem -days 3650

On entre les informations en prenant soin de bien specifier le Common Name en www.starbridge.org. Il faut egalement respecter les informations entrées dans le CA plus tot.

cd ~
openssl ca -out CERT/starbridge-cert-www.pem -infiles CERT/starbridge-req-www.pem
cd CERT/
cat starbridge-key-www.pem starbridge-cert-www.pem >starbridge-certkey-www.pem
mkdir /etc/apache2/ssl
cp starbridge-certkey-www.pem /etc/apache2/ssl/
chmod 600 /etc/apache2/ssl/starbridge-certkey-www.pem

On redémarre Apache : /etc/init.d/apache2 restart

 Installation de Horde

- On installe maintenant les modules nécessaires à Horde.

ATTENTION : on part du principe que l’on a suivi au préalable le tuto sur l’installation du serveur de mail et que Php5 et Mysql sont donc déjà installés.

aptitude install php5-imap php5-mcrypt php5-gd php-pear php5-dev libmagic-dev memcached php5-memcache unrtf libwpd-tools xlhtml source-highlight ppthtml rpm wv enscript

activer memcache en éditant le fichier /etc/default/memcache

lancer memcache

/etc/init.d/memcache start

On installe le module fileinfo :

pecl install fileinfo

On crée le fichier fileinfo.ini pour charger le module dans php :

vi /etc/php5/conf.d/fileinfo.ini

On met la ligne suivante dans ce fichier :

extension=fileinfo.so

On installe le module lzf :

pecl install lzf

On crée le fichier lzf.ini pour charger le module dans php :

vi /etc/php5/conf.d/lzf.ini

On met la ligne suivante dans ce fichier :

extension=lzf.so

On relance Apache :

/etc/init.d/apache2 restart

On installe les modules pear

- On installe Horde :

On pointe le navigateur sur la page test.php qui va permettre de vérifier notre configuration :

https://www.starbridge.org/horde/te...

Certains elements seront en rouge (conf.php, php.ini) mais cela n’est pas bloquant. Si tout le reste est OK on passe à la configuration :

php /var/www/horde/scripts/setup.php

Plusieurs étapes sont à effectuer dans cet assistant d’installation :

  • sélection du user de la base : horde (on créera cet utilisateur après dans mysql)
  • création de la base par le user mysql root
  • sélection de l’utilisateur administrateur du webmail : admin@starbridge.org

On crée l’utilisateur horde dans mysql :

On sécurise les fichiers de configuration (password d’accès à la base) :

Le Webmail est installé !

On peut tester en se connectant avec l’utilisateur admin@starbridge.org

ATTENTION : l’utilisateur sera toujours l’adresse email complète conformément à la configuration de Courier imap

 Paramétrage d’IMP

IMP est le webmail proprement dit.

Par défaut il est fonctionnel mais nous devons paramétrer l’accès SMTP pour respecter les règles que nous avons établies dans l’installation du serveur email.

En effet, lorsque le webmail envoie un mail il utilise alors l’ip 127.0.0.1. (si il est installé sur la même machine bien évidemment) Le problème est que nous avions articulé la sécurité de postifx, entre autre, autour des paramètres IP.

127.0.0.1 est considéré comme mynetworks et cela permettrait aux utilisateurs du webmail de s’affranchir des restrictions mises en place sur le serveur mail (antispoofing du mail from, scan AV et Spam)

On édite le fichier servers.php de imp

vi /var/www/horde/imp/config/servers.php

Note : si l’on a installé la version RC du webmail il faut modifier 'driver' => 'courier' par 'driver' => 'imap',

Commentaires :

- la partie IMAP : On specifie le fqdn du serveur (et non 127.0.0.1) et on reste en non sécurisé vu que le serveur est localisé sur la même machine.

- la partie SMTP : pour le smtphost on spécifie l’ip locale du serveur (et non 127.0.0.1). Par cette simple modification, postfix ne considerera plus le webmail comme faisant partie de mynetwork qui se verra appliqué les mêmes règles que les postes du LAN. L’autorisation de sortie se fera par une authentification SASL.

On se connecte à Horde et on va dans le panneau d’administration et l’onglet Mailer :

Administration ==> Configuration ==> Horde ===> Onglet Mailer

on sélectionne :

ATTENTION : on laisse vide les cases :
- The username to use for SMTP auth
- The password to use for SMTP auth

ainsi horde fournira automatiquement les credentials de la connection.

On teste l’envoi d’email par horde.

On vérifie que l’antispoofing du Mailfrom fonctionne bien en créant une identité supplémentaire et en envoyant un email par celle ci :

Options ==> Options Globales ==> Données Personnelles ==> créer un nouveau profil.

 Paramétrage du générateur de règles maildrop : INGO

INGO est le gestionnaire des filtres. IL sert à générer des fichiers mailfilter pour chaque utilisateur.

Ainsi un utilisateur pourra sans connaitre la syntaxe de maildrop, effectuer un filtrage sur ses mails : Redirection dans des dossiers, listes noires, listes blanches, etc, etc, mais aussi générer un code pour un autoreply, et le tout de manière entièrement autonome.

Le problème de la configuration d’INGO dans notre cas de figure réside dans les permissions d’écriture dans les répertoires des users (le user vmail, le même pour tout le monde car nous sommes dans une configuration virtual users).

La solution est d’utiliser un serveur FTP pour faire le lien entre horde et le Maildir. C’est pureftpd qui sera utilisé car il permet de s’authentifier sur un backend Mysql.

Note : si on possède déjà un serveur ftp, il faudra alors faire écouter pureftpd sur un autre port que le 21. (option -S dans la configuration)

- On installe le serveur FTP :

aptitude install pure-ftpd-mysql
update-inetd --disable ftp

On édite le fichier de configuration mysql

vi /etc/pure-ftpd/db/mysql.conf

On édite le fichier de conf par defaut :

vi /etc/default/pure-ftpd-common

On modifie inetd par standalone

On relance le serveur FTP :

/etc/init.d/pure-ftpd-mysql restart

On vérifie que pureftpd écoute sur le port 21 :

netstat -plan | grep 21

On valide le fonctionnement en se connectant sur le serveur FTP en ligne de commande et en s’authentifiant avec le user admin@starbridge.org

ftp 127.0.0.1

On doit se connecter sans problème.

IMPORTANT : il faut absolument que ce serveur FTP ne soit accessible qu’en local. Il faut utiliser IPTABLES pour contrôler l’accès au serveur.

- Il faut maintenant configurer Ingo pour communiquer avec le serveur FTP :

On édite /var/www/horde/ingo/config/backends.php

On teste la configuration en se connectant à Horde et en configurant un fichier mailfilter en cliquant sur filtre.

 Ajout du module de changement de Password

Merci à Kyros pour cette section !

Avant tout, on télécharge le fichier compressé du module et on l’installe :

 cd /var/www/horde/
wget http://ftp.horde.org/pub/passwd/passwd-h3-3.0.1.tar.gz
tar zxvf passwd-h3-3.0.1.tar.gz
mv passwd-h3-3.0.1 passwd
rm passwd-h3-3.0.1.tar.gz
chown -R www-data: /var/www/horde/passwd

On crée le fichier backends.php, on efface tout son contenu et on ne met que les parametres ci dessous :

vi /var/www/horde/passwd/config/backends.php

on sécurise :

chown -R www-data: /var/www/horde/passwd
chmod 640 /var/www/horde/passwd/config/*

enfin on active le module dans Horde :

vi /var/www/horde/config/registry.php

et on modifie le status dans la section du module passwd en ’active’

On se connecte à Horde avec le compte administrateur et on se rends dans la section de configuration pour creer le fichier de conf du module passwd automatiquement.

Les options par défaut sont OK.

On teste le changement de password. (Il faut se reconnecter)

 Installation du module de controle d’amavisd pour l’utilisateur

On télécharge le module :

cd /var/www/horde
wget http://www.starbridge.org/spip/doc/Procmail/sam.tar.gz
tar xvzf sam.tar.gz
rm sam.tar.gz
chown -R www-data: /var/www/horde/sam

On édite le fichier /var/www/horde/sam/config/backends.php et on modifie le password sql.

on sécurise le fichier : chmod 640 /var/www/horde/sam/config/backends.php

On va désormais utiliser Sam pour gérer les blacklists et les whitelists dans Horde.
Elles etaient par defaut gérées par Ingo, donc par maildrop en toute fin de la chaine au moment de la livraison.
Elle seront maintenant gérées techniquement par SpamAssassin. Cela permettra par exemple de whitelister un false positive immédiatement et radicalement.

Les règles maildrop de blacklistage et whitelistage seront toujours accessibles et utilisables mais les boutons d’acces direct des raccourcis pointeront sur Sam.

On édite /var/www/horde/config/registry.php et on modifie la section sam comme ceci :

Precisement on a activé le module et décommenter la ligne provides

On se connecte à l’interface et on teste.

On peut limiter les accès des users aux fonctions de ce module.
Pour limiter les users au simple usage des whitelists/blacklists, on utilise le menu de configuration du module.
Pour sélectionner les options accessible pour amavisd il faudra éditer le fichier /var/www/horde/sam/config/attributes.php

Dès qu’un user se connecte sur le module, son compte est crée dans la table amavisd.
Par défaut si il ne paramètre rien dans Sam, il est lié à la policy 1.

Si elle n’existe pas alors il prendra les paramètres par défaut d’amavisd.conf.

==> ATTENTION : Si vous avez crée l’exemple du tuto sur le serveur mail, alors vous avez déjà une policy1, et elle deviendra alors le paramètre par defaut des users.

Il faut donc l’editer et mettre les champs sur NULL

 Utilisation du générateur de vacation Autoreply du module Ingo

Ingo peut générer un script tres efficace pour créer un répondeur automatique le plus sécurisé possible. Pour cela il faut d’abord modifier le code pour l’adapter à notre installation :

editer le fichier /var/www/horde/ingo/lib/Script/maildrop.php et modifier la ligne suivante :

$this->_action[] = "  cc \"| mailbot -D " . $params['action-value']['days'] . " -c '" . NLS::getCharset() . "' -t \$HOME/vacation.msg -d \$HOME/vacation -A 'From: $from' -s '" . MIME::encode($params['action-value']['subject'], NLS::getCharset())  . "' /usr/sbin/sendmail -t \"";

par : $this->_action[] = "  cc \"| mailbot -D " . $params['action-value']['days'] . " -c '" . NLS::getCharset() . "' -t \$DEFAULT/vacation.msg -d \$DEFAULT/vacation -A 'From: $from' -s '" . MIME::encode($params['action-value']['subject'], NLS::getCharset())  . "' /usr/sbin/sendmail -t \"";

(les HOME sont remplacés par DEFAULT)

 Désactivation des options Spam du module Ingo :

par defaut INGO peut gérer automatiquement la génération de regles pour le spam.
Comme nous gérons ces options par le module sam, nous devons les désactiver pour éviter toute confusion des utilisateurs.

Editer le fichier /var/www/horde/ingo/config/prefs.php

puis editer les section suivantes comme indiqué (c’est la variable ’locked’ qui est modifiée)

Il existe de nombreuses autres fonctionnalités dans Horde que nous n’avons pas détaillés ici.

Le wiki du site officiel est un tres bon pont de départ pour paramétrer son installation.


Forum

Accueil du site | Contact | Plan du site | | Statistiques | visites : 212155

Suivre la vie du site fr  Suivre la vie du site HowTo Mail   ?

Site réalisé avec SPIP 2.1.1 + AHUNTSIC

Creative Commons License