SMTP auth TLS : postfix avec SASL linké à IMAP
Par hacky le vendredi, novembre 10 2006, 15:57 - Howto - Lien permanent
Une petite mise à jour du précédent howto. Cette fois ci, plus besoin de courier-authdaemon, la méthode rimap de saslauthd permet de se connecter à n'importe quel serveur IMAP pour l'authentification.
La distribution utilisée pour ce howto est une Debian avec les paquets sid suivants :
libsasl2, libsasl2-2, libsasl2-modules, sasl2-bin en version 2.1.22.dfsg1-1
postfix, postfix-mysql en version 2.3.4-1
Le paquet postfix-tls est maintenant obsolète (deprecated).
Je pars du principe que vous avez un postfix et un serveur IMAP de votre choix fonctionnels tous les deux.
Cette fois ci, la chaine utilisée se décompose de cette façon :
client >> postfix >> saslauthd >> serveur IMAP (local ou distant)
Installons les paquets suivants :
# aptitude install libsasl2 libsasl2-modules sasl2-bin openssl
Générons le certificat SSL valable 1 an pour le TLS de postfix :
# cd /etc/postfix
# openssl req -new -outform PEM -out /etc/postfix/smtpd.cert -newkey rsa:2048 -nodes -keyout /etc/postfix/smtpd.key -keyform PEM -days 365 -x509
Répondez aux quelques questions demandées, la plus importante étant : "Common Name (eg, YOUR name) :", où il faudra indiquer le FQDN de votre machine (machine.domaine.org).
Corrigeons maintenant les droits sur le fichier de la clé pour éviter qu'un utilisateur mal intentionné vienne la lire.
# chmod o= /etc/postfix/smtpd.key
Ajoutez l'utilisateur postfix au groupe sasl, ceci permettra à postfix d'aller dialoguer avec saslauthd grâce au socket unix /var/run/saslauthd/mux.
# adduser postfix sasl
Passons maintenant à la configuration de saslauthd :
Editez le fichier /etc/default/saslauthd et modifiez les lignes correspondantes :
START=yes
MECHANISMS="rimap"
MECH_OPTIONS="nomdhote-ou-ip-de-votre-serveur-imap"
OPTIONS="-r -c -m /var/run/saslauthd"
Remarque pour ceux qui utilisent postfix en chroot : il suffit de créer préalablement le répertoire /var/spool/postfix/var/run/saslauthd et de changer en conséquence la ligne OPTIONS du fichier ci dessus.
Créez le fichier /etc/postfix/sasl/smtpd.conf contenant :
pwcheck_method: saslauthd
mech_list: plain login
Et finissons avec la configuration de postfix :
Editons le fichier /etc/postfix/main.cf, et ajoutons :
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/postfix/smtpd.cert
smtpd_tls_key_file = /etc/postfix/smtpd.key
Pour des raisons de compatibilité de postfix, il faut créer le lien symbolique suivant :
ln -s /etc/postfix/sasl/smtpd.conf \
/usr/lib/sasl2/smtpd.conf
Enfin, redémarrons le tout :
# /etc/init.d/postfix restart
# /etc/init.d/saslauthd restart
Voila ! Il ne vous reste plus qu'à configurer votre client mail favori pour se connecter en TLS avec authentification "PLAIN", y indiquer votre login et votre mot de passe.
Commentaires
Salut,

Merci pour ce super tuto pour Postfix.
Je cherchais à protéger mon serveur SMTP, donc j'ai suivi tes conseils.
Par contre, je peux continuer à envoyer des mails sans aucune authentification sur mon serveur SMTP...
Donc je ne peux pas l'ouvrir sur le net
Bob, je pense qu'il faut que tu vérifie ta config, dans ton fichier main.cf tu dois avoir une ligne :
postfixsmtpd_recipient_restrictions = permit_sasl_authenticated, reject_unauth_pipelining, etc...
si je ne me trompe pas
permit_sasl_authenticated indique que l'envoi est autorisé aux clients authentifiés par sasl quelle que soit l'adresse de destination
reject_unauth_pipelining autorise l'envoi si l'adresse de réception correspond à un domaine relayé ou à un domaine géré localement.
Attention l'ordre est important car c'est le premier test rencontré qui remporte.
Salut,
Voila, j'ai un petit problème avec ce tuto pourtant très bien fait !
Tout est relancé correctement, sans erreurs, quand j'essaie d'envoyer un mail par un client mail, le mot de passe rentré il ne se passe plus rien.
Je vois bien dans mon log la ligne suivante :
postfix/smtpd32609: connect from
Je considère que la connexion n'est pas mauvaise...
Juste aussi une précision quant à la configuration de /etc/default/saslauthd, si tu utilises un imap-ssl, il faut mettre
MECH_OPTIONS="nom.dns.org/993"
Si tu as une idée de ce qui se passe...
Merci bien !
@Miams :
Salut.
Si tu pouvais mettre quelques détails supplémentaires pour ton log, parce qu'un simple "connect from" ça fait léger
Est-ce que ton démon saslauthd ainsi que imapd tournent ?
Que dit testsaslauthd -u login@domaine.tld -p motdepasse ?
Merci pour ce tuto très instructif.
Juste quelques précisions:
Le paquet libsasl2 ne résout pas toute seule une dépendance (c'est p-e ma conf ;-), il faut prendre le paquet libsasl2-2.
saslauthd n'a pas démarré, il a fallu que je fasse un "touch /lib/init/vars.sh"
Pour les abonnés à Free, ne pas oublié qu'il bloque par défaut les sorties sur le port 25!!
=> 2 possibilités:
soit aller dans sa console et débloquer le port 25
soit aller dans le master.cf de postfix et décommenté la ligne
et ca marche.
bon courage et encore merci
bjr
je n'arive pas a redemarrer le ssalauthd
il donne donne comme reponse
-bash: /etc/init.d/saslauthd: No such file or directory
si vous avez une solution
merci
@veron : à mon avis tu n'as pas du installer le paquet sasl2-bin...