Authentification SASL avec postfix

Salut les gens, j’ai vu que plusieurs personnes sur ce forum s’interressaient à postfix, alors comme j’étais en plein dedans…
nouveau petit tuto ou how to…sur… tout est dans le titre.
Je l’ai fait parce que j’ai trouvé pleins d’info, mais rien de centralisé la-dessus, peut-être aurais-je dû mieux chercher, mais je l’ai fait et il marche bien…donc je vous le fais partager…

<mode_blabla>
Comme l’a dit l’un des grand chef d’ici, MattOTop, dans un post
si [quote=“MattOTop”]l’autentification à l’envoi, c’est surtout le plus souvent INUTILE. [/quote]

On a parfois des directives au niveau des chefs qui vous fliquent ou veulent absolument que ça marche…Donc je me dis (enfin j’espère) que ce post ne sera pas si inutile ou ne fera pas double emploi avec d’autres.

Alors d’abord, qu’est-ce que SASL?

Le protocole SMTP de base, ne prévoit pas de mécanisme permettant d’authentifier les utilisateurs. Je vous renvois ici pour de plus amples informations concernant ce protocole, c’est en français!! rassurez-vous :wink: je vous connais, c’est pas parce qu’on a eu 18 en anglais qu’on sait forcément traduire correctement une RFC :wink:.

SASL: Simple Authentication and Security Layer

En gros c’est une couche de sécurité qui vous permettra d’authentifier les utilisateurs cherchant a envoyer des messages par le biais de votre serveur de mail (postfix ici en l’occurence). La RFC correspondantes est la RFC N°2554 Service Extension for Authentication , je ne l’ai pas trouvé en français, j’ai pas beaucoup cherché il est vrai.

ensuite, pour l’installation de postfix, je vous renvois vers le très bon tuto de Damsss qui est concis et qui rassemble l’essentiel pour une configuration de base pour postfix.

entrons dans le vif du sujet :
</mode_blabla> :wink:

pré requis: l’installation et la configuration de postfix;

les paquets à installer:
libsasl2-modules
sasl2-bin
Il s’agit des bibliotheques Cyrus SASL si vous voulez chercher plus d’infos pour vous.

personnellement, je n’ai eu a installer que ces 2 paquets en plus, maintenant, il se peut que vous vouliez rajouter une couche TLS avec certificat (je ne l’ai pas fait donc n’étant pas sûr du résultat, je ne traiterai pas cette authentification ici, mais peut-etre plus tard…)auquel cas il vous faudra ces 2 paquets en plus:
postfix-tls
openssl (que vous avez déjà certainement)

voila, une fois que les paquets sont installés, je vous invite a rajouter ces lignes dans le fichier de configuration de postfix [size=117]/etc/postfix/main.cf[/size] que nous connaissons par coeur :wink::

# SASL SUPPORT FOR CLIENTS
#
# The following options set parameters needed by Postfix to enable
# Cyrus-SASL support for authentication of mail clients.
#
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous, noplaintext
smtpd_sasl_local_domain = $myhostname
broken_sasl_auth_clients = yes

smtpd_recipient_restrictions = permit_sasl_authenticated,
 permit_mynetworks, 
 reject_unauth_destination

à ce niveau qq explications s’imposent, si comme moi vous êtes curieux et ne voulez pas simplement recopier des lignes sans savoir ce qu’elles impliquent réellement:

smtpd_sasl_auth_enable = yes : ça il me semble que ce soit suffisamment clair, c’est pour activer cette méthode d’authentification (SASL) dans postfix.

smtpd_sasl_security_options = noanonymous, noplaintext : permet de contrôler les mécanismes de mot de passe qui seront présentés lorsque des clients se connecteront à votre serveur SMTP. Les options sont:

  • noplaintext: empeche la transmission des mots de passe en clair
  • noactive: permet de limiter les mécanismes de mots de passe supportés à ceux connus pour ne pas être vulnérable a différents types d’attaques.
  • nodictionary:pareil que noactive mais empeche les attaques de type “force-brute” basée sur des dico de mot de passe.
  • noanonymous:Les connexions anonymes ne servent a rien pour postfix, par défaut, il ne les autorise pas, mais si vous spécifiez n’importe quelle autre option, il faut rajouter celle-ci puisque vous aurez redéfini le comportement par défaut.
  • mutual_auth: exige des mécanismes fournissant une authentification mutuelle, ou le client et le serveur fournissent des informations prouvant leurs identités.

smtpd_sasl_local_domain = $myhostname:
défini le domaine d’identification de l’utilisateur

broken_sasl_auth_clients = yes :
Certains clients ne respectent pas le protocole d’identification SMTP (hum, hum est-il besoin de les nommer?), en configurant ce paramètre, on permet a postfix d’annoncer son support d’authentification SMTP de façon standard et non-standard.

smtpd_recipient_restrictions = permit_sasl_authenticated,
permit_mynetworks,
reject_unauth_destination
:
Permet a postfix d’autoriser le relais des utilisateurs authentifiés.

Voila pour la partie du fichier /etc/postfix/main.cd

Interressons-nous maintenant au fichier: [size=117]/etc/postfix/sasl/smtpd.conf[/size]

si il existe, chez moi il existait, mais il était vide:
rajoutez dedans:

pwcheck_method: auxprop
mech_list: digest-md5 cram-md5

qq explications:
pwcheck_method: auxprop:
le mot-clef auxprop signifie simplement a postfix qu’il doit utiliser un fichier externe pour chercher les mots de passe.
si vous voulez utiliser les mots de passe unix, mettez saslauthd à la place.

mech_list:
pourrait-être :
PLAIN: ne chiffre pas les informations d’authentification.
LOGIN: Certains clients de courrier ont été développés en l’utilisant, il n’est ni enregistré, ni supporté officiellement. (fonctionne comme PLAIN).
OTP:N’utilise aucun chiffrement, utilise des mots de passe éphémère, mais les mots de passes ne peuvent servir qu’à une seule session.
KERBEROS:protocole d’indentification a l’échelle d’un réseau. A moins de l’utiliser par ailleurs, il n’est pas utile de supporter ce mécanisme.
ANONYMOUS:Ne sert a rien puisque le but de l’authentification SMTP est d’authentifier les utilisateurs et de ne pas laisser les anonymes utiliser le relais.
DIGEST-MD5: Le serveur et le client partagent un mot de passe secret qui n’est jamais envoyé sur le réseau.

Juste une petite chose avant de passer a la suite, le fichier que vous venez d’éditer appartient maintenant a root il faut qu’il appartienne au groupe sasl et que postfix fasse partie de ce groupe:

root@debspire:/root# gpasswd -a postfix sasl

Passons a la création des utilisateurs et des mots de passe:

La commande qui va être utilisée est : saslpasswd2, elle stockera les comptes dans /etc/sasldb2, mais il faut a la fois indiquer un nom d’utilisateur et un domaine SASL.
Ce domaine est la valeur indiquée dans votre fichier de conf /etc/postfix/main.cf a l’endroit:
myhostname = …

Donc pour créer les utilisateurs et les mots de passe nous utiliserons:

# saslpasswd2 -c -u 'postconf -h myhostname' [i]user[/i]

le systeme va vous demande le mot de passe ainsi que la confirmation du mot de passe.

Dans votre client de messagerie vous n’aurez qu’à indiquer cet utilisateur et ce mot de passe.

[size=117]petits soucis[/size]:

avant de faire un :

# /etc/init.d/postfix stop
# /etc/init.d/postfix start

Je me suis heurté à un petit soucis, dans les logs, le systeme me disait qu’il ne trouvait pas le fichier /etc/sasldb2

Après qq recherche, je me suis aperçu qu’il fallait modifier le fichier /etc/init.d/postfix lui-même:

près de la ligne 45 lorsque vous voyez la ligne:

FILES="etc/location etc/services etc/resolv.conf ..."

rajoutez:

etc/sasldb2

relancez le serveur postfix et voila!
vous avez un serveur postfix avec l’authentification smtp.

qq liens qui m’ont beaucoup aidé:
le principal:
http://www.tribulaciones.org/docs/postfix-sasl-tls-howto.html

http://small.dropbear.id.au/myscripts/postfixmysql.html

http://www.linuxorable.net/8bis-Postfix-58-SASL.html

http://abcdrfc.free.fr/rfc-vf/pdf/rfc821.pdf

Et le livre de Kyle Dent “Postfix la référence” aux éditions O’Reilly, Paris 2004.