Postfix SASL avec Dovecot

L’authentification SMTP (SMTP Auth) est un mécanisme de contrôle d’accès qui permet de ne relayer que les utilisateurs autorisés, ainsi toute personne non authentifiée est rejetée. Depuis la version 2.3, Postfix supporte SMTP AUTH au travers de Dovecot SASL (introduit depuis Dovecot 1.0). Il est possible de vérifier si votre installation de Postfix est compilée avec le support de SASL avec la commande :

# postconf -a

Configurer Dovecot SASL

Le server POP/IMAP Dovecot possède bien entendu son propre système d’authentification des clients POP/IMAP. Lorsque Postfix utilise Dovecot SASL, celui-ci ré-utilise cette configuration. La communication se fait par l’intermédiaire d’un socket Unix. Le chemin vers ce socket ainsi que la liste des méthodes d’authentification proposées doivent être spécifiées dans dovecot.conf. Voici ce qu’il faut ajouter au fichier de configuration de Dovecot existant :

auth default {
  mechanisms = plain login  
  socket listen {
    client {
      # Un socket est exporté pour pouvoir etre utilisé par un client.
      # Ici c'est notre serveur SMTP Postfix
      path = /var/run/dovecot/auth-client
      mode = 0660
      user = postfix
      group = postfix
    }
  }
}

On relance Dovecot :

# service dovecot restart

La partie Postfix

Maintenant il faut dire à Postfix comment utiliser SASL. Par défaut celui-ci gère du Cyrus SASL, il faut donc explicitement lui dire que l’on utilise le mécanisme de Dovecot, on renseigne le chemin vers le socket et on lui passe quelques options de sécurité. Voici la partie SASL à ajouter au main.cf :

# On utilise le SASL de Dovecot
smtpd_sasl_type = dovecot
# Chemin vers le socket Unix
smtpd_sasl_path = /var/run/dovecot/auth-client
# On active le SASL
smtpd_sasl_auth_enable = yes
# Quelques options de sécurité assez parlantes
smtpd_recipient_restrictions =  permit_mynetworks,
    permit_sasl_authenticated, reject_unauth_destination
# Ceci assure une compatibilité avec d'anciens clients (Outlook par ex.)
broken_sasl_auth_clients = yes
# Pas de connexions anonymes
smtpd_sasl_security_options = noanonymous

On re-charge Postfix :

# postfix reload

Test de la configuration

La configuration est terminée, il est temps de tester le bon fonctionnement du SMTP Auth en telnet:

$ telnet mail.example.net 25
Trying 90.112.151.15...
Connected to mail.example.net.
Escape character is '^]'.
220 mail.example.net ESMTP Postfix
EHLO localhost
250-mail.example.net
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

On voit les deux lignes AUTH indiquant que le SASL est pris en compte. Pourquoi deux lignes? La deuxième avec le signe égal est pour la compatibilité avec les anciens clients (option : broken_sasl_auth_clients = yes).

MAIL FROM:
250 2.1.0 Ok
RCPT TO: fabien@feub.net
554 5.7.1 : Relay access denied

La connexion est refusée, il faut maintenant penser à s’authentifier avec la commande AUTH. Mais attention, en telnet il est nécessaire d’encoder le couple nom d’utilisateur/mot de passe en base64, par exemple avec :

$ echo -ne '\000username\000password' | openssl base64

Ce qui donne :

AUTH PLAIN AGhvbnTHY3RAZmDiavVuKikI7hbm5uZVBAc3BjKXRuoJWsK
235 2.0.0 Authentication successful
RCPT TO: fabien@feub.net
250 2.1.5 Ok
DATA
354 End data with .
Yes!
.
250 2.0.0 Ok: queued as E72163EB1E
quit
221 2.0.0 Bye
Connection closed by foreign host.

Le message devrait être délivré sous peu ^.^

2 thoughts on “Postfix SASL avec Dovecot”

  1. une question me tourmente depuis un bout de temps:Faut-il forcer des mises à jour synchronisées de la file d’attente des courriels?sinon merci pour le support ;)

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *