Configurer postfix comme relais SMTP

Pour lutter contre le spam, en s’assurant que les ordinateurs de leurs clients victimes de malwares ne se transforment en robots envoyant massivement du spam, certains opérateurs bloquent les requêtes sortantes à destination d’un serveur SMTP non authentifié (port 25). Une mesure efficace pour l’utilisateur lambda, mais gênante pour l’utilisateur avancé qui souhaite héberger son propre serveur mail. La solution ? Mettre en place un relais SMTP authentifié.

C’est ce que je fait depuis quelques temps déjà, après avoir configuré postfix sur un de mes serveurs OVH, avec une authentification via SASL.

Prérequis

Pour commencer, il vous faudra un serveur sous Ubuntu Server 12.04 LTS, sur lequel vous êtes connecté avec une session root (ça évitera de coller un sudo devant chaque commande…).

La configuration est sans doute similaire sur d’autres distributions, mais pourra éventuellement nécessiter quelques adaptations.

Installation des paquets

La mise en place du relais va nécessiter l’installation de trois paquets et de leurs dépendance : postfix, sasl2-bin et libsasl2-modules.

Pour ce faire, apt-get est notre ami :

root@vks10360:~# apt-get install postfix sasl2-bin libsasl2-modules

L’installation de postfix va vous demander quelques réglages mineurs. Sur le premier écran, sélectionnez « Internet Site » :

Installation de postfix

Sur le second écran, saisissez l’adresse de votre serveur mail. Comme il va être utilisé uniquement comme relais, ce paramètre n’a aucune importance :

Installation de postfix

Et voilà, tout le nécessaire est (déjà !) installé, il n’y a plus qu’à configurer 🙂

Configuration de SASL

L’authentification SASL va être gérée par le daemon saslauthd, avec une base d’identifiants sasldb. Quelques modifications s’imposent dans la configuration du daemon. Éditez le fichier /etc/default/saslauthd et cherchez les trois lignes suivantes (elles ne sont pas forcément consécutives) :

START=no
MECHANISMS="pam"
OPTIONS="-c -m /var/run/saslauthd"

Remplacez les par :

START=yes
MECHANISMS="sasldb"
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"

La première ligne indique que le daemon saslauthd doit démarrer, la seconde lui indique qu’il doit utiliser une authentification via la base sasldb plutôt que via l’authentification PAM intégrée au système. La troisième permet de déplacer la socket de communication de saslauthd vers l’environnement chrooté de postfix.

Démarrez ensuite saslauthd :

root@vks10360:~# service saslauthd start
 * Starting SASL Authentication Daemon saslauthd                         [ OK ]

Puis créez un compte utilisateur avec saslpasswd2 :

root@vks10360:~# saslpasswd2 -u domaine utilisateur
Password:
Again (for verification):

En remplaçant bien sûr domaine et utilisateur par les valeurs de votre choix. L’identifiant à utiliser pour la connexion sera alors utilisateur@domaine.

Configuration de postfix

Par défaut, le daemon SMTP de postfix n’écoute que sur le port 25. Pour remédier à ça, direction le fichier /etc/postfix/master.cf, dont les premières lignes doivent ressembler à peu près à ça :

#
# Postfix master process configuration file.  For details on the format
# of the file, see the master(5) manual page (command: "man 5 master").
#
# Do not forget to execute "postfix reload" after editing this file.
#
# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
smtp      inet  n       -       -       -       -       smtpd
#smtp      inet  n       -       -       -       1       postscreen
#smtpd     pass  -       -       -       -       -       smtpd
#dnsblog   unix  -       -       -       -       0       dnsblog
#tlsproxy  unix  -       -       -       -       0       tlsproxy
#submission inet n       -       -       -       -       smtpd

Pour rajouter une écoute sur le port 587 (port par défaut pour le SMTP authentifié) avec authentification via SASL, retirez simplement le # au début de la ligne « submission« . Au passage, ajoutez un # au début de la ligne « smtp » si vous n’avez pas besoin que votre serveur puisse recevoir des mails entrants.

Si vous voulez utiliser un autre port, procédez de la même façon, mais remplacez le mot « submission » par le numéro de port à utiliser.

Dans les deux cas, assurez vous que la 4ème colonne contient bien un – ou un y, pour indiquer à postfix que son daemon SMTP doit tourner dans un environnement chrooté.

Il reste maintenant à configurer postfix pour qu’il utilise SASL. Pour commencer, ajoutez les cinq lignes suivantes à la fin du fichier /etc/postfix/main.cf :

smtpd_sasl_local_domain = $mydomain
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = no
smtpd_recipient_restrictions = permit_sasl_authenticated,reject

La dernière ligne est particulièrement importante : c’est elle qui indique que toute connexion par un utilisateur non authentifié via SASL doit être rejetée.

Ensuite, créez le fichier /etc/postfix/sasl/smtpd.conf avec le contenu suivant, pour permettre la communication entre postfix et saslauthd :

pwcheck_method: saslauthd
saslauthd_path: /var/run/saslauthd/mux
mech_list: PLAIN LOGIN

On y est presque 🙂

Il ne reste plus que deux petites commandes à taper : une première pour ajouter l’utilisateur postfix au groupe sasl (ce qui permet à postfix d’interagir avec le daemon saslauthd), une seconde pour redémarrer postfix.

root@vks10360:~# adduser postfix sasl
Adding user 'postfix' to group 'sasl' ...
Adding user postfix to group sasl
Done.
root@vks10360:~# service postfix restart
 * Stopping Postfix Mail Transport Agent postfix                         [ OK ]
 * Starting Postfix Mail Transport Agent postfix                         [ OK ]

Configuration de votre serveur mail

La dernière étape est la configuration de votre serveur mail pour utiliser le relais. Cette configuration dépend du serveur que vous utilisez.

Vous pouvez bien sûr aussi utiliser votre serveur relais avec votre client mail favori, pour envoyer directement vos mails via le relais.

Une réflexion sur « Configurer postfix comme relais SMTP »

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.