<!-- title: Installation d'un serveur de courrier -->
<!-- category: Hébergement -->

Je vais détailler l'installation d'un serveur
[Postfix](http://fr.wikipedia.org/wiki/Postfix) /
[Dovecot](http://fr.wikipedia.org/wiki/Dovecot) sous Debian. <!-- more -->Le serveur
[SMTP](http://fr.wikipedia.org/wiki/SMTP) installé par défaut est
[Exim](http://fr.wikipedia.org/wiki/Exim) mais je l'ai remplacé par Postfix que
je connais un peu (rien de personnel contre Exim qui fait sûrement très bien
son travail). Je veux gérer mon courrier depuis Thunderbird et utiliser le
protocole [IMAP](http://fr.wikipedia.org/wiki/IMAP) pour laisser les messages
sur le serveur. D'abord on installe avec apt-get qui s'occupera de la
désinstallation d'Exim.

    apt-get install postfix dovecot

Mon gros souci est bien sûr la sécurité : se faire pirater son courrier n'est
pas une pensée agréable mais envisager qu'on utilise son serveur de courrier
pour spammer l'est encore moins. Il faut donc envisager une authentification
SMTP, des mots de passe robustes et un cryptage des données SSL. On peut
générer soi-même son certificat mais on aura des soucis avec les applications
clientes car il ne sera pas authentifiée par une autorité reconnue. La plupart
de ces autorités font payer ce service. Un compromis que j'ai jugé acceptable
consiste à requérir les services de [CAcert](http://www.cacert.org) qui permet
de signer des clefs que vous aurez générées, sous réserve de prouver que
vous êtes détenteur du domaine (rien de méchant il suffit de confirmer un
courrier sur une adresse de ce domaine).

Quand on reçoit le certificat on l'installe sous etc/ssl/certs/dovecot.pem et
on installe la clef privée sous etc/ssl/private/dovecot.pem. Il faut ensuite
adapter la configuration de Dovecot sous /etc/dovecot/dovecot.conf :

    ssl_disable = no
    ssl_cert_file = /etc/ssl/certs/dovecot.pem
    ssl_key_file = /etc/ssl/private/dovecot.pem
    disable_plaintext_auth = yes

    auth default {
      mechanisms = cram-md5

      socket listen {
          client {
              # Assuming the default Postfix $queue_directory setting
              path = /var/spool/postfix/private/auth
              mode = 0660
              # Assuming the default Postfix user and group
              user = postfix
              group = postfix
          }
      }
      passdb passwd-file {
        args = /etc/dovecot/cram-md5.pwd
      }
    }

L'authentification CRAM-MD5 peut-être préférée à LOGIN, elle permet de
gérer les comptes indépendamment des comptes UNIX. Sa configuration est
détaillée  [ici](http://wiki.dovecot.org/HowTo/CRAM-MD5?action=show&redirect
=CRAM-MD5).

Pour Postfix on se simplifie grandement la vie en s'appuyant sur Dovecot pour
l'autentification. Voici les paramètres clés de /etc/postfix/main.cf :

    smtpd_tls_cert_file=/etc/sl/certs/dovecot.pem
    smtpd_tls_key_file=/etc/ssl/private/dovecot.pem
    smtpd_use_tls=yes
    myhostname = "le nom DNS de mon serveur"
    relayhost = "le serveur SMTP de mon fournisseur"
    mynetworks = 192.0.0.0/8, 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
    smtpd_sasl_type = dovecot
    smtpd_sasl_auth_enable = yes
    smtpd_recipient_restrictions = permit_sasl_authenticated, reject_unauth_destination

Il ne faut pas oublier de mettre en place les règles NAT pour ouvrir le port 25
et 143 vers l'extérieur et de redémarrer les services :

    /etc/init.d/dovecot restart
    /etc/init.d/postfix restart
