Postfix

Postfix est le Service de Transfert de Courriel (MTA) par défaut d'Ubuntu. Il est conçu pour être sûr autant que facile et rapide à configurer. Il est compatible avec le MTA sendmail. Cette section détaille l'installation et la configuration de postfix. Elle explique aussi comment en faire un serveur SMTP utilisant une connexion sécurisée (afin d'assurer la sécurité des courriels envoyés).

Installation

Pour installerpostfix avec les fonctions SMTP-AUTH et Transport Layer Security (TLS), utilisez la commande suivante:

sudo apt-get install postfix

Appuyez simplement sur la touche Entrée à chaque fois que le processus d'installation vous posera une question, la configuration sera faite plus précisément lors de la prochaine étape.

Configuration de base

Pour configurerpostfix, utilisez la commande suivante:

sudo dpkg-reconfigure postfix

L'interface utilisateur sera alors affichée. Dans chaque écran, sélectionnez les valeurs suivantes :

  • Ok

  • Site Internet

  • NONE

  • courriel.exemple.fr

  • courriel.exemple.fr, localhost.localdomain, localhost

  • Non

  • 127.0.0.0/8

  • Oui

  • 0

  • +

  • tous

[Note]

Remplacer courriel.exemple.fr par le nom d'hôte de votre serveur de messagerie.

Il est maintenant temps de décider du format de boîte aux lettres à utiliser. Par défaut Postfix utilisera le format mbox. Plutôt que de modifier directement le fichier de configuration, vous pouvez utiliser la commande postconf pour régler tous les paramètres de postfix. Les paramètres de configuration seront enregistrés dans le fichier /etc/postfix/main.cf. Si vous désirez modifier un réglage particulier par la suite, vous pourrez soit lancer la commande, soit le modifier directement dans le fichier.

Pour utiliser le format de boîte aux lettres Maildir :

sudo postconf -e 'home_mailbox = Maildir/'
[Note]

Les nouveaux messages seront stockés dans /home/nom_utilisateur/Maildir, vous devrez donc configurer votre agant de délivrance de courriel (MDA) pour qu'il utilise le même chemin.

Authentification SMTP

Les étapes suivantes montrent comment configurer postfix pour utiliser SASL pour l'authentification SMTP.

  1. Configurer Postfix pour l'authentification SMTP avec SASL (saslauthd) :

    sudo postconf -e 'smtpd_sasl_local_domain ='
    sudo postconf -e 'smtpd_sasl_auth_enable = yes'
    sudo postconf -e 'smtpd_sasl_security_options = noanonymous'
    sudo postconf -e 'broken_sasl_auth_clients = yes'
    sudo postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
    sudo postconf -e 'inet_interfaces = all'
    

    Open the /etc/postfix/sasl/smtpd.conf file and add the following lines to end of the file:

    pwcheck_method: saslauthd
    mech_list: plain login
    
  2. Ensuite, configurez les certificats numériques pour TLS. Lorsque le système vous posera des questions, suivez les instructions et répondez de manière appropriée.

    openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024
    chmod 600 smtpd.key
    openssl req -new -key smtpd.key -out smtpd.csr
    openssl x509 -req -days 365 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
    openssl rsa -in smtpd.key -out smtpd.key.unencrypted
    mv -f smtpd.key.unencrypted smtpd.key
    openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650
    sudo mv smtpd.key /etc/ssl/private/
    sudo mv smtpd.crt /etc/ssl/certs/
    sudo mv cakey.pem /etc/ssl/private/
    sudo mv cacert.pem /etc/ssl/certs/
    
    [Note]

    Vous pouvez obtenir des certificats numériques à partir d'une autorité de certification. Il est également possible de créer ces certificats vous-même. Consultez la sous-section Créer un certificat autosignée pour plus de détails.

  3. Configurer Postfix pour faire du chiffrement TLS pour le courrier sortant et entrant à la fois :

    sudo postconf -e 'smtpd_tls_auth_only = no'
    sudo postconf -e 'smtp_use_tls = yes'
    sudo postconf -e 'smtpd_use_tls = yes'
    sudo postconf -e 'smtp_tls_note_starttls_offer = yes'
    sudo postconf -e 'smtpd_tls_key_file = /etc/ssl/private/smtpd.key'
    sudo postconf -e 'smtpd_tls_cert_file = /etc/ssl/certs/smtpd.crt'
    sudo postconf -e 'smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem'
    sudo postconf -e 'smtpd_tls_loglevel = 1'
    sudo postconf -e 'smtpd_tls_received_header = yes'
    sudo postconf -e 'smtpd_tls_session_cache_timeout = 3600s'
    sudo postconf -e 'tls_random_source = dev:/dev/urandom'
    sudo postconf -e 'myhostname = mail.example.com'
    
  4. Arrêter le fonctionnement en mode chroot pour le serveur SMTP. Repérez la ligne suivante dans le fichier /etc/postfix/master.cf :

    smtp      inet  n       -       -       -       -       smtpd
    

    et la modifier ainsi :

    smtp      inet  n       -       n       -       -       smtpd
    
[Note]

Après avoir exécuté toutes les commandes, le SMTP AUTH est configuré avec postfix. Le certificat auto-signé a été créé pour TLS et il est configuré avec postfix.

Maintenant, le fichier /etc/postfix/main.cf doit ressembler à ça.

La configuration initiale de postfix est complète. Exécutez la commande suivante pour démarrer le démon postfix :

          
            sudo /etc/init.d/postfix start
          
        

Le démon postfix est maintenant installé, configuré et fonctionne correctement. Postfix prend en charge SMTP AUTH comme défini dans la RFC2554. Il est basé sur SASL. Cependant, il est toujours nécessaire de paramétrer l'authentification SASL avant de pouvoir utiliser SMTP.

Configuration de SASL

libsasl2-2, sasl2-bin et libsasl2-modules sont nécessaires pour activer l'authentification SMTP avec SASL. Si vous ne l'avez pas encore fait, vous pouvez installer ces applications.

sudo apt-get install libsasl2-2 sasl2-bin

Quelque modifications sont nécessaires pour le faire fonctionner correctement. Comme Postfix s'exécute dans un environnement chroot dans /var/spool/postfix, SASL doit être configuré pour s'exécuter dans ce me environnement (/var/run/saslauthd devient /var/spool/postfix/var/run/saslauthd) :

sudo mkdir -p /var/spool/postfix/var/run/saslauthd
sudo rm -rf /var/run/saslauthd

Pour activer saslauthd, éditez le fichier /etc/default/saslauthd, et modifiez ou ajoutez le paramètre START. Afin de configurer saslauthd pour qu'il s'exécute dans une fausse racine, ajoutez les paramètres PWDIR, PIDFILE et PARAMS. Pour finir, configurez le paramètre MECHANISMS selon votre souhait. Le fichier doit ressembler à cela :

# This needs to be uncommented before saslauthd will be run
# automatically
START=yes

PWDIR="/var/spool/postfix/var/run/saslauthd"
PARAMS="-m ${PWDIR}"
PIDFILE="${PWDIR}/saslauthd.pid"

# You must specify the authentication mechanisms you wish to use.
# This defaults to "pam" for PAM support, but may also include
# "shadow" or "sasldb", like this:
# MECHANISMS="pam shadow"

MECHANISMS="pam"
[Note]

Si vous le préférez, vous pouvez utiliser shadow au lieu de pam. Cela sélectionne le transfert des mots de passe haché par MD5, ce qui est parfaitement sûr. Le nom d'utilisateur et le mot de passe nécessaires pour l'authentification seront ceux des utilisateurs du système que vous utilisez sur le serveur.

Mettez ensuite à jour l'état de /var/spool/portfix/var/run/saslauthd pour dpkg. Le script saslauthd init utilise ce paramètre pour créer le repertoire manquant avec les droits d'accès et le propriétaires adéquat :

sudo dpkg-statoverride --force --update --add root sasl 755 /var/spool/postfix/var/run/saslauthd

Tests

La configuration de SMTP AUTH est complète. Il est maintenant temps de démarrer et de tester la configuration. Vous pouvez exécuter la commande suivante pour démarrer le démon SASL :

          
            sudo /etc/init.d/saslauthd start
          
        

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

          
            telnet courriel.exemple.fr 25
          
        

Après avoir établi la connexion au serveur de courriel postfix, saisissez :

ehlo courriel.exemple.fr

Si vous voyez les lignes suivantes parmi d'autres, alors tout fonctionne correctement. Saisissez quit pour quitter.

250-STARTTLS
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250 8BITMIME