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).

Ce guide n'explique cependant pas comment mettre en place des Domaines Virtuels Postfix. Pour obtenir des informations sur les Domaines Virtuels et d'autres configurations avancées, voir Références.

Installation

Pour installer postfix, exécutez la commande suivante :

sudo apt-get install postfix

Appuyez simplement sur la touche « entrée » lorsque le processus d'installation pose des questions, la configuration se fera plus en détail dans la prochaine étape.

Configuration de base

Pour configurer postfix, exécutez la commande suivante :

sudo dpkg-reconfigure postfix

L'interface utilisateur va s'afficher. Sur chaque écran, sélectionnez les valeurs suivantes :

  • Site Web

  • courriel.exemple.fr

  • steve

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

  • Non

  • 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.0.0/24

  • 0

  • +

  • tous

Replace mail.example.com with the domain for which you'll accept email, 192.168.0.0/24 with the actual network and class range of your mail server, and steve with the appropriate username.

C'est maintenant le bon moment pour choisir le format de boite courriel que vous souhaitez utiliser. Par défaut, Postfix utilisera le format mbox. Plutôt que d'éditer directement le fichier de configuration, vous pouvez utiliser la commande postconf pour configurer tous les paramètres de postfix. Les paramètres de configuration seront conservés dans le fichier /etc/postfix/main.cf. Plus tard, si vous souhaitez reconfigurer un paramètre en particulier, vous pourrez soit réutiliser cette commande, soit éditer manuellement ce fichier.

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

sudo postconf -e 'home_mailbox = Maildir/'

Cela placera les nouveaux courriels dans /home/nom_utilisateur/Maildir, vous aurez donc besoin de configurer votre agent de distribution du courrier (MDA) de façon à utiliser le même chemin.

Authentification SMTP

SMTP-AUTH permet à un client de s'identifier par un méchanisme d'authentification (SASL). Transport Layer Security (TLS) devrait être utilisée afin de chiffrer le processus d'authentification. Une fois authentifié, le serveur SMTP autorisera le client à relayer les courriels.

  1. configurez Postfix pour SMTP-AUTH en utilisant SASL (Dovecot SASL):

    sudo postconf -e 'smtpd_sasl_type = dovecot'
    sudo postconf -e 'smtpd_sasl_path = private/auth'
    sudo postconf -e 'smtpd_sasl_local_domain ='
    sudo postconf -e 'smtpd_sasl_security_options = noanonymous'
    sudo postconf -e 'broken_sasl_auth_clients = yes'
    sudo postconf -e 'smtpd_sasl_auth_enable = yes'
    sudo postconf -e 'smtpd_recipient_restrictions = \
    permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
    

    Le chemin smtpd_sasl_path est un chemin relatif au répertoire de la file d'attente (queue) de Postfix.

  2. Ensuite, générez ou obtenez un certificat numérique pour TLS. Voir Certificats pour plus de détails. Cet exemple utilise également une autorité de certification (CA). Pour plus d'informations sur la génération d'un certificat, voir Autorité de certification.

    MUAs connecting to your mail server via TLS will need to recognize the certificate used for TLS. This can either be done using a certificate from a commercial CA or with a self-signed certificate that users manually install/accept. For MTA to MTA TLS certficates are never validated without advance agreement from the affected organizations. For MTA to MTA TLS, unless local policy requires it, there is no reason not to use a self-signed certificate. Refer to Création d'un certificat auto-signé (Self-Signed Certificate ou SSC) for more details.

  3. Une fois que vous avez un certificat, configurez Postfix pour fournir l'encryptage à l'aide du protocole TLS des e-mails entrants et sortants :

    sudo postconf -e 'smtp_tls_security_level = may'
    sudo postconf -e 'smtpd_tls_security_level = may'
    sudo postconf -e 'smtp_tls_note_starttls_offer = yes'
    sudo postconf -e 'smtpd_tls_key_file = /etc/ssl/private/server.key'
    sudo postconf -e 'smtpd_tls_cert_file = /etc/ssl/certs/server.crt'
    sudo postconf -e 'smtpd_tls_loglevel = 1'
    sudo postconf -e 'smtpd_tls_received_header = yes'
    sudo postconf -e 'myhostname = mail.example.com'
    
  4. Si vous utilisez votre propre autorité de certification, saisissez ce qui suit pour signer le certificat :

    sudo postconf -e 'smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem'
    

    De nouveau, pour plus de détails sur les certificats, consultez Certificats.

Après avoir exécuté toutes les commandes, Postfix est configuré pour SMTP-AUTH et un certificat autosigné a été créé pour le cryptage TLS.

Maintenant, le fichier /etc/postfix/main.cf devrait ressembler à ceci :

# See /usr/share/postfix/main.cf.dist for a commented, more complete
# version

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

myhostname = server1.example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = server1.example.com, localhost.example.com, localhost
relayhost =
mynetworks = 127.0.0.0/8
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
smtpd_sasl_local_domain =
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions =
permit_sasl_authenticated,permit_mynetworks,reject _unauth_destination
smtpd_tls_auth_only = no
smtp_tls_security_level = may
smtpd_tls_security_level = may
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/ssl/private/smtpd.key
smtpd_tls_cert_file = /etc/ssl/certs/smtpd.crt
smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom

La configuration initiale de Postfix est terminée. Tapez la commande suivante pour redémarrer le démon Postfix :

sudo service postfix restart

Postfix prend en charge le protocole SMTP-AUTH tel que défini dans la RFC2554. Il est basé sur SASL. Toutefois, il est encore nécessaire de mettre en place l'authentification SASL avant de pouvoir utiliser SMTP-AUTH.

Configuration de SASL

Postfix prend en charge deux implémentations SASL : Cyrus SASL et Dovecot SASL. Afin d'activer l'implémentation Dovecot SASL, le paquet dovecot-common aura besoin d'être installé. Dans un terminal, saisissez :

sudo apt-get install dovecot-common

Ensuite, vous devrez modifier /etc/dovecot/conf.d/10-master.conf. Changez ce qui suit :

service auth {
  # auth_socket_path points to this userdb socket by default. It's typically
  # used by dovecot-lda, doveadm, possibly imap process, etc. Its default
  # permissions make it readable only by root, but you may need to relax these
  # permissions. Users that have access to this socket are able to get a list
  # of all usernames and get results of everyone's userdb lookups.
  unix_listener auth-userdb {
    #mode = 0600
    #user = 
    #group = 
  }

  # Postfix smtp-auth
  unix_listener /var/spool/postfix/private/auth {
    mode = 0660
    user = postfix
    group = postfix
  }

Afin de permettre aux clients Outlook d'utiliser le protocole SMTP-AUTH, dans la section authentication mechanisms de /etc/dovecot/conf.d/10-auth.conf, changez cette ligne :

auth_mechanisms = plain

En ceci :

auth_mechanisms = plain login

Une fois que vous avez configuré Dovecot, faites le redémarrer avec :

sudo service dovecot restart

Mail-Stack Delivery

Another option for configuring Postfix for SMTP-AUTH is using the mail-stack-delivery package (previously packaged as dovecot-postfix). This package will install Dovecot and configure Postfix to use it for both SASL authentication and as a Mail Delivery Agent (MDA). The package also configures Dovecot for IMAP, IMAPS, POP3, and POP3S.

You may or may not want to run IMAP, IMAPS, POP3, or POP3S on your mail server. For example, if you are configuring your server to be a mail gateway, spam/virus filter, etc. If this is the case it may be easier to use the above commands to configure Postfix for SMTP-AUTH.

Pour installer le paquet, saisissez dans un terminal :

sudo apt-get install mail-stack-delivery

Votre serveur de courriel devrait être opérationnel, mais vous voudrez sans doute configurer certaines options. Par exemple, le paquet utilise le certificat et la clé du paquet ssl-cert, mais dans un environnement de production, vous devriez utiliser un certificat et une clef créée pour l'hôte. Consultez Certificats pour de plus amples informations.

Changez les options suivantes dans /etc/postfix/main.cf une fois que vous avez personnalisé un certificat et une clé pour l'hôte :

smtpd_tls_cert_file = /etc/ssl/certs/ssl-mail.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-mail.key

Redémarrez ensuite Postfix :

sudo service postfix restart

Tests

La configuration de SMTP-AUTH est terminée. Il est maintenant temps de tester la configuration.

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

telnet mail.example.com 25

Après avoir établi la connexion au serveur Postfix, tapez :

ehlo mail.example.com

Si vous voyez, entre autres, les lignes suivantes, alors tout fonctionne parfaitement. Tapez quit pour sortir.

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

Dépannage

Cette section introduit les méthodes de base pour déterminer les causes d'un éventuel problème.

Échappement du chroot

Le paquet postfix d'Ubuntu s'installera par défaut dans un environnement chroot par mesure de sécurité. Ceci peut accroître la complexité de la résolution de problèmes.

Pour désactiver l'opération chroot essayez de trouver la ligne suivante dans le fichier de configuration /etc/postfix/master.cf :

smtp inet n - - - - smtpd

et la modifier ainsi :

smtp inet n - n - - smtpd

Vous devrez ensuite redémarrer Postfix pour utiliser la nouvelle configuration. A parti d'un terminal, saisissez :

sudo service postfix restart

Smtps

Si vous avez besoin de smtps, modifiez /etc/postfix/master.cf et décommentez la ligne suivante :

smtps     inet  n       -       -       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING
	  

Fichiers journaux

Postfix inscrit tous les messages de journalisation dans /var/log/mail.log. Cependant, les erreurs et les alertes peuvent quelquefois disparaître dans les messages normaux, ils sont donc également inscrits dans /var/log/mail.err et /var/log/mail.warn respectivement.

Pour voir en temps réel les messages inscrits dans les journaux, vous pouvez utiliser la commande tail -f :

tail -f /var/log/mail.err

La quantité de renseignements enregistrés dans les journaux peut être augmenté. Voici quelques options de configuration afin d'augmenter le niveau de journalisation pour certains des domaines visés ci-dessus.

  • Afin d'accroître l'activité de log de TLS, configurez l'option smtpd_tls_loglevel sur une valeur entre 1 et 4.

    sudo postconf -e 'smtpd_tls_loglevel = 4'
    
  • Si vous avez des problèmes d'envoi ou de réception de courriers électroniques en provenance d'un domaine spécifique vous pouvez ajouter ce domaine à la directive debug_peer_list.

    sudo postconf -e 'debug_peer_list = problem.domain'
    
  • Vous pouvez accroître la verbosité de n'importe quel démon Postfix en modifiant /etc/postfix/master.cf et en ajoutant -v après l'entrée. Par exemple, modifiez l'entrée smtp :

    smtp unix - - - - - smtp -v
    

It is important to note that after making one of the logging changes above the Postfix process will need to be reloaded in order to recognize the new configuration: sudo service postfix reload

  • Pour augmenter la quantité d'informations journalisées lors du dépannage de problèmes avec SASL, vous pouvez définir les options suivantes dans /etc/dovecot/conf.d/10-logging.conf

    auth_debug=yes
    auth_debug_passwords=yes
    

Tout comme Postfix, si vous modifiez une configuration Dovecot, le processus devra être rechargé : sudo service dovecot reload.

Certaines options ci-dessous peuvent dramatiquement augmenter la quantité d'informations inscrites dans les fichiers journaux. Pensez à ramener le niveau de journalisation à la normale une fois que vous aurez détecté et corrigé le problème. Ensuite redémarrez le démon afin que la nouvelle configuration soit prise en compte.

Références

Administrer un serveur Postfix peut être une tâche très complexe. À un certain moment, vous devrez peut-être vous tourner vers la communauté Ubuntu pour être aidé par des utilisateurs plus expérimentés.

Un endroit génial pour demander de l'assistance pour Postfix et s'impliquer dans la communauté Ubuntu Server, est le canal IRC (anglophone) #ubuntu-server sur freenode. Vous pouvez aussi poster un message sur les forums Ubuntu francophones.

Pour des informations plus complètes sur Postfix, les développeurs Ubuntu recommandent vivement :The Book of Postfix.

Enfin, le site web Postfix possède également une grande documentation sur toutes les différentes options de configuration disponibles.

De plus, la page du wiki Ubuntu sur Postfix (en anglais) contient plus d'informations.