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 :
1 |
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 » :
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 :
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) :
1 2 3 |
START=no MECHANISMS="pam" OPTIONS="-c -m /var/run/saslauthd" |
Remplacez les par :
1 2 3 |
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 :
1 2 |
root@vks10360:~# service saslauthd start * Starting SASL Authentication Daemon saslauthd [ OK ] |
Puis créez un compte utilisateur avec saslpasswd2 :
1 2 3 |
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 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# # 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 :
1 2 3 4 5 |
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 :
1 2 3 |
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.
1 2 3 4 5 6 7 |
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.
Merci pour cet article très utile et super bien expliqué !!!