Petit rappel, il existe plusieurs outils chargés de gérer la messagerie. Pour reçevoir un message, il faut faire appel à un client de messagerie, comme Thunderbird ou l'excellent Kmail, que l'on nommera MUA. Ce client est installé sur votre machine cliente[1]. Ce MUA va demander à notre serveur de lui délivrer des messages.

L'agent chargé de réaliser cette opération, le MDA, est le logiciel qui va stocker les messages et les montrer à la demande au MUA. Nous utiliserons pour notre part cyrus-imap, que nous traiterons dans un prochain billet.

Le MDA est, lui, disposé à reçevoir des messages mais il lui faut les reçevoir d'un agent chargé de les transférer. C'est le rôle du MTA, et c'est là qu'intervient postfix.

C'est clair ? Sinon, n'hésitez pas à consulter wikipedia.

Installation

Elle se fait simplement par :

#apt-get install postfix postfix-doc postfix-pcre mutt

Lors de la configuration de postfix, indiquez à debconf que vous utilisez un smarthost. Ainsi, vous pourrez paramétrer l'adresse du serveur SMTP de votre FAI [2].

Configuration

Nous allons ensuite pouvoir modifier en profondeur la configuration de postfix, afin d'améliorer la gestion des messages. Je ne vous parle ici que des paramètres essentiels à modifier finement, les autres sont dans la documentation....

  • mydestination = $myhostname, localhost, localhost.$mydomain, $mydomain, mail.$mydomain.
    Ce paramètre indique les domaines pour lesquels vous reçevez les messages. Il est important de tous les indiquer, pour éviter les erreurs.
  • relayhost = smtp.free.fr
    C'est le fameux smarthost défini plus haut.
  • sender_canonical_maps = hash:/etc/postfix/canonical
    Ce fichier indique la liste des correspondances entre utilisateurs locaux et adresses courriel de l'expéditeur des messages. Il est au format test test@test.com avec une adresse par ligne.
  • smtpd_client_restrictions = permit_mynetworks,
    reject_unknown_client,

    Cela empêche les clients qui ne sont pas sur votre réseau local d'envoyer des mails avec votre serveur [3].
  • smtpd_helo_required = yes
  • smtpd_helo_restrictions = reject_invalid_hostname,
    Ceux-ci empêchent l'envoi par un serveur qui se ferait passer pour un autre.
  • smtpd_sender_restrictions = permit_mynetworks,
    reject_unknown_sender_domain,
    reject_unauth_pipelining,
    hash:/etc/postfix/access,

    Cela permet de restreindre les défauts du champ expéditeur du message. Le fichier access permet de limiter beaucoup les spammers... Je l'ai récupéré sur Securitysage.
  • smtpd_recipient_restrictions = permit_mynetworks,
    reject_unauth_destination,
    reject_unauth_pipelining,
    check_sender_access hash:/etc/postfix/maps/access_usernames,
    check_recipient_access hash:/etc/postfix/maps/access_usernames,
    check_helo_access hash:/etc/postfix/maps/helo_checks,
    check_client_access hash:/etc/postfix/maps/client_checks,
    reject_rhsbl_client blackhole.securitysage.com,
    reject_rhsbl_sender blackhole.securitysage.com,
    reject_rhsbl_sender rhsbl.sorbs.net,
    reject_rhsbl_sender dsn.rfc-ignorant.org,
    reject_rbl_client sbl-xbl.spamhaus.org,
    permit

    Ouf ! Tout ça permet de réduire le spam, via des limitations soit en fichier (il faut les créer dans un répertoire maps), soit en ligne. Le tout est trouvé (avec des exemples de fichiers maps) sur la très bonne doc de securitysage.
  • header_checks = regexp:/etc/postfix/maps/header_checks
  • mime_header_checks = regexp:/etc/postfix/maps/mime_header_checks.regexp
  • body_checks = regexp:/etc/postfix/maps/body_checks
    Ces derniers sont des contrôles [4] qui jouent sur le corps du message (en-têtes et corps).

Seuls les trois premiers paramètres sont indispensables pour envoyer des mails ! Le reste n'est qu'un ensemble de protections pour votre serveur. N'oubliez pas, dans ces différentes étapes de tester chaque nouvelle configuration, en relançant postfix puis en testant (avec mutt) que tous vous messages parviennent à destination.

Dans le fichier de configuration de postfix tel que vous le trouverez, il y aura probablement plein d'autres options. Ne modifiez rien de celles qui sont décommentées, ce sont elles qui sont prises en compte par postfix et certaines sont indispensables. Par ailleurs, il faut indenter ce qui est un paramètre de la commande (après le signe =) pour que postfix le comprenne. Cela donne :

smtpd_client_restrictions = permit_mynetworks,
                                     reject_unknown_client,

C'est en plus beaucoup plus lisible !

Une fois tous ces paramètres saisis, vous avez normalement un postfix configuré, qui délivre ses messages en local et permet d'en envoyer à l'extérieur. On a déjà bien travaillé ce soir, la suite au prochain épisode...


Liste des épisodes

  1. Episode I : Installation
  2. Episode II : Fignolages
  3. Episode III : Infrastructure
  4. Episode IV : Postfix
  1. Annexe I : Mots de Passe

Notes

[1] votre PC, ou votre mac, ou votre atari, etc.

[2] Par exemple smtp.free.fr

[3] C'est l'anti open relay.

[4] encore des fichiers issus de Securitysage