Il est possible d'ouvrir son relais de messagerie aux utilisateurs externes du réseau, bien que Postfix intègre une mécanique de filtrage des clients (smtpd_recipient_restrictions) qui est inutilisable pour des utilisateurs nomades car basée sur les adresses IP, c'est pourquoi, pour ouvrir son relais aux utilisateurs externes, il est nécessaire d'activer deux plugins supplémentaires : - le SASL qui ajoute une fonctionnalité d'identification - le TLS qui garanti un chiffrement des données perdant leur transport. Ces deux fonctionnalités, correctement paramétrées, permettent d'ouvrir son relais de messagerie sans crainte.
Le Simple Authentication and Security Layer est une méthode (RFC2222) permettant aux développeurs d'applications de ne pas avoir a implémenter les fonctionnalités d'identifications mais de ce reposer sur un service externe dédié à cela. Le serveur de messagerie Cyrus de l'université Carnegie Mellon fournit un service SASL interconnectable avec Postfix, voici comment le configurer.
./configure --enable-krb4=no --enable-plain
make
make install
ln -s /usr/local/lib/sasl2 /usr/lib
make makefiles CCARGS="-DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/local/include/sasl" AUXLIBS="-L/usr/local/lib -lsasl2"
make
make install
dans /etc/postfix/main.cf, modifier smtpd_recipient_restrictions et ajouter en début de liste permit_sasl_authenticated
ajouter à la fin du fichier smtpd_sasl_auth_enable=yes
postfix stop;postfix start
Si postfix n'est pas compilé avec les bonnes options, voici l'erreur dans maillogOct 3 17:05:54 proxy postfix/smtpd[26217]: warning: smtpd_sasl_auth_enable is true, but SASL support is not compiled in
créer le fichier /usr/local/lib/sasl2/smtpd.conf
pwcheck_method: saslauthd
saslauthd_version: 2
mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5
mkdir /var/spool/saslauthd
mkdir -p /var/state/saslauthd
/usr/local/sbin/saslauthd -a getpwent -m /var/state/saslauthd
Vérification de son fonctionnement.
Dans /var/log/authlog, présence du message
Oct 3 17:45:48 proxy saslauthd[27359]: ipc_init : listening on socket: /var/state/saslauthd/mux
et
netstat -an |grep sasl
retourne0xd6bbda14 stream 0 0 0xd7212288 0x0 0x0 0x0 /var/state/saslauthd/mux
Le service SASL est actif et à l'écoute sur la socket unix /var/state/saslauthd/mux, dans le cas contraire à la connexion d'un client, le service postfix s'arrête avec ces messages :Oct 3 17:28:54 proxy postfix/smtpd[20155]: warning: xsasl_cyrus_server_get_mechanism_list: no applicable SASL mechanisms
Oct 3 17:28:54 proxy postfix/smtpd[20155]: fatal: no SASL authentication mechanisms
Oct 3 17:29:56 proxy postfix/master[23336]: warning: process /usr/libexec/postfix/smtpd pid 8781 exit status 1
Génération de la chaîne d'identification$ echo -n '\0user\0mdp' | openssl enc -base64 -e
AHVzZXIAbWRw
$ telnet <adresse> 25
S:220 mail.domain.com ESMTP Postfix
C:ehlo test
250-mail.domain.com
S:250-SIZE 10240000
S:250-AUTH PLAIN CRAM-MD5
S:250-ENHANCEDSTATUSCODES
S:250-8BITMIME
S:250 DSN
C:AUTH PLAIN AHVzZXIAbWRw
S:535 5.7.8 Error: authentication failed: authentication failure
C:AUTH PLAIN Z29vZGlkZWEgOy0p
S:235 2.7.0 Authentication successful
Le serveur SMTP acceptera maintenant de relayer les messages des clients extérieurs identifiés. Cette configuration a l'énorme inconvénient de faire transiter le mot de passe en clair sur le réseau et pour éviter cela, le plus simple est l'activation des communications TLS.