AUTHENTIFICATION avec Sendmail

 

Introduction

Vous pouvez être amené à vous connectez à votre serveur Sendmail depuis un poste distant ( ex: outlook express ou autre de chez vous avec un modem). La fonction d'anti-relai dans la configuration de Sendmail est traitée par la règle check_rcpt qui vérifie l'adresse IP et le nom pleinement qualifié de l'expéditeur. Vous ne pouvez donc pas utiliser ce mécanisme pour que Sendmail vous identifie (puisque vous vous connectez par l'intermédiaire d'un provider). Il existe plusieurs méthodes possibles, la plus utilisée est sans doute SASL. Sendmail contrôle les utilisateurs itinérants par une méthode d'authentification (AUTH).

Pré-requis : Cyrus-SASL et zlib

Vous avez probablement zlib d'installé sur votre machine, sinon installez le ( http://www.gzip.org/zlib/ )

Ttélécharger à ftp.andrew.cmu.edu/pub/cyrus-mail

Les librairies de Cyrus supportent le concept "realms": realm est basé sur le principe du triplet id (identifiant) authid (authentification) et mot de passe. SASL détermine si ce triplet est permis ou non. Plusieurs mécanismes d'authentifications sont supportés par SASL: PLAIN, CRAM-MD5, DIGEST-MD5, KERBEROS,.. Ces mécanismes d'authentification sont réalisés par l'appel de sasl_checkpass () dans /usr/local/sasl/Sendmail.conf (que vous créerrez pour préciser le type d'authentification à utiliser).

Stockage des mots de passe

Sasl utilise sa propre base de données pour stocker les mots de passe (sasl stocke mot de passe dans une base de données secrete sasldb) mais vous pouvez tout aussi bien utiliser /etc/passwd (option pwcheck_method), /etc/shadows (pb si le programme utilisant sasl ne tourne pas sous root). Kerberos_v4 peut être utilisé s'il est trouvé pendant la compilation. pam (pluggable authentivation module) par défaut sous Linux et Solaris. Seul Kerberos 4 (srvtab) est configurable et par défaut dans /etc/srvtab mais est modifiable par l'option srvtab.

En fonction du type de base utilisé (db, gdbm, ndbm) les extensions de ce fichier seront .pag, .dir,... Ces fichiers contiennent des informations importantes qui ne doivent pas être accessibles au simple utilisateur. l'utilitaire saslpasswd permet de changer les mots de passe, sasldblistusers pour visualiser les utilisateurs dans la base sasldb et la méthode d'authentification. Par défaut l'utilisateur authentifier peut être amené à écrire dans le fichier sasl (pour changer son mot de passe) et dans ce cas il faut mettre auto_transition à enable (non par défaut). Pour utiliser kerberos, Sendmail devra accéder à un service de clés stocké dans un fichier "srvtab" ou keytab (KERBEROS 5). Sendmail lit les fichiers de conf dans /usr/lib/sasl/Sendmail.conf L'upgrade de sasl ne nécessite pas de recompilation de Sendmail après l'installation: créer un lien /usr/local/lib/sasl vers /usr/lib/sasl ou bien copier les bibliothèques.

Mécanismes d'authentification

Le mécanisme PLAIN est peu sûr car le mot de passe est passé en clair (dans ce cas il est souhaitable de rajouter SSL en compilant Sendmail avec STARTTLS). Cyrus-SASL supporte la méthode d'authentification par "secret partagé": CRAM-MD5 et DIGEST-MD5 Ces méthodes reposent sur la méthode de secret partagé entre le client et le serveur. Ce mécanisme est bien sur plus sécurisé que la simple méthode PLAIN. Ce mot de passe partagé doit être sotcké sur le serveur dans une base sûre sinon le client ne pourra plus s'authentifier. Ces secrets sont stockés dans la base /etc/sasldb.

Installation et compilation de Cyrus-SASL

./configure --enable-login (ne pas oublier l'option sinon pas possible de s'authentifier !)

make

make install

Les bibliothèques seront installées dans /usr/local/lib/sasl

Créer le fichier /usr/local/lib/sasl/Sendmail.conf

mettez la ligne: pwcheck_method: sasldb (si les mots de passes sont stockés dans la base sasl).

Sendmail lit les fichiers dans /usr/lib :

cp -rf /usr/local/lib/sasl /usr/lib

cp /usr/local/lib/libsasl* /usr/lib/

chmod -R 500 /usr/local/lib/sasl /usr/local/lib/libsasl* /usr/lib/sasl /usr/lib/libsasl*

 

---Fin d'installation Cyrus-SASL----

 

 

Compilation de Sendmail

APPENDDEF(`confENVDEF', `-DSASL -D_FFR_UNSAFE_SASL')

APPENDDEF(`conf_sendmail_LIBS', `-lsasl')

APPENDDEF(`confLIBDIRS', `-L/usr/local/lib')

APPENDDEF(`confINCDIRS', `-I/usr/local/include/sasl')

 

 

# /usr/sbin/sendmail -bt -d0.1

Version 8.11.3

Compiled with: LDAPMAP MAP_REGEX LOG MATCHGECOS MIME7TO8 MIME8TO7 NAMED_BIND NETINET NETUNIX NEWDB NIS QUEUE SASL SCANF SMTP USERDB XDEBUG

=========================

SYSTEM IDENTITY (after readcf)

=========================

(short domain name) $w = mail

(canonical domain name) $j = mail.webimmos.com

(subdomain name) $m = webimmos.com

(node name) $k = mail.webimmos.com

==============================

ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)

Ce qui nous intéresse içi c'est la prise en charge SASL comme indiqué çi-dessus. Il reste à configurer. Si vous décidez d'utiliser votre propre base (et non les login/password de /etc/passwd) alors assurez vous d'avoir dans /usr/local/lib/sasl/Sendmail.conf: pwcheck_method: sasldb

Ensuite créez un utilisateur: saslpasswd

 

Dans votre fichier domaine.com.m4 vous devrez préciser

TRUST_AUTH_MECH(`LOGIN PLAIN DIGEST-MD5')dnl

define(`confAUTH_MECHANISMS',`LOGIN PLAIN DIGEST-MD5')dnl

 

# telnet 127.0.0.1 25

Trying 127.0.0.1... Connected to localhost.webimmos.com.

Escape character is '^]'.

220 mail.webimmos.com ESMTP Sendmail 8.11.3/8.11.3; Tue, 28 Aug 2001 19:26:58 GMT

EHLO webimmos.com

250-mail.webimmos.com Hello localhost.webimmos.com [127.0.0.1], pleased to meet you

250-ENHANCEDSTATUSCODES

250-EXPN

250-VERB

250-8BITMIME

250-SIZE

250-DSN

250-ONEX

250-ETRN

250-XUSR

250-AUTH LOGIN PLAIN DIGEST-MD5 (voiçi le résultat de cette prise en charge)

250 HELP

Mettez le niveau de log à 14, vous devriez voir quelque chose comme:

Aug 28 19:26:58 mail sendmail[26903]: SASL: available mech=LOGIN PLAIN ANONYMOUS DIGEST-MD5, allowed mech=LOGIN PLAIN DIGEST-MD5