MAIL : 2ème Etape - Postfix, MySQL [DEBIAN]

DEBIANLINUXMYSQLDNSPOSTFIX

Nous allons installer un serveur mail complet utilisant le Virtual Mail (mysql), cette méthode de gestion des mails est plus simple à gérer et moins lourde que la méthode par "maildir"(gestion de fichiers).

Elle nous contraint à installer une base MySQL sur le serveur mail.

Dans un souci de compatibilité avec eGroupWare sur notre serveur LAMP (notre choix), nous allons utiliser le protocole IMAP pour la distribution du courrier, assuré par le service courrier-imap.

Pour le service SMTP, nous utiliserons "Postfix"

Pour la protection anti-spam, nous utiliserons "SpamAssassin, Dspam, et Amavisd".

Pour la protection anti-virus, nous utiliserons "clamav"

Nous prendrons constamment dans les articles de cette rubrique, le nom de notre domaine que nous appelerons mondomaine.com et le nom du hostname du serveur de mail que nous appellerons srv-mail.

Préparation

Dans un premier temps il faut maintenir le système à jour :

apt-get update

apt-get dist-upgrade*

Il faut ensuite modifier les fichiers suivant s’ils ne sont pas en accord avec votre domaine (mondomaine.com) et le nom de votre serveur(srv-mail) :

  • /etc/hostname de la façon suivante :
  • /etc/hosts :

127.0.0.1 peut-être remplacé par l’adresse IP du serveur, ça marche aussi.
Dans un fichier hosts, l’adresse ip peut-être suivie de plusieurs noms, par ex : 192.168.45.14 svr-lamp.mondomaine.com svr-lamp

Installation d’un cache DNS local

Le serveur mail envoyant de façon intensive des requêtes DNS, par souci de performances, nous avons préféré installer un cache DNS local.

apt-get install bind9

La configuration de base du paquet Bind9 fournit un serveur cache. (bind peut servir comme serveur dns local ainsi que pour gérer son nom de domaine (ex : Mx). Cependant, nous ne l’utiliserons qu’en matière de cache DNS (optimisation bande passante) car nous avons un serveur DNS.

Relancer ensuite le serveur DNS :

/etc/init.d/bind9 restart

Il faut ensuite tester la résolution DNS locale avec la commande nslookup :

La commande doit ainsi retourner :

OU

Si vous avez dans votre réseau un serveur DNS, l’adresse DNS retournera l’adresse ip de votre serveur DNS Local.

Puis il faut tester un site extérieur pour voir si tout se passe bien :

La résolution doit se faire correctement et afficher l’adresse ip d’un serveur Google.

Il faut maintenant installer les outils de compilation nécessaire au bon fonctionnement de la suite des articles pour installer le serveur mail :

apt-get install bzip2 gcc libpcre3-dev libpcre3 courier-authlib-dev g++ libtool libmysqlclient15-dev make libssl-dev

Si toutefois, un paquet n’est pas reconnu (parce qu’il n’est plus le même - nom différent ), on peut toujours lancer la commande aptitude search avec le début du nom du paquet, puis corriger la commande).

La préparation du serveur est terminée, nous pouvons maintenant passer à l’installation de Postfix et MySQL.

Installation de Postfix et MySQL

apt-get install postfix postfix-mysql mysql-client-5.0 mysql-server-5.0 courier-authdaemon courier-authlib-mysql libsasl2-2 libsasl2-modules sasl2-bin libpam-mysql openssl ntp tmpreaper

Tout le nécessaire pour l’installation de Postfix et MySQL sont dans cette commande ci-dessus.

Le système va poser des questions après l’installation de certains paquets, il faut laisser les choix par défaut partout sauf pour le point suivant :

postfix configuration :

Réponse : SITE INTERNET

SECURISATION :

Nous devons ensuite sécuriser la base MySQL grâce au script présent sur les système Debian :

mysql_secure_installation

(cette commande a déjà été exécutée dans l’installation du serveur LAMP de ce site. Il n’est nécessaire de l’exécuter que si vous installez seulement un serveur mail). Elle demande, en retour de répondre à toutes les questions :

Enter current password for root (enter for none) :

Réponse : (Touche Entrée - car nous n’avons pas de mot de passe par défaut)

Set root password : (voulez-vous mettre un mot de passe MYSQL)

Réponse : Yes

New password :

Réponse : NotreNouveauMotdePasseMysql

Ensuite Confirmer le mot de passe.

Remove anonymous users ?

Réponse : Yes

Disallow root login remotely ? (désactiver connection hors localhost)

Réponse : No

Remove test database ... ?

Réponse : Yes

Reload privilege tables now ?

Réponse : Yes

MySQL est installé maintenant il faut créer la base MySQL postfix.

Nous n’utilisons pas le serveur Web apache2 sur ce serveur mail, ainsi l’outil PHPMyAdmin qui fonctionne sous un serveur web (en l’occurence : apache2), n’est pas accessible pour faciliter la création des utilisateurs et des bases MySQL.

Nous sommes donc contraints à lancer les commandes à la main.

Cette première commande crée la base postfix :

Il faut créer maintenant l’utilisateur postfix qui sera associé à cette base de donnée :

Le 2ème utilisateur Postfix que nous avons créé (sur l’adresse IP du serveur) permet au serveur LAMP (autre adresse ip car serveurs séparés) d’avoir l’autorisation de venir stocker/lire les informations dans la base de donnée postfix (que nous utilisons notamment pour que le serveur lamp puisse venir récupérer ses mails pour qu’egroupware, installé sur le serveur Lamp, puisse en disposer).

Il faut maintenant créer plusieurs tables dans la base Postfix, ces tables seront créées en important le fichier "postfix.sql"ci-dessous et en modifiant tous les champs pour inclure son domaine avec la commande : "sed".

postfix

Une fois postfix.sql sur votre serveur de mail, taper les commandes suivantes :

Commentons le contenu du fichier importé :

Seules les 3 premières tables sont nécessaires pour le fonctionnement de postfix, les autres ne servent que pour l’interface Postfixadmin que nous installerons dans les articles suivants.

Le password (MD5) est "secret" ($1$caea3837$gPafod/Do/8Jj5M9HehhM.)

Il faudra le changer plus tard, mais nous aborderons la chose dans les articles suivants.

Le premier INSERT permet à Postfix de savoir que ce domaine est virtuel et qu’il doit donc le gérer. (base mysql et non maildir)

Le 3ème INSERT est un alias virtuel pointant vers un user de la table mailbox. Cet alias vers lui même sera utilisé par Postfixadmin.

le 4ème INSERT est un simple alias virtuel.

Le 7ème INSERT est un compte (boite email) virtuel, qui utilise un mot de passe encrypté en MD5.

Les deux derniers INSERT permettent de créer le superadministrateur que l’on utilisera plus tard dans Postfixadmin.

Configuration de Postfix

Notre fichier /etc/postfix/main.cf est celui ci dessous, généré par l’installation des paquets postfix :

NOTE : N’oubliez pas de remplacer la ligne
myhostname = srv-mail.mondomaine.com
par votre nom_de_serveur.votre_domaine.com

Postfix utilise un 2ème fichier de configuration, toujours généré par les paquets, qui est le suivant /etc/postfix/master.cf :

Voila, maintenant que Postfix est configuré, paramétrons le système pour le lancement du processus de Postfix, avant de redémarrer le service :

Créons le groupe et l’utilisateur VMAIL avec un uid et guid de 20001, ainsi que le répertoire des mails virtuels.

groupadd -g 20001 vmail

useradd -g vmail -u 20001 vmail -d /home/virtual -m

On sécurise ensuite le répertoire créé pour seulement autoriser l’utilisateur VMAIL à écrire dedans :

chown -R vmail : /home/virtual

chmod 770 /home/virtual

Les mails vont donc se retrouver dans /home/virtual.

Ensuite, il faut créer les fichiers d’appel des tables par Postfix.

Il faut donc rapatrier sur votre serveur mail les fichiers ".cf" que vous pouvez télécharger sur cet article.
Nous les copierons dans /etc/postfix
Nous modifierons, pour changer les phrases faisant allusion au mot_de_passe, par le vrai mot de passe.
Cette modification peut-être faite en une seule fois grâce à la commande sed comme ci-dessous :

cd /etc/postfix

sed -i ’s/toto/mon_mot_de_passe/g’ mysql_virtual_alias_maps.cf mysql_virtual_domains_maps.cf mysql_virtual_mailbox_maps.cf

(attention ! : c’est une même commande )

La commande sed permet de specifier votre password d’accès à la base de données et le modifie dans les fichiers concernés.

Dans l’exemple, c’est toto, qu’il fallait remplacer.

On sécurise maintenant tous les fichiers :

chmod 640 /etc/postfix/mysql_*

chgrp postfix /etc/postfix/mysql_*

Bravo ! Postfix est configuré et le SMTP est actif sur notre serveur.

Les étapes suivantes seront les ajouts de Maildrop, d’un MDA (Mail Deliver Agent) pour livrer les mails dans les boites, de Courrier-IMAP et des anti-spams.

Documents joints