Gestion de mail

Que serait notre installation de serveur sans passer par celle d’un serveur mail et également d’un client.

Autant vous le dire tout de suite, je n’avais pas envie de faire cette partie pour plusieurs raisons:

  • Je n’ai jamais eu de problème de quota, spam ou autre en passant par mon hébergeur,
  • Je n’ai pas spécialement besoin de mails sur mon serveur, à part envoyer des mail de service,
  • L’installation correct d’un serveur avec antispam et compagnie est très compliqué.

Mais il faut savoir repousser ses limites 😉

On installe donc Exim4, Dovecot, Roundcube, le tout utilisant IMAP en SSL.

Je rappel que tout ne vous servira pas forcément dans cette article, car il suit les différentes étapes de l’installation de notre serveur qui comprend par exemple le moteur de blog Dotclear ou encore un serveur MySQL distant…

Préambule

Je l’avais annoncé, l’installation de notre serveur/client mail ne s’est pas déroulé sans accroc ! En partie à cause de ma bêtise mais également parce que ça ne se passe jamais comme annoncé… Pour la petite histoire, je voulais installer postfix puisque le plus grand nombre de tutoriels portait sur ce programme, malheureusement la plupart n’était que des copier/coller les uns des autres et se compliquait la vie pour pas grand chose finalement. Le pire est que j’ai eu énormément de mal à retourner en arrière pour remettre mon serveur à sa configuration d’origine, car postfix n’aime pas se désinstaller, le système voulant réinstaller dans la foulé exim4, ce qui ne fonctionnait pas ! Bref le chien qui se mord la queue…
C’est pourquoi à force de chercher de l’aide sur le net je suis tombé sur un début de réponse tout simple utilisant exim4, je me suis donc essayer à l’installer… avec succès.

Prérequis

Notre serveur va avoir besoin de quelques modifications pour devenir un serveur/client mail. Il faut ajouter des panneaux chez notre registrar pour indiquer le chemin vers notre serveur, il faut déverrouiller certaines portes de notre serveur, et il faut modifier le détecteur de métal de Apache qui ne sait en faire fonctionner qu’un seul pour tout l’immeuble. C’est parti !

Modification d’Apache
Les versions installées sur notre machine d’Apache et d’OpenSSL ne permettent pas (du moins pas simplement) de faire fonctionner plusieurs Vituals Hosts en SSL, il va falloir modifier notre structure de dossier. Notre zone d’administration des blogs Dotclear et notre client mail ont besoin de SSL, il faut donc les regrouper sur le même Virtual Host, (on choisi manager.scribox.org) et on utilisera les URLsmanager.scribox.org/dotclear et manager.scribox.org/roundcube.
Commençons par créer un sous-domaine chez notre registrar qui sera réservé au SSL. Pour cela on créer un champs de Type CNAME pour notre sous-domaine manager.scribox.org pointant vers le domaine principalescribox.org.
On crée le Virtual Host SSL dans Apache :

nano /etc/apache2/sites-available/manager.scribox.org

<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/apache2/apache.pem
ServerAdmin ma.vrai@.mail
ServerName manager.scribox.org
ServerAlias www.manager.scribox.org
DocumentRoot /var/www/manager.scribox.org
<Directory /var/www/manager.scribox.org/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>

On créé le répertoire web et on y met un fichier index quelconque :

mkidr /var/www/manager.scribox.org/
echo '<html><head><title>manager</title></head><body><h1>manager</h1></body></html>' > /var/www/manager.scribox.org/index.html

On créé un lien symbolique dans ce sous domaine pour pointer vers notre administration de Dotclear :

ln -s /var/dotclear/admin/ /var/www/manager.scribox.org/dotclear

Et on modifie la configuration de Dotclear :

nano /var/dotclear/inc/config.php


define(‘DC_ADMIN_URL’,’https://manager.scribox.org/dotclear/’);

On désactive l’ancien Host, on active le nouvel Host, et on relance Apache :

a2dissite admin.scribox.org
a2ensite manager.scribox.org
service apache2 reload

On peut supprimer l’ancienne configuration histoire de ne pas trop laisser trainer de chose inutile sur le serveur :

rm /etc/apache2/sites-available/admin.scribox.org

Modification Zone DNS
Il faut configurer les Zone DNS chez notre Registrar, comme je suis chez OVH on va prendre cette exemple. Dans notre manager OVH (v3) on sélectionne le domaine qu’on a déjà choisi pour la partie web de notre serveur, puis le menu Accueil > Domaines & DNS > Zone DNS (Mode avancé)
Il faut supprimer tous les enregistrements en rapport aux mails, créer un alias manager.scribox.org de type CNAME pointant sur le domaine principal de notre serveur scribox.org puis créer un champs de type MX 1 pointant également vers le domaine principale de notre serveurscribox.org. chez OVH il faut cocher la case Forcer l’opération
mx_form_zonedns.png
Voici à quoi ressemble notre Zone DNS depuis le début de la configuration de notre serveur :
mx_zonedns.png
J’ai également supprimer le sous-domaine utilisé par l’administration de Dotclear, et créer un sous-domaine imap.scribox.org qui servira (pour faire joli) un peu plus bas.
Il faut que les informations concordent entre notre Registrar et notre serveur c’est pourquoi sur notre serveur on commence par vérifier les fichiers hosts et hostname qu’on a déjà modifié auparavant pour queexim4 soit moins grincheux :

echo 'scribox.org' > /etc/hostname
nano /etc/hosts


127.0.0.1 localhost.localdomain localhost
# Auto-generated hostname. Please do not remove this comment.
123.456.654.321 scribox.org vps12345.ovh.net

Dans ces deux fichiers on a remplacé notre joli nom de machine par son nom de domaine principal.
On prend en compte les modifications :

hostname --file /etc/hostname
hostname scribox.org

Modification du firewall
Lorsque nous avons mis en place notre firewall on ne pensait pas installer un serveur mail, du coup il faut retourner le modifier. Pour cela on ajoute les règles spécifiques au passage des mails dans la configuration du pare feu et on la prend en compte, ici on utilise uniquement le protocole IMAP sécurisé :

nano /etc/init.d/firewall


# Mail IMAPS
iptables -t filter -A INPUT -p tcp –dport 993 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp –dport 993 -j ACCEPT

nano /etc/init.d/firewall

Nota: On laisse quand même la règle de sortie de SMTP sur le port 25.

Installation du MTA (Mail Transfer Agent) Exim4

Pour rappel et pour faire simple, le MTA permet de faire la laison entre tout le monde pour la gestion des mails.
Afin d’éviter des problèmes lors de l’installation, on arrête sendmail:

service sendmail stop

On installe Exim4 :

apt-get install exim4-daemon-heavy

J’espère que vous n’avez pas postfix d’installé sinon vous allez galérer ! En cherchant sur le web, j’ai trouvé des commandes pour faire le ménage et pourvoir installer Exim4 après un passage depostfix, je vous laisse galérer un peu si c’est le cas…
Bref, ensuite on configure le paquet :

dpkg-reconfigure exim4-config
  1. On choisi une installation Site internet‘,
  2. on lui donne le nom de domaine principal en nom de courriel,
  3. on ne met rien pour les IP d’écoute (connexions entrantes),
  4. on ne met rien pour les domaines acceptés,
  5. on ne mat rien pour le relais de domaine,
  6. on ne met rien pour le relais de machine,
  7. on répond non pour minimiser les requetes DNS
  8. on choisi le format Maildir pour la méthode de distribution,
  9. on répond oui à la séparation des fichiers de configuration.

Normalement, notre serveur mail est prêt.

Installation du serveur IMAPS Dovecot

Pour rappel et pour faire simple le serveur IMAPS va permettre de lire ses mails dans un client de messagerie convivial.
On installe le paquetage :

apt-get install dovecot-imapd

Puis on va modifier sa configuration manuellement :

nano /etc/dovecot/dovecot.conf

Voici mon fichier sans les commentaires :

## Dovecot configuration file

protocols = imaps managesieve
listen = localhost
protocol imap {
listen = *:993
ssl_listen = *:993
}
protocol managesieve {
listen = *:4190
}
disable_plaintext_auth = yes
log_timestamp = “%Y-%m-%d %H:%M:%S ”
ssl_cert_file = /etc/ssl/certs/dovecot.pem
ssl_key_file = /etc/ssl/private/dovecot.pem
mail_privileged_group = mail
protocol imap {
}
protocol pop3 {
pop3_uidl_format = %08Xu%08Xv
}
protocol lda {
postmaster_address = ma.vrai@.mail
mail_plugins = sieve
}
auth default {
mechanisms = plain
passdb pam {
args =
}
userdb passwd {
}
user = root
socket listen {
master {
path = /var/run/dovecot/auth-master
mode = 0600
}
client {
path = /var/run/dovecot/auth-client
mode = 0660
}
}
}
dict {
}
plugin {
}

Et c’est tout, normalement on peut accéder à nos mail depuis notre client de messagerie préféré avec les options suivantes :

  • Serveur entrant: IMAP
  • Nom d’hôte de serveur: imap.scribox.org
  • Port de connexion: 993
  • Sécurité de connexion: SSL/TLS
  • Authentification: Mot de passe normal
  • Pour le smtp sortant, on prend celui de notre registrar.

Installation du client web Roundcube

Pour rappel et pour faire simple, Roundcube est notre interface graphique de gestions de mail. Notre boite mail quoi !
J’ai commencé par installer SquirelMail mais il faut dire la vérité, il est moche ! Du coup on va plutôt installer Roundcube même si l’utilisation de MySQL rend la tache plus compliquée.
On commence par installer les paquetages :

apt-get install roundcube roundcube-mysql

Malheureusement l’installation ne fonctionne pas car il n’arrive pas à se connecter à la base de données distante. Mais il a quand même eu le temps de créer quelques fichiers qui nous intéressent. On modifie manuellement le fichier :

nano /etc/dbconfig-common/roundcube.conf

Les lignes qui nous intéressent sont les suivantes, on les remplis suivant la configuration qu’on a mise en place lors de l’installation du VPS_SQL et de PhpMyAdmin :


dbc_dbserver=’IP.DU.VPS.SQL’

dbc_dbport=’PORT_SQL_DU_VPS_SQL’

dbc_dbadmin=’vpsweb’

Une fois enregistré on relance l’installation et il devrait pouvoir se connecter :

apt-get install roundcube roundcube-mysql

Mais comme il est très tenace cela ne suffira pas, le fichier de connexion de Roundcube à la base de donnée ne contient pas encore les bonnes infos ! On le modifie manuellement :

nano /etc/roundcube/debian-db.php


$dbserver=’IP.DU.VPS.SQL’;
$dbport=’PORT_SQL_DU_VPS_SQL’;
$dbtype=’mysql’;

On en profite pour modifier la page de login pour que l’utilisateur n’est pas le choix du serveur :

nano /var/lib/roundcube/config/main.inc.php

On recherche et on modifie les lignes suivantes :


$rcmail_config[‘auto_create_user’] = TRUE;
$rcmail_config[‘default_host’] = ‘ssl://imap.scribox.org’;
$rcmail_config[‘default_port’] = 993;

On va ensuite dé commenter les deux lignes d’Alias dans le fichier de configuration de Roundcube pour apache :

nano /etc/apache2/conf.d/roundcube


Alias /roundcube/program/js/tiny_mce/ /usr/share/tinymce/www/
Alias /roundcube /var/lib/roundcube

On relance apache et on test dans notre navigateur :

service apache2 reload

Pour l’URL il faut écrire notre domaine en https :
roundcube_https_ok.png
Ouf, ça fonctionne. J’espère que chez vous aussi…

Antispam

Sans rentrer dans le détail on va installer spamassassin :

apt-get install spamassassin

On modifie sa configuration de base pour activer le démon et la mise à jour auto des filtres :

command sed -i -e 's/^ENABLED=.*/ENABLED=1/' -e 's/^CRON=.*/CRON=1/' '/etc/default/spamassassin'

On retourne pour la énième fois modifier notre pare feu pour y ajouter une règle :

nano /etc/init.d/firewall


# SpamAssassin
iptables -A INPUT -p tcp -m tcp –syn –dport 783 -j ACCEPT

etc/init.d/firewall

On modifie la configuration de Exim et décommentant et vérifiant la ligne suivante :

nano /etc/exim4/conf.d/main/02_exim4-config_options

spamd_address = 127.0.0.1 783

Et on recharge Exim et on démarre le démon spamassassin :

/service exim4 restart
/service spamassassin restart

Pour aller plus loin

Il resterait à modifier les Alias de Roundcube dans Apache car pour l’instant Roundcube est accessible sur tous les hosts virtuels, on peut également amélioré l’entrée de l’utilisateur en modifiant le fichier /var/lib/roundcube/config/main.inc.php.
Il faudrait surtout installer des règles plus précises pour l’antispam et antivirus mais ce sera pour un prochain épisode…

Au suivant

Maintenant que notre serveur gère les mails on va pouvoir lui ajouter la gestion de listes de diffusions (mailing list).

Sources

Les suivants sont pour postfix, au cas ou ça intéresse quelqu’un :

Atbildēt

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti kā *