Simple Authentication and Security Layer.
Méthode d'authentification utilisable avec les protocoles fonctionnant en mode connecté, définie dans les RFC 2222, 2245 et 2444. Voir aussi GSSAPI. (Définition du Jargon Français).
Contrairement à ce que le nom pourrait laisser entendre, SASL est tout sauf simple à mettre en pratique. L'objectif n'étant pas d'en devenir des spécialistes, nous l'utiliserons dans un cas de figure qui répond à la question.
Cyrus va avoir besoin d'authentifier ses clients. Postfix probablement aussi, suivant ce que nous lui demanderons de faire.
SASL va fournir un serveur saslauthd
que les applications (Cyrus et probablement Postfix) iront interroger chaque fois qu'il sera nécessaire d'authentifier un utilisateur.
saslauthd
est capable d'interroger de façons très diverses différents éléments capables de lui fournir les informations requises. Ici, nous allons utiliser saslauthd
de manière à ce qu'il s'appuie sur PAM, qui lui-même s'appuiera sur notre base MySQL. Vous comprenez aisément la souplesse que peut apporter ce type de fonctionnement, si nous désirons remplacer MySQL par quelque chose d'autre.
Il faut installer le paquet sasl2-bin
, qui fera installer les dépendances nécessaires. donc :
aptitude install sasl2-bin libsasl2-modules
Et laissons faire.
Il y a un simple fichier à manipuler : /etc/default/saslauthd
, car saslauthd
n'a pas de fichier de configuration, tout est dans la ligne de commande.
Le fichier doit ressembler à ceci :
# # Settings for saslauthd daemon # # Should saslauthd run automatically on startup? (default: no) START=yes # Which authentication mechanisms should saslauthd use? (default: pam) # Notez la somme de possibilités offertes # Available options in this Debian package: # getpwent -- use the getpwent() library function # kerberos5 -- use Kerberos 5 # pam -- use PAM # rimap -- use a remote IMAP server # shadow -- use the local shadow password file # sasldb -- use the local sasldb database file # ldap -- use LDAP (configuration is in /etc/saslauthd.conf) # # Only one option may be used at a time. See the saslauthd man page # for more information. # # Example: MECHANISMS="pam" MECHANISMS="pam" # Additional options for this mechanism. (default: none) # See the saslauthd man page for information about mech-specific options. MECH_OPTIONS="" # How many saslauthd processes should we run? (default: 5) # A value of 0 will fork a new process for each connection. THREADS=5 # Other options (default: -c) # See the saslauthd man page for information about these options. # # Example for postfix users: "-c -m /var/spool/postfix/var/run/saslauthd" # Note: See /usr/share/doc/sasl2-bin/README.Debian OPTIONS="-c -r -m /var/spool/postfix/var/run/saslauthd"Dans les options, il y en a deux qui sont fondamentales ici :
-r
« Combine the realm with the login (with an ’@’ sign in between). e.g. login: “foo” realm: “bar” will get passed as login: “foo@bar”. ». Avec nos options, nous aurons dans notre base de données l'adresse complète de l'utilisateur en guise de nom d'utilisateur ;socket unix
pour communiquer avec saslauthd
. Il se trouve que les composants de Postfix impliqués seront en cage (chroot) dans /var/spool/postfix
. Nous devons donc modifier le chemin d'accès par défaut à ce socket, pour que les composants de Postfix puissent y accéder, c'est le but de la partie -m /var/spool/postfix/var/run/saslauthd
. Il ne faudra donc pas oublier de créer cette arborescence. Autant le faire tout de suite (même si Postfix n'est pas encore installé) :mkdir -p /var/spool/postfix/var/run/saslauthd
Nous en avons fini avec saslauthd
, nous pouvons même le démarrer :
systemctl restart saslauthd.service
et vérifier qu'il est en service comme nous le lui avons demandé :
# ps aux | grep saslauthd root 2266 0.0 0.1 7212 980 ? Ss 15:20 0:00 /usr/sbin/saslauthd -a pam -c -r -m /var/spool/postfix/var/run/saslauthd -n 5 root 2267 0.0 0.3 7256 1564 ? S 15:20 0:00 /usr/sbin/saslauthd -a pam -c -r -m /var/spool/postfix/var/run/saslauthd -n 5 root 2268 0.0 0.1 7212 540 ? S 15:20 0:00 /usr/sbin/saslauthd -a pam -c -r -m /var/spool/postfix/var/run/saslauthd -n 5 root 2269 0.0 0.0 7212 360 ? S 15:20 0:00 /usr/sbin/saslauthd -a pam -c -r -m /var/spool/postfix/var/run/saslauthd -n 5 root 2270 0.0 0.0 7212 360 ? S 15:20 0:00 /usr/sbin/saslauthd -a pam -c -r -m /var/spool/postfix/var/run/saslauthd -n 5
Lorsque cyrus-imapd va s'adresser à saslauthd, il faudra que pam sache qui interroger et comment le faire. Nous aurons à créer un fichier nommé imap
dans /etc/pam.d
. Nous le ferons lorsque nous aurons installé cyrus-imapd
, qui va en placer un qu'il nous faudra modifier.