Installation et Sécurisation d’un serveur dédié – Serveur mail

Ce tuto fait suite à l’article Installation et Sécurisation d’un serveur dédié

Nous allons maintenant aborder la configuration du serveur mail en lui même.
Comme dit précédemment, nous allons nous appuyer sur le couple Dovecot et Postfix, l’installation est prévu pour fonctionner avec une base MySQL pour stocker les comptes mails, les alias ainsi que les domaines.

Attention, cette partie est assez longue et fastidieuse, donc il va falloir s’armer de patience et prévoir un certain temps voir un temps certain afin de mener cette configuration à bien.

Paramétrage du Serveur Mail

1/Création de la BDD MySQL et de son utilisateur

Cette base de données servira à stocker les informations des comptes utilisateurs et des domaines. Je vous conseille plus que fortement de choisir un mdp fort pour protéger ce compte.

On commence par se loguer (le mots de passe demandé est celui indiqué lors de l’installation du package MySQL)

Ensuite on crée la base, puis le user avec ses droits (remplacer VOTREMDP par le mdp du compte):

 2/Installation de Postfix Admin

On télécharge postfixadmin depuis SourceForge et on le place dans /var/www/html/postfixadmin

Puis on édite le fichier de configuration /var/www/html/postfixadmin/config.inc.php pour modifier les paramètres suivant :
(Le fichier étant long, je ne mets que les paramètres à vérifier ou modifier)

La dernière partie détermine comment Postfix Admin va ranger vos mailbox.

Une fois tout ceci fait, on va se connecter à Postfix Admin qui va vérifier la config et remplir la BDD. on va en profiter pour créer le hash du Master Password qui sera utiliser par la suite pour la création du Super Admin (vous avez suivi ? ;))

Suivez les indications de la pages, noter le hash et indiquer le dans le fichier de configuration :

Maintenant que c’est fait retourner sur la page de setup, et créer le Super Admin.

Maintenant que c’est fait on désactive l’accès à ce fichier et empêche la navigation dans ce dossier, on va donc créer un fichier .htaccess contenant les lignes suivantes :

 3/Création d’un domaine et d’un compte mail dans Postfix Admin

Allez sur la page https://mail.example.com/postfixadmin/login.php

Une fois logué avec le Super Admin, créer un domaine, n’oublier pas de cocher la case afin d’ajouter les alias. Ensuite on crée la premier compte mail qui sera [email protected] afin d’assurer le bon fonctionnement des alias. les alias abuse et posmaster sont particulièrement important et font partie des éléments pris en compte dans l’évaluation de la fiabilité de votre domaine par les outils anti-spam.

Il est important de vérifier de temps en temps ces boites, surtout en usage pro, puisque ce sont celles sur lesquelles vous devriez recevoir les notifications de problèmes de fonctionnement ou d’abus de vos utilisateurs.

4/Création du dossier de stockage

La configuration de notre serveur mail reposant sur des utilisateurs virtuels, ceux ci n’ont pas de compte système Unix, nous allons donc créer un espace de stockage, ainsi qu’un utilisateur ayant les droits sur dossiers. les mails seront stocké dans un sous dossier par domaine puis par nom d’utilisateur dans /var/vmail (ex: /var/vmail/example.com/admin)

5/Paramétrage de Dovecot

Dovecot gère les connexions IMAP et pop3, le stockage des mails et leur réception via Postfix. Il est aussi capable de gérer l’authentification SMTP, on va donc s’en servir afin de centraliser les comptes (Et de se simplifier la vie). La configuration de Dovecot est réparti sur de nombreux fichiers, même si ça peut paraitre compliqué, dans les faits, c’est plutôt logique, donc soyez méticuleux et tout ira bien ;).

En premier on règle l’accès à la BDD des mails dans /etc/dovecot/dovecot-sql.conf.ext :

On va maintenant changer la façon dont Dovecot gère les authentifications et qu’il puisse allez chercher les infos de connexion dans la BDD, on édite donc /etc/dovecot/conf.d/10-auth.conf.

On va maintenant indiquer à Dovecot où stocker les mails, on va donc editer /etc/dovecot/conf.d/10-mail.conf comme suit :

On indique ensuite où est stocké votre certificat SSL en éditant /etc/dovecot/conf.d/10-ssl.conf

Ensuite on édite /etc/dovecot/conf.d/10-master.conf et on ajoute le support postfix

On paramètre l’adresse du postmaster dans  /etc/dovecot/conf.d/15-lda.conf (Ce réglage corrige l’erreur Invalid settings: postmaster_address setting not given), on indique donc l’alias crée précédement lors de la configuration du domaine.

On rend la configuration de Dovecot accessible à l’utilisateur vmail

Petit détails, les dossiers sont crées au furt et à mesure par Dovecot, il est donc normal qu’un user n’ayant jamais recu de mail n’ai pas de dossier.

6/Configuration des logiciels tiers (Amavis, ClamAV, Postgrey et SpamAssassin)

Avant de configurer Postfix, on va paramétrer les outils concernant les spams et les virus. Les configurations sont celles par défaut, elles conviennent la plupart du temps, pour plus de détails, il vous faudra consulter la doc de chaque outils, je ne vais indiquer ici que comment les intégrés à notre configuration.

On va rendre la cohabitation de ClamAV et de Amavis un peu plus simple :

on active Amavis en éditant /etc/amavis/conf.d/15-content_filter_mode (il suffit de décomenter les lignes @bypass…)

On activer ensuite SpamAssassin en éditant /etc/default/spamassassin

On donne accés à Amavis à la BDD des mails en éditant /etc/amavis/conf.d/50-user:

On edite /etc/default/postgrey

 

On mets à jour ClamAV avec la commande freshclam puis on démarre tout ce petit monde :

 

7/Configuration de Postfix

Enfin, on attaque le gros morceau (comment ça vous pensiez que c’était déjà fait ?), Postfix va géré les mail entrant via le protocole SMTP, on va intégrer à ce configuration tous les outils que nous avons pré-configurer précédemment ce qui lui permettra de lutter efficacement contre les spams et les virus avant que les mails arrive dans les petits bras musclés de Dovecot, on va aussi intégrer le fait que les comptes mails s’authentifie via Dovecot pour l’utilisation du SMTP.

On va créer tous les fichiers de configuration afin d’expliquer à Postfix où sont les données de vos comptes mails, domaines etc…

Attention : L’option host doit être rempli à l’identique que l’option bind-address du fichier /etc/mysql/my.cnf si vous avez localhost, veillez à mettre localhost au lieu de 127.0.0.1, sinon il ne pourra pas se connecter, je sais c’est bête mais c’est comme ça. La commande suivante vous permettra d’avoir l’info recherchée.

 /etc/postfix/mysql_virtual_alias_domainaliases_maps.cf

/etc/postfix/mysql_virtual_alias_maps.cf

/etc/postfix/mysql_virtual_domains_maps.cf

/etc/postfix/mysql_virtual_mailbox_domainaliases_maps.cf

/etc/postfix/mysql_virtual_mailbox_maps.cf

Afin d’améliorer quelques peu la protection des données privées on va demander à Postfix de retirer certaines information du Header. Vous pouvez vous reporter à la docs Postfix pour plus d’explication. On crée donc le fichier /etc/postfix/header_checks

Les deux prochains fichiers concernent le fonctionnement à proprement parlé du SMTP et de la facon dont les mails vont être traités par Postfix, il intègre également ce qu’il faut pour que les modules installés précédement fonctionnent. Les explications détailées de ces fichiers mériteraient à elles seules un article complet, je vous conseille donc de prendre le temps de vérifier que tout est ok pour vous. En l’état ces fichiers sont fonctionels avec la configuration que nous mettons en places, mais je ne saurais trop insisté sur l’utilité de se reporter à la doc et de bien comprendre ce qu’il y a dedans.

Avant de mettre en place ces deux fichiers, on va sauver les fichiers de configuration par défaut

/etc/postfix/main.cf

Les lignes à adapter sont  :

  • myhostname = mail.example.com
  • Les lignes concernant les certificats de 26 à 39

/etc/postfix/master.cf

Vu qu’Amavis consomme pas mal de ressource mémoire, il est limité à 3 processus concurent, libre à vous d’augmenter cette valeur si vous avez beaucoup de traffic, pour un serveur mail petit à moyen celà suffit (en gros pour du personnel ou pour une petite société).

8/DKIM signature pour un ou plusieurs domaine

Allez, histoire de vraiment bien faire les choses, on va aborder rapidement la création d’une clé DKIM pour signer les vos mails, elle permettra au serveur qui receptionne votre mail de savoir que c’est bien notre serveur qui l’a envoyé.

J’utilise une methode qui n’est pas tout à fait habituelle pour générer la clé, l’avantage est que vous pouvez choisir de génerer une clé par domaine ou une seule pour plusieurs domaine utilisant le même serveur mail, le nom du domaine n’étant pas inclus dans la clé avec cette manipulation.

On installe les paquets nécessaire :

On crée les dossiers qui vont bien et on règle les permissions:

On édite le fichier /etc/default/opendkim et on s’assure que le socket est le bon :

On modifie ou on ajoute les options suivantes au fichier /etc/opendkim.conf

L’option selector peut être modifiée, si c’est le cas il faudra adapter les exemples de ce tutos. L’option « refile » pour les différentes tables permet d’indiquer quel fichier contient les informations nécessaires et offre la possibilité d’utiliser des expressions complètes (avec des * notamment).

On crée la table /etc/opendkim/TrustedHosts :

ensuite la table /etc/opendkim/dkim-keytable

puis la table /etc/opendkim/dkim-signingtable

Vous noterez l’avantage d’utiliser l’option refile ;), maintenant tous les mails seront signé avec cette unique ligne 🙂

La configuration est maintenant complète, on va donc générer les clés adéquates, les clés sont généré par OpenSSl en 1024 bits. La clé générée contrairement au X.509-certificates n’est pas lié au host, donc vous n’avez pas besoin de la signer et elle peut être utilisé par plusieurs domaines du moment qu’ils utilisent le même serveur mail.

On mets à jours les permissions :

Plus qu’a proceder à l’enregistrement TXT de votre clé dans vos DNS sous la forme suivante

le contenu de la clé se trouve dans le fichier /etc/opendkim/rsa-example.com.public

On ajoute ce qu’il faut dans la configuration de Postfix en éditant /etc/postfix/main.cf

idem dans la configuration d’amavis en éditant /etc/amavis/conf.d/50-user

9/Test et détails importants

Ca y est on arrive à la fin, on redemarre tout :

Les fichiers /var/log/mail.log et /var/log/mail.err vont être vos amis pour vérifier que tout va bien

Pour tester la configuration de mon serveur de « l’exterieur », j’utilise deux site :

  • Mx Toolbox qui permet de tester pas mal de petite chose au niveau de votre configuration DNS / Serveur
  • Mail tester qui permet de tester la cote d’amour de vos mails, en gros il vous permet de savoir combien de chance à votre mail de terminer dans les spams ou pas

Si vous n’avez pas bien configurer vos enregistrement DNS, vous allez vite le voir et surtout vite vous faire blacklister,

Il y a quatre élément important :

  • L’enregisrement reverse DNS, normalement, c’est à définir dans votre interface de gestion du serveur, si votre enregistrement est ok, en admettant que mail.example.com est sur l’adresse Ip 001.002.003.004, vous devriez obtenir quelque chose comme ça 004.003.002.001.in-addr.arpa name = mail.example.com, vous pouvez tester ça ici
  • L’enregistrement MX de « example.com. » devrait pointer vers « mail.example.com. » priorité 0 (Vous noterez les points en fin de domaine, c’est pas une faute)
  • L’enregistrement DKIM qui est abordé au paragraphe précédent.
  • Pour le SenderID ou SPF je vous conseille d’utiliser l’outil Sender ID Framework SPF Record Wizard de microsoft qui rend la création de cet enregistrement TXT moins fastidueuse. Une fois le wizard terminé vous obtenez une ligne ressemblant à ceci :

Et voila, maintenant que ça c’est fait, on va voir dans le prochain article comment accéder à nos mails via horde, comment installer phpmyadmin avec suphp et suexec, webmin (facile!!) et héberger un site avec cette méthode.

Comme d’habitude, si vous avez des questions, n’hésitez pas…

About

View all posts by

One thought on “Installation et Sécurisation d’un serveur dédié – Serveur mail

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *