Ecrivez moi !
english french

Comment configurer un serveur SME en tant que serveur SMTP secondaire (ou MX Backup)

Type How To
Version 1.1.2
Testé sur SME 5.0, 5.12, 5.5, 5.6, 6.0, 6.0.1, 7.0, 7.1, 7.2, 7.3 et 7.3-utf-8

Qu'est ce qu'un MX Backup
Que faut-il pour monter un MX Backup ?
Installation
Validation
Activation
Cas d'un SME avec 'Smart Host'
   Qu'est ce qu'un 'SmartHost' ?
Et après ?
smeserver-mxbackup et SME avec la mise à jour d'avril 2008
Change Log

Qu'est ce qu'un MX Backup

L'envoi d'un message sur Internet se fait en utilisant un protocole normalisé : SMTP pour Simple Mail Transport Protocol.
Ce protocole, comme son nom l'indique est 'assez' simple. Lorsqu'un mail est envoyé, le serveur SMTP de l'émetteur commence à décortiquer l'adresse du destinataire. Soit une adresse mail :

jean.dupont@dupontnet.com

La partie jean.dupont située à gauche du signe @ n'intéresse pas l'émetteur : Par analogie avec le 'snail mail', il s'agit de la boîte postale de M Jean Dupont. Cette information sera traitée par le serveur SMTP de destination.

Par contre, la partie située à droite du signe @, dupontnet.com est l'adresse du bureau de poste. C'est la partie qui doit être traitée par l'émetteur.

En fait, le SERVEUR SMTP se retrouve avec un nom Internet (en général un nom de domaine). Le serveur doit maintenant chercher le ou les serveurs SMTP qui gèrent le domaine dupontnet.com. Il obtient cette information en demandant à son serveur DNS.

En français, la requête serait celle ci : "Peux tu s'il te plait m'indiquer la liste des serveurs gérant le courrier pour le domaine dupontnet.com ? "
Le serveur DNS répond, avec une information supplémentaire : l'ordre de priorité des serveurs SMTP.

Ces informations sont stockées dans des enregistrements spécifiques du DNS, les enregistrements 'MX' (pour Mail eXchanger).

Pour un domaine donné, vous pouvez consulter cette information, par exemple avec la commande suivante :

# host -t mx cw.com
cw.com mail is handled by 20 mail14.messagelabs.com.
cw.com mail is handled by 10 mail49.messagelabs.com.

A partir de là, le serveur SMTP de l'émetteur tente de rentrer en contact avec le serveur de mail du domaine de destination qui a la priorité la plus basse, également appelé serveur SMTP primaire ou MX primaire.

Mais il se peut que le serveur de destination soit non joignable.
C'est pour cela qu'on peut indiquer plusieurs serveur au niveau du DNS :

A noter : de plus en plus de 'gros' sites ont plusieurs serveurs SMTP avec le même ordre de priorité. Dans ce cas, la connexion est faite de manière aléatoire. Ceci permet de faire de l'équilibrage de charge.

Comment fonctionnent les MX Backups ?

Il faut essentiellement configurer deux parties :

Le but de ce document est justement la mise en place de serveurs MX de backup

Que faut-il pour monter un MX Backup ?

Essentiellement, une personne prête à partager l'expérience avec vous !

La page que vous lisez en ce moment a été pensée (et testée ...) avec ma distribution Linux chérie : SME Server. Cependant, cette distribution utilise comme démon SMTP le logiciel QMAIL. Toute distribution basée sur ce démon de messagerie devrait pouvoir être configuré à l'aide de cette page.

Plus précisément, il faut que chaque administrateur dispose des éléments suivants :

Installation

Quelques précisions concernant les exemples que vous allez voir à partir de maintenant :
Vous travaillez de concert avec l'Admin d'un autre serveur SME.

Il y a trois procédures d'installation, selon votre version de SME. Choisissez la votre, et continuez ensuite à partir de Validation

Méthode 1, Pour les SME 5.0.0 et 5.1.2

  1. Rapatriez le fichier TAR sur le serveur SME 'MX Backup'.
  2. Décompressez le fichier TAR: sous Root, dans le répertoire ou se trouve le fichier TAR, tapez:
    p120:/root-# tar xvfP MXBackupDomains.tar
    /etc/e-smith/templates-custom/var/spool/smtpd/etc/smtpd_check_rules/61MXBackupDomains
    /etc/MXBackupDomains
    Cette opération installe deux fichiers sur votre machine:
    61MXBackupDomains    est le morceau de script pour les templates SME.
    /etc/MXBackupDomains est le fichier de paramètres.
  3. Il faut maintenant modifier le fichier paramètres
    Avec votre éditeur favori, modifier le fichier afin de mentionner la liste des domaines pour lesquels vous faites office de MX Backup.
    Attention : seules sont prises en comptes les lignes qui commencent par :
    domain=
    Dans notre exemple, l'Admin. de durantcom.net va mettre :
    domain=dupontnet.com
  4. Il reste à activer cette configuration. Ceci se fait en tapant la commande suivante :
    # /sbin/e-smith/expand-template /var/spool/smtpd/etc/smtpd_check_rules
    #
    Il est normal de ne pas avoir de messages en retour.
  5. (Optionnel) Pour les petits curieux, il est possible de vérifier la prise en compte de la modification. Pour cela, visualisez le fichier /var/spool/smtpd/etc/smtpd_check_rules
    ------- extrait ----
    # list of domains for witch we are acting as MX backup
    # Receiving mail for the domain dupontnet.com is allowed on this system
    allow:ALL:ALL:*.dupontnet.com *@dupontnet.com
    ------ fin d'extrait ---------
    
Voilà, c'est tout ! Votre SME est MX Backup ! Il n'est même pas nécessaire de relancer un service, la lecture du fichier est faite à chaque nouvelle demande de connexion.

Méthode Deux, Pour les SME 5.5 et 5.6(Devrait fonctionner pour la plupart des serveurs utilisant QMAIL)

Bon, ben voilà, il faut le dire :-( : J'ai pas assuré ! Je suis passé en SME 5.5, et j'ai une petite faiblesse, actuellement, pour repackager comme il faut le MXBackup...
La manip mentionnée pour 5.5 fonctionne également sur 5.6
Mais voyez la méthode Trois, pour les SME 6 et supérieurs !

En attendant, il faut tout faire à la main (ou presque !) - C'est le moment de passer à SME 6 !

  1. Editez ce fichier, avec votre éditeur favori. Voici à quoi ressemble la bête...
    # 20QandD (Quick and Dirty...)
    # Ce fichier ajoute vite fait, mal fait les domaines dont on est MXBackup
    # dans la liste des domaines approuves par Qmail
    # PS 30 Septembre 2002
    # Syntaxe : Il faut deux lignes par domaines approuves :
    # domaine.ntlg
    # .domaine.ntlg
    # La premiere ligne autorise les mails du type : toto@domaine.ntlg
    # La deuxieme ligne autorise les mails du type : toto@www.domaine.ntlg
    # 
    # Ajout des domaines approuves
    dupontnet.com
    .dupontnet.com
  2. Générez le fichier rcpthosts :
    # /sbin/e-smith/expand-template /var/qmail/control/rcpthosts
  3. (Optionnel) Vérifiez si le fichier résultant /var/qmail/control/rcpthosts correspond à vos attentes. Vous pourrez constater que le fichier 20QandD est copié intégralement à la fin du fichier /var/qmail/control/rcpthosts

Pour les autres Unix à base de qmail

Je ne suis pas un expert, mais à priori, vous avez de fortes chances de pouvoir vous en sortir en cherchant sur votre système le fichier rcpthosts (qui, sur SME , se trouve dans le dossier /var/qmail/control/)

Il vous suffit alors de modifier le fichier présent, de manière à le faire ressembler à mes exemples... Vous ne devriez pas rencontrer les problèmes spécifiques à SME, qui régénère régulièrement ses fichiers de configuration, d'où le système des templates.

Méthode Trois, pour les SME 6.0 et plus récentes

Voici mon chef-d'oeuvre !!! J'ai écrit un panneau de contrôle pour gérer le MX-Backup directement depuis le server-manager.

Note : depuis avril 2008, SME a subi de sérieuses modifications. Plus d'explications Ici Je n'ai pas su gérer un rpm unique compatible avec les deux versions de SME. Il y a donc maintenant deux RPMS :

Les explications concernent la dernière version. A vous d'enlever 'utf8-' si vous utilisez une version de SME moins à jour

Vous pouvez télécharger le RPM d'installation .
Le RPM Source est également disponible, pour les développeurs ou les curieux. Il n'est pas nécessaire pour faire fonctionner la solution.
Ce logiciel est disponible dans les termes de la licence GNU. En très court : Vous pouvez utiliser ce logiciel et le modifier comme vous le souhaitez, tant que le logiciel reste libre.

L'installation est simple :

# rpm -Uvh http://www.schirrms.net/files/smeserver-mxbackup-utf8-0.1.0-03.noarch.rpm
Preparing...                ########################################### [100%]
   1:smeserver-mxbackup-utf8########################################### [100%]
Rebuilding Web Server Manager Left Panel Cache ... Can take up to a minute.
Done.
Setting defaults values in SME configuration database, if needed. Don't change any existing configuration.
Migrating existing database domains
Migrating existing database spamassassin
Migrating existing database configuration
Migrating existing database hosts
Migrating existing database yum_repositories
Migrating existing database yum_available
Migrating existing database backups
Migrating existing database networks
Migrating existing database mailpatterns
Migrating existing database accounts
Migrating existing database yum_updates
Migrating existing database yum_installed
Done.
Regenerating the config file...
Installation finished.
Maintenant, dans la section Configuration, vous avez un choix Configuration du MX Backup juste sous le choix Courrier électronique.

La configuration est simple :
Cliquez sur le bouton 'Créer une nouvelle règle de MX-Backup' pour ajouter un nom de domaine.
Mis à part le nom de domaine, vous pouvez choisir entre 'Domaine' ou 'Ordinateur'.

C'est tout ! Votre serveur SME est prêt a faire fonction de MX-Backup. Notez que vous avez également la possibilité de désactiver et réactiver la fonction MX-Backup dans ce menu. Il vous suffit de cliquer sur le bouton bascule 'Désactivation du MX-Backup' / 'Activation du MX-Backup'. J'espère que vous apprécierez mes feux de circulation !

Validation

A partir de là, tronc commun pour tous ! (toutes versions de SME, et tous les utilisateurs de QMAIL). En fait, la procédure de tests est valide pour n'importe quel serveur de Backup (même sous Windows, si, si ! - Encore qu'utiliser Windows pour faire du Backup :-) )

Il reste à vérifier que le MX Backup fonctionne. Cette opération est à faire de n'importe où sur Internet, mais pas depuis la machine qui est MX Backup, ni depuis son réseau local, car les règles de gestion des messages sont différentes dans ces deux cas.

Le plus simple est de faire effectuer les vérifications par l'Admin. du domaine dupontnet.com .

C'est l'opération la plus longue, en fait : Il s'agit de se connecter par TELNET au serveur de messagerie et de simuler un autre serveur SMTP qui enverrait un message.

Avant de se lancer dans les démos, quelques rappels:

Tout d'abord, un serveur SMTP qui toque à la porte d'un autre serveur SMTP se présente (ou plutôt présente son domaine). C'est la commande HELO .

Ensuite, le serveur expéditeur envoie les paramètres de l'enveloppe du message. C'est une partie que les utilisateurs regardent rarement (il faut aller lire l'en-tête du message), mais c'est la partie utilisée pour gérer l'acheminement du message. Ce qui est intéressant (quand on dépanne !), c'est que chaque bureau de poste visité tamponne l'enveloppe.
Dans notre mail de test hyper simplifié, les deux seules commandes concernant l'enveloppe sont :
MAIL From: adresse de l'expéditeur.
RCPT To:   adresse du destinataire.

Nous pouvons alors commencer le corps du mail (le contenu).
Pour ce faire, on envoie la commande DATA (seule sur une ligne. Là, en principe, il suffit de taper un texte quelconque. Mais, au niveau client de messagerie, le message sera alors reçu sans sujet, mais également sans expéditeur ni destinataire.
Pour avoir un mail un peu plus conforme (encore que je vous encourage à tester les différentes combinaisons !), Nous allons renseigner 4 champs spécifiques, suivi d'une ligne vide, puis du corps du message:
From: trucmuche@machin.com
To: jean.dupont@dupontnet.com
Date: Tue, Mar 09 2004, 21:00:00
Subject: Test de validation MX Backup

Voici le message,
Particulièrement passionnant.
.

Après quelques instants, la boîte de jean.dupont du serveur de mail du domaine duponnet.com devrait recevoir un message.

Voici l'expédition d'un message complet par Telnet :

# telnet mail.durantcom.net 25
Trying 111.112.113.114...
Connected to mail.durantcom.net
Escape character is '^]'.
220 sme.durantcom.net mailfront ESMTP
HELO anything.other.org
250 sme.durantcom.net
MAIL From: admin@anything.other.org
250 Sender accepted.
RCPT To: jean.dupont@dupontnet.com
250 Recipient accepted.
DATA
354 End your message with a period.
From: admin@anything.other.org
To: jean.dupont@dupontnet.com
Date: Tue, Mar 09 2004, 21:00:00
Subject: Test

Essai particulièrement brillant !
.
250
QUIT
221 Good bye.
Connection closed by foreign host.
Et voici l'en-tête du message reçu par jean.dupont@dupontnet.com
Return-Path: <admin@anything.other.org>
Delivered-To: jean@server.dupontnet.com
Received: (qmail 24095 invoked by alias); 9 Mar 2004 21:36:17 -0000
Delivered-To: alias-localdelivery-jean@dupontnet.com
Received: (qmail 24092 invoked from network); 9 Mar 2004 21:36:16 -0000
Received: from mail.durantcom.net (HELO durantcom.net) (111.112.113.114)
  by mail.dupontnet.com (100.99.98.97) with SMTP; 09 Mar 2004 21:36:16 -0000
Received: (qmail 27033 invoked from network); 9 Mar 2004 21:27:51 -0000
Received: from some.other.computer.on.the.net (HELO anything.other.org) (200.200.200.200)
  by sme.durantcom.net (111.112.113.114) with SMTP; 09 Mar 2004 21:27:51 -0000
From: admin@anything.other.org
To: jean.dupont@dupontnet.com
Date: Tue, Mar 09 2004, 21:00:00
Subject: Test

Essai particulièrement brillant !
Voilà, vous avez fait le minimum de test : un mail à l'attention de dupontnet.com est bien accepté par le serveur de mail de durantcom.net, et arrive bien à terme au serveur de mail de dupontnet.com. Je vous encourage à faire la contre manip : vérifiez bien que le serveur de mail de durantcom.net refuse les mails à destination d'ailleurs :
# telnet mail.durantcom.net 25
Trying 111.112.113.114...
Connected to mail.durantcom.net.
Escape character is '^]'.
220 sme.durantcom.net mailfront ESMTP
HELO anything.other.org
250 durantcom.net
MAIL From: a_guy@anything.other.org
250 Sender accepted.
RCPT To: tomy@hotmail.com
553 Sorry, that domain isn't in my list of allowed rcpthosts.
QUIT
221 Good bye.
Connection closed by foreign host.

Activation

ça y est, tout est prêt ! Il reste à activer cette belle configuration. L'administrateur du domaine dupontnet.com doit maintenant modifier (ou faire modifier) le DNS public de son domaine. Il s'agit d'ajouter un enregistrement MX qui pointe sur le serveur de mail de durantcom.net Selon votre fournisseur de DNS, il se peut que vous ayez juste à saisir le nom de la machine de durantcom.net en précisant que c'est le deuxième serveur de mail.
Si votre DNS est plus rustique, il va falloir affecter une préférence.
Sachez que la préférence de valeur la plus basse est prioritaire.
Le MX primaire doit donc avoir une préférence inférieure à celle du MX secondaire
Pour tester la configuration, il vous faut l'adresse IP du DNS primaire du domaine à contrôler. En effet, votre DNS interne risque fort de vous donner des information erronées !
En supposant que le DNS primaire ait pour IP 1.2.3.4 :

# host -t mx smithnet.com 1.2.3.4
Using domain server:
Name: 1.2.3.4
Address: 1.2.3.4#53
Aliases:

dupontnet.com mail is handled (pri=0) by mail.dupontnet.com
dupontnet.com mail is handled (pri=5) by mail.durantcom.net

Voilà, tout est en place. Le temps que tous les DNS se mettent à jour, votre MX Backup est opérationnel.

Cas Particulier : le 'SmartHost'

Suite à la publication du RPM MX-Backup, un cas intéressant m'a été soumis : Le cas d'un serveur SME qui ferait office de MX-Backup, mais qui utiliserait pour l'expédition SMTP les services d'un 'Smart Host' SMTP.

Qu'est ce qu'un 'Smart Host' ?

En SMTP, un serveur a deux possibilités pour expédier un message :

Problème : le mode MX-Backup n'est pas compatible avec l'utilisation d'un 'SmartHost' !

Pourquoi ?
En fait, supposons que mail.titi.com soit le MX secondaire du domaine toto.com.
Et la configuration de mail.titi.com est d'utiliser smtp.provider.net comme 'SmartHost'.
A un moment donné, le serveur SMTP primaire du domaine toto.com est injoignable. Le courrier à l'attention du domaine toto.com se met à arriver sur le serveur mail.titi.com.
Cependant, comme mail.titi.com est configuré pour utiliser un 'SmartHost', et comme le courrier pour le domaine 'toto.com' doit repartir, il transfère tout ce courrier arrivant à son 'SmartHost', smtp.provider.net.
Le serveur smtp.provider.net à son tour analyse le DNS et trouve qu'il doit renvoyer à mail.titi.com !!!

Ceci s'appelle un 'Bounce-Mail'. Dans le meilleur des cas, c'est SME qui s'en rend compte, dans le pire des cas c'est le serveur 'SmartHost', et vous risquez d'entendre parler de son admin...

Depuis la version 0.1.0 de MX-Backup, ceci ne peut plus arriver : en effet, si le serveur de MX-Backup utilise un 'SmartHost' il ne le fera pas pour les domaines pour lesquels il est MX-Backup'.

Mais le remède peut être pire que le mal ! En effet, deux raisons principales peuvent vous amener à utiliser le serveur SMTP de votre provider:

Cependant, si vous êtes dans ce cas, et si vous êtes MX-Backup d'un autre serveur SME, ne désespérez pas, écrivez moi, il y a une solution !

Et après ?

Et bien après, pas grand chose...
Vous pouvez souhaiter disposer de plus d'un MX-Backup. La manipulation est la même : faites configurer votre troisième MX-Backup, testez le, puis ajoutez une entrée dans le DNS public.

smeserver-mxbackup et SME avec la mise à jour d'avril 2008

SME a subi en Avril 2008 un changement profond, quoique quasi invisible : elle a changé de jeu de caractères ! Qu'est ce à dire ? Un ordinateur stocke toutes les données sous forme de successions de bits. Pour que nous puissions lire un texte, il faut associer une succession de bits à une lettre. Par exemple, dans l'essentiel des langages informatiques du monde 'micro' un A = 65, et un 1 =49. Pour les caractères non américains (accents, caractères grecs, symboles chinois) il y a plusieurs normes. une des plus récentes (et probablement celle jugée la plus 'fédératrice') est la norme UTF-8. Elle permet de gérer quasiment tous les symboles connus. Jusqu'à présent, SME n'était pas en UTF-8, ce qui rendait impossible par exemple la traduction du server-manager en grec. L'équipe de dev a donc fait le grand pas. Malheureusement, il n'existe pas à ma connaissance de solution pour qu'une contrib soit compatible avec les deux jeux de caractères. Donc, il me faut gérer deux versions fonctionnellement identiques, jusqu'à disparition des anciennes versions de SME (ce qui peut prendre plusieurs années !)

Change Log

20 Avril 2008 Mise à jour du RPM en version 0.1.0-03 : Support du jeu de caractères utf-8
26 Avril 2006 Mise à jour du RPM en version 0.1.0-02 : Support complet de SME 7 (notamment, la partie qpsmtpd)
13 mai 2004 Mise à jour du RPM en version 0.1.0-00 : Gestion du MX-Backup pour des serveurs SME utilisant en général un 'SmartHost'. Mais s'il vous plait, lisez bien ce document !
22 avril 2004 Mise à jour 'discrète' : correction dans le RPM d'un bug empéchant la saisie d'un domaine comprenant le chiffre 0 (zéro) : ceci correspond aux rpm en révision 0.0.4-00
mars 2004 Version Initiale comprenant le rpm pour la 6.0