SMTP auth en TLS sous postfix avec SASL & courier-authdaemon
Par hacky le dimanche, juin 25 2006, 16:47 - Howto - Lien permanent
J'inaugure la catégorie howto de mon blog avec ce premier dossier.
Le SMTP auth vise à identifier les clients avec leur login et mot de passe (authentification chiffrée) pour leur autoriser à relayer des mails vers les domaines extérieurs.
Nous allons partir du principe que vous avez déjà un postfix fonctionnel avec un serveur pop ou/et imap basé sur courier, le tout sous Debian.
Le schéma est le suivant :
client >> postfix >> saslauthd >> courier-authdaemond >> mysql
Installons les paquets nécessaires :
# aptitude install postfix-tls 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
Corrigez les permissions sur le répertoire /var/run/courier/authdaemon afin que saslauthd dialogue avec courier-authdaemond.
# chmod 775 /var/run/courier/authdaemon
Passons maintenant à la configuration de saslauthd :
Editez le fichier /etc/default/saslauthd :
Décommentez START=yes en enlevant le # en début de ligne.
Spécifiez : MECHANISMS="sasldb". Cet argument est nécessaire pour le démarrage de saslauthd mais ne sera pas utilisé car on passe par le authdaemond de courier.
Ensuite créez le répertoire /etc/postfix/sasl :
# mkdir /etc/postfix/sasl && chown root:postfix /etc/postfix/sasl
Et créez y le fichier smtpd.conf contenant :
pwcheck_method: authdaemond
authdaemond_path: /var/run/courier/authdaemon/socket
mech_list: plain login
allow_plaintext: true
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
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
j'ai essaye de suivre ton tuto, mais l'authentification ne fonctionne pas. j'ai ca dans mes logs :
warning: SASL authentication problem: unable to open Berkeley db /etc/sasldb2: No such file or directory
Tiens, un Pierre aussi
Salut à toi !
Ton postfix doit être chrooté, ce qui est le cas par défaut dans le paquet debian. Tu as 2 possibilités : sortir postfix de son chroot (en mettant les "n" dans la colonne qui va bien du fichier /etc/postfix/main.cf) ou copier le "vrai" fichier /etc/sasldb2 dans /var/spool/postfix/etc/sasldb2
Tiens moi au courant si cela a fonctionné.
Après avoir chrooté j'ai toujours un probleme d'identification..
Dec 6 16:29:03 dns postfix/smtpd[27603]: connect from chrlr-2-1-202-12.adsl.hyperline.be[85.234.202.12]
Dec 6 16:29:07 dns postfix/smtpd[27603]: warning: SASL authentication failure: no secret in database
Dec 6 16:29:07 dns postfix/smtpd[27603]: warning: chrlr-2-1-202-12.adsl.hyperline.be[85.234.202.12]: SASL CRAM-MD5 authentic$
Dec 6 16:29:07 dns postfix/smtpd[27603]: warning: SASL authentication failure: no secret in database
Dec 6 16:29:07 dns postfix/smtpd[27603]: warning: chrlr-2-1-202-12.adsl.hyperline.be[85.234.202.12]: SASL NTLM authenticatio$
Dec 6 16:29:07 dns postfix/smtpd[27603]: warning: SASL authentication failure: Password verification failed
Dec 6 16:29:07 dns postfix/smtpd[27603]: warning: chrlr-2-1-202-12.adsl.hyperline.be[85.234.202.12]: SASL PLAIN authenticati$
Dec 6 16:29:07 dns postfix/smtpd[27603]: warning: chrlr-2-1-202-12.adsl.hyperline.be[85.234.202.12]: SASL LOGIN authenticati$
Dec 6 16:29:10 dns postfix/smtpd[27603]: lost connection after AUTH from chrlr-2-1-202-12.adsl.hyperline.be[85.234.202.12]
"Après avoir chrooté" ? dé-chrooté plutôt ?
Ton courier fonctionne correctement ? L'identification se passe bien sur celui ci ?
Sinon tu peux essayer l'autre howto avec la méthode rimap : smtp-auth-tls-postfix-avec-sasl-linke-a-imap
Je ne sais pas si le problème vient de là mais dans mon fichier de conf j'avais une ligne :
smtpd_sasl_path = /etc/postfix/sasl:/usr/lib/sasl2
elle me foutait la merde, l'authentification ne fonctionnait pas, je l'ai mise en commentaire, redémarré postfix et saslauthd et depuis plus de problème... cela peut peut-être aider...
Salut.
Je viens de suivre ton HOW to mais j'ai un bug quand je souhaite me connecté au serveur SMTP depuis l'extérieur de mon réseau.
voici l'erreur dans le log:
warning: SASL authentification failure: cannot connect to Courier authdaemond: no such file or directory
Merci pour l'aide...
@Frenche : as tu vérifié que /var/run/courier/authdaemon/socket existait et était accessible par postfix ? Est-ce que l'utilisateur postfix est bien dans le groupe sasl ?
Sinon, en dernier recours, as tu essayé en rimap ? Le lien est au commentaire 4.
Quel est l'avantage d'exécuter saslauthd pour qu'il interroge authdaemond alors que postfix peut utiliser directement authdaemond via libsasl2 et éventuellement libsasl2-modules/mysql
Est tu sur que postfix (le daemon smtpd) utilise bien saslauthd car il n'y à aucune relation direct entre saslauthd et postfix ?
@hodj: postfix appelle bien saslauthd indirectement via la libsasl. saslauthd gère son backend d'identification lui même (mysql, rimap, pam etc...) et ne fait que répondre que le login/mdp sont OK ou erronés.
Mais si tu as une autre méthode à m'expliquer je suis preneur
Bonjour ;
Effectivement, il me semble que hodj a raison. Nullement besoin d'utiliser Saslauthd qui d'ailleurs n'est qu'une autre méthode de vérification de mot de passe et non pas à utiliser en conjonction avec authdaemond qui lui aussi est une méthode de vérification de mot de passe.
Cyrus SASL peut utiliser le service authdaemond de courrier. Il se connectera à la socket authdaemond de la bibliothèque authlib de Courier et lui communiquera les informations d'identifications du client de messagerie pour qu'elle les vérifie.
L'utilisation du service authdaemond fait bénéficier Cyrus SASL des nombreux backend que la bibliothèque authlib de Courrier reconnaît pour l'authentification des utilisateurs. Ce faisant, ce service est limité à l'utilisation des mécanismes de type texte en clair soit PLAIN et LOGIN, solution bien moin sécurisée que l'utilisation d'auxprop, qui est le seul à pouvoir utiliser les mécanismes de type secret partagé.
Pour info, si vous désirez utiliser authdaemon comme service de vérification de mot de passe, voici ce que doit contenir le fichier /etc/postfix/smtp.conf :
---pwcheck_method: authdaemond
log_level: 3
mech_list: PLAIN LOGIN
authdaemond_path:/var/run/courier/authdaemon/socket.
---A noter que j'ai déchrooté smtpd (fichier master.cf de postfix), que je l'ai redémarré et que j'ai appliqué un chmod 0755 sur les répertoires /var/run/courier et /var/run/courier/authdaemon
Bonne continuation.
Ps : Je n'utilise pas saslauthd, j'en suis certain dans la mesure ou il ne tourne pas en arrière plan.
Re ;
Petite rectification pour l'emplacement du fichier smtpd.conf. Il se situe dans /etc/postfix/sasl et non dans /etc/postfix
Bonne continuation à vous.
Re, c'est encore moi.
A défaut de passer pour le nouveau chieur de service, voici la preuve :
/etc/default/saslauthd :
MECHANISMS="pam"
Ici, comme vous pouvez aisément le constater, le service n'est pas démarré.
Bonne continuation à tous.
Ok, merci à nuxwin pour les compléments !
Bonjour, tout d'abord un grand merci pour ton How-to.
Je l'ai bien suivit a la lettre et ouf l'authentification fonctionne a une chose pret : il ne reconnait aucun nom d'utilisateur.
Comment dois-je faire pour qu'il accepte mon nom d'utilisateur "user" par exemple ?
Merci pour vos reponses.
@Nicolas, tente simplement avec user@domaine.tld au lieu de user tout court. Ça devrait marcher.
Bonjour,
Voila je suis a bout. Grrrr
Je viens d'essayer 7 tutos differents et j'ai reinstaller 7 fois Debian 4.0 sur une machine pour essayer Auth SMTP avec SASL.
J'ai essayer plusieurs methode : Mysql, SASLDB2, PAM, ... toutes on aboutit au meme echec, Authentification failed : Generic failure.
J'ai beau faire toutes les manips une par une, sa ne fonctionne pas. Je suis tomber sur un Tutos ou ils explique comment faire pas a pas et installant les paquets avec leurs sources, meme sa sa ne fonctionne pas.
J'avoue ne plus savoir quoi faire et je me retrouve dans une impasse.
Le point positif c'est que les configurations sur mon POP3/IMAP fontionne toutes mais Postfix ne fonctionne que en local et sa ne m'interresse pas.
Pouvez-vous m'aidez Ou m'indiquez une ultime voie a suivre? Meme sur le site de Debian il n'explique pas comment faire fonctionner l'authentification avec Postfix.
:'( Merci a vous de vos reponses.
Nicolas
Re, pardonnez-moi,
je viens de refaire une tentative
J'ai une nouvelle erreur "SASL authentication failure: cannot connect to Courier authdaemond: No such file or directory"
J'ai verifier /var/run/courier/authdaemon/socket existe bel est bien.
Autre phenomene, jai aussi essayer avec Imap et lorsque je fais testsaslauthd -u user -p pass j'ai comme reponse 0: OK "Succes" mais sa ne marche pas pour autant avec mon client mail!!!!!!!!!!
Voila, merci de votre aide
Desoler de vous avoir importuner,
je suis tomber sur un totus tres complet que j'ai decider de faire ce midi.
J'ai donc installer une machine virtuelle avec Debian 4.0 et est suvi ce tuto --> http://www.starbridge.org/spip/spip...
Tout fonctionne. L'authentification, les virtualbox, etc ...
Ouaaa apres 2 semaines de galere je trouve enfin ma solution.
Merci quand meme pour ton tuto, mais les informations que tu donne et celles que j'ai trouvee sont les memes. Je me demande si ce n'est pas moi qui a fait une erreur quelque part mais sa metonnerai que sur 8 installation de base il n'y en a que une de correcte.
Bref, je suis content. Je vais aller chercher des aspirines et me reposer le cerveau.
Merci
Nicolas