Postfix : Mise en place d’un backup MX, vos mails toujours disponibles!

Le but de cet article, adressé à toutes les personnes auto-hébergeant leur messagerie, est d’assurer une continuité du service mail en cas de panne ou d’indisponibilité de son serveur.

Nous allons donc voir dans ce billet comment mettre en place un backup MX avec l’aide du serveur d’un copain ou d’un second serveur.

Hypothèses

  • Vous disposez d’un serveur de mail et d’une adresse perso@mydomain.tld => MX primaire
  • Vous disposez d’un accès sur une autre machine (ici le compte backup) et d‘une adresse mail secondaire (e.g sur le serveur d’un copain libriste) => MX secondaire

Lors de la mise en place de votre serveur, vous devriez normalement avoir configuré un champs MX sur zone dns en lui affectant une priorité. Ce chiffre normalement le plus bas possible pour une priorité haute, nous allons nous en servir.

Mise en oeuvre

Le principe est le suivant: En cas de panne de notre serveur (MX primaire) les mails ne peuvent normalement pas être acheminés correctement vers notre adresse perso@mydomain.tld.

C’est pourquoi nous allons définir un nouvel enregistrement MX dans la zone dns du domaine de notre serveur primaire. Ce MX secondaire doit avoir un chiffre de priorité plus élévée que le primaire. Lorsque le primaire sera inaccéssible c’est le secondaire qui sera utilisé comme MTA. Les mails qui nous sont adressés seront alors acheminés vers le serveur de backup (MX secondaire).

Cependant plusieurs question ?

  • Q1: Comment les mails adressé à perso@mydomain.tld vont me parvenir ?
  • Q2: Comment les récupérer ?

Réponse à Q1: les mails vont en faire être acheminé sur vers le MTA de secours qui les livrera sur une adresse secondaire (backup@MyFriendSaveMe.tld) à laquelle nous avons accès.

Réponse à Q2: Il suffit de mettre en cron « une tâche getmail » qui se chargera de rapatrier régulèrement vos mail sur votre desktop

Configuration de la zone dns et de postfix

Au niveau du primaire

Nous allons à présent configurer la zone dns de notre serveur primaire afin qu’en cas de panne du serveur mail, le MX secondaire prenne le relai.

Configuration initiale

source ttl type priority destination

@ 300 in MX 1 mail.mydomain.tld.

Pour que la bascule puisse s’opérer en cas de panne du primaire, ajoutez le MX secondaire sur le serveur comme suit:

@ 300 in MX 40 mail.MyFriendSaveMe.tld.

ATTENTION: Ne pas oubliez le point à la fin de l’enregistrement.

Au niveau du secondaire

Le postfix installé sur le serveur servant de MX secondaire, ne doit normalement pas être configuré pour accepter des mails qui ne lui sont pas adressés.

Il faut autoriser le domaine mydomain.tld à être délivré sur le secondaire.

Pour cela créez le fichier /etc/postfix/virtual/domains :

mydomain.tld

Editez /etc/postix/main.cf en renseignant mydestination avec les noms de domaine à gerer.

mydestination = mydomain.tld, mail.mydomain.tld, localhost, /etc/postfix/virtual/domains

Vous le savez, la création d’une boite sur un serveur passe en général par la création d’un compte utilisateur sur le serveur, mais…

  • Q3: Comment faire pour que les mails qui me sont destinés (webmaster@mydomain.tld) ne finissent pas dans la boite de mon collègue (webmaster@MyFriendSaveMe.tld) ?

Réponse à Q3: Vous y avez pensé, postfix le fait pour vous ! il est nécéssaire d’utiliser des utilisateur virtuels de postfix.

Il faut à présent « mapper » avec un compte local (backup@MyFriendSaveMe.tld), la/les adresses à backuper.

Creez le fichier /etc/postfix/virtual/addresses dans lequel on renseigne les domaines, les addresses, et la boite qui viendra acceuillir.

mydomaine.tld DOMAIN
webmaster@mydomain.tld useraccount(ici backup)

Pour que les modifications soient prises en compte, il faut mettre à jour la db de postfix.

postmap /etc/postfix/virtual/addresses 
/etc/init.d/postfix reload

Création (ou pas) du compte de backup

Sur le primaire (ou son desktop…)

Nous allons mettre en place getmail4 qui par l’intermédiaire d’une tâche cron se chargera de vérifier tout les 5 minutes si un mail n’a pas été acheminé sur le serveur secondaire suite à une coupure du primaire.

Si le compte qui doit acceuillir les différentes boite (backup) n’est pas crée .

adduser --shell /bin/false backup
cd /home/backup/
maildirmake Maildir

Procédons à l’installation de getmail4.

apt-get install getmail4

Créez le répertoire de configuration de getmail.

cd /home/backup/ && mkdir .getmail
chown user:user .getmail
chmod 700 .getmail

Créez le fichier de configuration de getmail pour l’utilisateur « backup »:

vi .getmail/.getmailrc

[retriever]

type = SimplePOP3Retriever

server = mail.MyFriendSaveMe.tld

username = backup

password = XXXXXXXX

[destination]

type = Maildir

path = ~webmaster/Maildir/

chmod 600 .getmailrc

Ajout de la tâche cron qui vérifie et rappatrie les éventuels messages toutes les 5 minutes .

su - backup -s /bin/bash
crontab -e

# m h dom mon dow command

*/5 * * * * /usr/bin/getmail -ad > /dev/null 2>&1

Pour tester éteignez le postfix du serveur primaire, et envoyez un mail à perso@domain.tld, depuis un compte mail externe.

Le mail devrait être acheminé vers le serveur secondaire (backup MX). En fonction de la tâche cron getmail4, vous devriez pouvoir rapatrier sur le primaire ou votre desktop le mail envoyé (le primaire étant éteint) vers votre adresse perso@domain.tld!

 

msg 1/1 (1996 bytes) delivered, deleted

1 messages (1996 bytes) retrieved, 0 skipped

 

A noter que getmail4 récupère les mails d’un server distant en se connectant en pop. Vous devez donc avoir courier-pop ou un équivalent d’installé sur le serveur secondaire en plus du courier-imap.

 

Ainsi vous ne perdrez plus de mail et bénéficierez d’une disponibilité de 100% de votre mail.

Merci à nordbeastie.org pour sa contribution!

English version soon on nordbeastie.org!

Vus : 4796
Publié par Openwebtech : 26