Serveur Mail · 6 min read · Feb 13, 2026

Postfix-SMTP-AUTH-TLS-Howto

Postfix-SMTP-AUTH-TLS-Howto

Version 1.0
Author: Falko Timme

Ce document décrit comment installer un serveur de messagerie basé sur postfix capable de SMTP-AUTH et TLS. Il devrait fonctionner (peut-être avec quelques modifications concernant les chemins, etc.) sur tous les systèmes d’exploitation *nix. Je l’ai testé jusqu’à présent sur Debian Woody et Fedora Core 1.

Ce howto est destiné comme un guide pratique ; il ne couvre pas les bases théoriques. Elles sont traitées dans de nombreux autres documents sur le web.

Ce document est fourni sans garantie d’aucune sorte !

1 Obtenir les Sources

Nous avons besoin des logiciels suivants : openssl, cyrus-sasl2, postfix et le patch TLS pour postfix. Nous allons installer le logiciel depuis le répertoire /tmp.

cd /tmp
wget http://www.openssl.org/source/openssl-0.9.7c.tar.gz
wget –passive-ftp ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-2.1.17.tar.gz
wget –passive-ftp ftp://ftp.aet.tu-cottbus.de/pub/postfix_tls/related/postfix/postfix-2.0.16.tar.gz
wget –passive-ftp ftp://ftp.aet.tu-cottbus.de/pub/postfix_tls/pfixtls-0.8.16-2.0.16-0.9.7b.tar.gz

2 Installer Openssl

tar xvfz openssl-0.9.7c.tar.gz
cd openssl-0.9.7c
./config
make
make install

3 Installer Cyrus-sasl

cd /tmp
tar xvfz cyrus-sasl-2.1.17.tar.gz
cd cyrus-sasl-2.1.17
./configure –enable-anon –enable-plain –enable-login –disable-krb4 –with-saslauthd=/var/run/saslauthd –with-pam –with-openssl=/usr/local/ssl –with-plugindir=/usr/local/lib/sasl2 –enable-cram –enable-digest –enable-otp
(1 ligne!)
make
make install

Si /usr/lib/sasl2 existe :
mv /usr/lib/sasl2 /usr/lib/sasl2_orig

ln -s /usr/local/lib/sasl2 /usr/lib/sasl2

Créez le fichier /usr/local/lib/sasl2/smtpd.conf :

| # Cela configure smtpd pour s'authentifier en utilisant le démon saslauthd. pwcheck_method:saslauthd # Cela autorise uniquement plain, login, cram-md5 et digest-md5 comme mécanismes d'authentification. mech_list: plain login cram-md5 digest-md5 |

4 Installer Postfix

cd /tmp
tar xvfz pfixtls-0.8.16-2.0.16-0.9.7b.tar.gz
tar xvfz postfix-2.0.16.tar.gz
cd postfix-2.0.16
useradd postfix
groupadd postdrop
patch -p1 < ../pfixtls-0.8.16-2.0.16-0.9.7b/pfixtls.diff
make makefiles CCARGS=”-DHAS_SSL -DUSE_SASL_AUTH -I/usr/local/include/sasl -I/usr/local/ssl/include” AUXLIBS=”-L/usr/local/ssl/lib -L/usr/local/lib -R/usr/local/lib -lsasl2 -lssl -lcrypto”
(1 ligne!)
make
make install
(acceptez les valeurs par défaut)

  • cp /etc/postfix/aliases /etc/
    newaliases*

Créez /etc/init.d/postfix :

| #!/bin/bash # # postfix Ce script contrôle le démon postfix. # # description: Postfix MTA # processname: postfix case "$1" in start) /usr/sbin/postfix start ;; stop) /usr/sbin/postfix stop ;; reload) /usr/sbin/postfix reload ;; restart) $0 stop $0 start ;; *) echo "Usage: $0 {start|stop|reload|restart}" exit 1 esac exit 0 |

chmod 755 /etc/init.d/postfix

Pour démarrer postfix au démarrage, faites ce qui suit :

ln -s /etc/init.d/postfix /etc/rc2.d/S20postfix
ln -s /etc/init.d/postfix /etc/rc3.d/S20postfix
ln -s /etc/init.d/postfix /etc/rc4.d/S20postfix
ln -s /etc/init.d/postfix /etc/rc5.d/S20postfix
ln -s /etc/init.d/postfix /etc/rc0.d/K20postfix
ln -s /etc/init.d/postfix /etc/rc1.d/K20postfix
ln -s /etc/init.d/postfix /etc/rc6.d/K20postfix

Notre postfix fonctionnera en chroot dans /var/spool/postfix, donc nous devons copier quelques fichiers :

mkdir -p /var/spool/postfix/etc
cd /etc
cp localtime services hosts resolv.conf /var/spool/postfix/etc/
mkdir -p /var/spool/postfix/var/run
mv -f /var/run/saslauthd/ /var/spool/postfix/var/run/
chmod 755 /var/spool/postfix/var/run/saslauthd/
ln -s /var/spool/postfix/var/run/saslauthd/ /var/run/saslauthd

Maintenant, nous devons générer les fichiers de certificat nécessaires pour TLS :

mkdir /etc/postfix/ssl
cd /etc/postfix/ssl/

Si /usr/bin/openssl existe :

mv /usr/bin/openssl /usr/bin/openssl _orig*

ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024

<- Entrez un mot de passe pour smtpd.key.

chmod 600 smtpd.key
openssl req -new -key smtpd.key -out smtpd.csr

<- Encore une fois, entrez votre mot de passe pour smtpd.key.
<- Entrez votre nom de pays (par exemple, “FR”).
<- Entrez le nom de votre état ou province.
<- Entrez votre ville.
<- Entrez le nom de votre organisation (par exemple, le nom de votre entreprise).
<- Entrez le nom de votre unité organisationnelle (par exemple, “Service informatique”).
<- Entrez le nom de domaine entièrement qualifié du système (par exemple, “server1.example.com”).
<- Entrez votre adresse e-mail.

Les informations suivantes sont optionnelles :

<- Entrez un mot de passe de défi.
<- Entrez un nom d’entreprise optionnel.

openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt

<- Encore une fois, entrez votre mot de passe pour smtpd.key.

openssl rsa -in smtpd.key -out smtpd.key.unencrypted

<- Encore une fois, entrez votre mot de passe pour smtpd.key. *
*

mv -f smtpd.key.unencrypted smtpd.key
openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650

<- Encore une fois, entrez votre mot de passe pour smtpd.key.
<- Entrez votre nom de pays (par exemple, “FR”).
<- Entrez le nom de votre état ou province.
<- Entrez votre ville.
<- Entrez le nom de votre organisation (par exemple, le nom de votre entreprise).
<- Entrez le nom de votre unité organisationnelle (par exemple, “Service informatique”).
<- Entrez le nom de domaine entièrement qualifié du système (par exemple, “server1.example.com”).
<- Entrez votre adresse e-mail.

Éditez /etc/postfix/main.cf afin d’activer SMTP-AUTH et TLS :

*postconf -e ‘mydomain = example.com’
postconf -e ‘myhostname = server1.$mydomain’
postconf -e ‘smtpd_sasl_local_domain =’
postconf -e ‘smtpd_sasl_auth_enable = yes’
postconf -e ‘smtpd_sasl_security_options = noanonymous’
postconf -e ‘broken_sasl_auth_clients = yes’
postconf -e ‘smtpd_recipient_restrictions=permit_sasl_authenticated,permit_mynetworks,check_relay_domains’
postconf -e ‘inet_interfaces = all’
postconf -e ‘alias_maps = hash:/etc/aliases’

  • postconf -e ‘smtpd_tls_auth_only = no’
    postconf -e ‘smtp_use_tls = yes’
    postconf -e ‘smtpd_use_tls = yes’
    postconf -e ‘smtp_tls_note_starttls_offer = yes’
    postconf -e ‘smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key’
    postconf -e ‘smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt’
    postconf -e ‘smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem’
    postconf -e ‘smtpd_tls_loglevel = 1’
    postconf -e ‘smtpd_tls_received_header = yes’
    postconf -e ‘smtpd_tls_session_cache_timeout = 3600s’
    postconf -e ‘tls_random_source = dev:/dev/urandom’

5 Configurer Saslauthd

Créez /etc/init.d/saslauthd :

| #!/bin/sh -e NAME=saslauthd DAEMON="/usr/sbin/${NAME}" DESC="Démon d'authentification SASL" DEFAULTS=/etc/default/saslauthd test -f "${DAEMON}" || exit 0 # Source le fichier par défaut ; éditez ce fichier pour configurer ce script. if [ -e "${DEFAULTS}" ]; then . "${DEFAULTS}" fi # Si nous ne devons pas démarrer le démon, sortez simplement if [ "${START}" != "yes" ]; then exit 0 fi # Si nous n'avons pas de mécanismes définis if [ "x${MECHANISMS}" = "x" ]; then echo "Vous devez configurer ${DEFAULTS} avec les mécanismes à utiliser" exit 0 fi # Ajoutez nos mécanismes avec le drapeau nécessaire for i in ${MECHANISMS}; do PARAMS="${PARAMS} -a ${i}" done # Considérez nos options case "${1}" in start) echo -n "Démarrage de ${DESC}: " ln -fs /var/spool/postfix/var/run/${NAME} /var/run/${NAME} ${DAEMON} ${PARAMS} echo "${NAME}." ;; stop) echo -n "Arrêt de ${DESC}: " PROCS= `ps aux | grep -iw '/usr/sbin/saslauthd' | grep -v 'grep' |awk '{print $2}' | tr ' ' ' '` if [ "x${PROCS}" != "x" ]; then kill -15 ${PROCS} &> /dev/null fi echo "${NAME}." ;; restart|force-reload) $0 stop sleep 1 $0 start echo "${NAME}." ;; *) echo "Usage: /etc/init.d/${NAME} {start|stop|restart|force-reload}" >&2 exit 1 ;; esac exit 0 |

chmod 755 /etc/init.d/saslauthd

Pour démarrer saslauthd au démarrage, faites ce qui suit :

ln -s /etc/init.d/saslauthd /etc/rc2.d/S20saslauthd
ln -s /etc/init.d/saslauthd /etc/rc3.d/S20saslauthd
ln -s /etc/init.d/saslauthd /etc/rc4.d/S20saslauthd
ln -s /etc/init.d/saslauthd /etc/rc5.d/S20saslauthd
ln -s /etc/init.d/saslauthd /etc/rc0.d/K20saslauthd
ln -s /etc/init.d/saslauthd /etc/rc1.d/K20saslauthd
ln -s /etc/init.d/saslauthd /etc/rc6.d/K20saslauthd

Ensuite, créez /etc/default/saslauthd :

| # Cela doit être décommenté avant que saslauthd ne soit exécuté automatiquement START=yes # Vous devez spécifier les mécanismes d'authentification que vous souhaitez utiliser. # Cela par défaut à "pam" pour le support PAM, mais peut également inclure # "shadow" ou "sasldb" MECHANISMS=shadow |

Si vous découvrez que saslauthd est situé dans /usr/local/sbin au lieu de /usr/sbin, créez un lien symbolique :

ln -s /usr/local/sbin/saslauthd /usr/sbin/saslauthd

Puis démarrez saslauthd et postfix :

/etc/init.d/saslauthd start

/etc/init.d/postfix start

6 Testez votre Configuration

Pour voir si SMTP-AUTH et TLS fonctionnent correctement, exécutez la commande suivante :

telnet localhost 25

Après avoir établi la connexion à votre serveur de messagerie postfix, tapez

ehlo localhost

Si vous voyez les lignes

250-STARTTLS et

250-AUTH

tout va bien.

Tapez

quit pour revenir à l’invite de commande du système.

Des informations supplémentaires (spécifiques à Debian) sur ce sujet peuvent être trouvées ici : http://www.projektfarm.com/en/support/debian_setup/index.html.

Liens

Postfix MTA : http://www.postfix.org/

OpenSSL : http://www.openssl.org/

Cyrus-SASL : http://asg.web.cmu.edu/sasl/

Postfix/TLS : http://www.aet.tu-cottbus.de/personen/jaenicke/postfix_tls/

Emplacement original de ce document :

http://www.falkotimme.com/howtos/postfix_smtp_auth_tls/

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.