Le Raspberry Pi pour auto héberger son serveur d’email


Achtung : Dieser Artikel wurde automatisch von Google Translate übersetzt


Notre série de tutoriels continue avec une nouvelle étape dans notre indépendance : notre propre serveur d’email hébergé à la maison.

Raspberry Pi Home Server : auto héberger son serveur d'email

Alors je dois reconnaitre que le tutoriel qui va suivre n’a rien à voir avec celui prévu. Je voulais installer et configurer Citadel qui est un peu le couteau suisse du serveur mail. Malheureusement, une fois installé la configuration s’avère galère (pour moi) et pas beaucoup d’aide sur Internet. Ca sera donc pour plus tard.

Bref j’en suis revenu aux origines, avec un bon vieux serveur postfix !

  1. Le grand classique de mise à jour du Raspberry
    apt-get update && apt-get upgrade -y
  2. Autres petites choses qui ont leur importance : les ouvertures de port. Assurez vous que depuis l’extérieur, les ports TCP 25, 143, 993, 110 et 995 sont bien accessibles. Ici je ne vais pas vous aider car ça va dépendre de votre box ou de la configuration de votre FAI.
  3. Pour aller plus loin il vous faut un nom de domaine. Je vous conseille de passer par noip.com avec le tutoriel ici. Ca vous permet d’avoir un nom de domaine et une ip « fixe » grâce au client qui sera installé sur votre machine.
  4. Dans l’interface de configuration de noip pour votre domaine, allez tout en bas dans la zone MX et y ajoutez la valeur <nom de votre domaine>. Ca permet de rediriger les requêtes concernant la gestion des emails vers votre machine.
  5. Installer le package bind9-host
     apt-get install bind9-host
  6. Tester que la redirection va bien fonctionner
     host -t MX <nom de votre domaine>
    
     <nom de votre domaine> mail is handled by 10 <nom de votre domaine>.

    Ca c’est une bonne nouvelle. Sans ça, aucune chance de faire fonctionner notre serveur.

  7. Changer le fichier /etc/hosts
    127.0.0.1      <nom de votre domaine>
  8. Changer le fichier/etc/hostname
    <nom de votre domaine>
  9. Redémarrer le Raspberry Pi
    reboot
  10. Installer postfix
    apt-get install postfix

    Lors de l’installation vous choissez « Internet Site » dans l’écran de configuration. Puis votre nom de domaine.

  11. Pour faire nos tests, il faut
    1. Les outils de mail en ligne de commande qui sont déjà installés. Au cas où :
      apt-get install mailutils
    2. Un utilisateur de test. Chez moi j’ai root pour les installations et un utilisateur pi pour les tests. Si besoin vous pouvez en créer un autre.adduser pi
  12. Vous pouvez à partir de l’utilisateur root, envoyer un mail à l’utilisateur pi
    echo "Je parle bla bla bla" | mail -s "Sujet du mail : bla bla" pi@<votre domaine>.no-ip.org

    Vous aurez le résultat en vous connectant au raspberry avec l’utilisateur pi (un seul message chez vous !) :

    Raspberry Pi Home Server : auto héberger son serveur d'email

    La commande pour visualiser les emails reçus

  13. Pour la réception, nous allons installer la gestion POP3 et IMAP
    apt-get install dovecot-pop3d dovecot-imapd

    Grâce à eux vous pouvez désormais lire (on verra après pour l’envoi) les mails qui sont reçus sur le Raspberry Pi. La configuration automatique de Thunderbird doit vous donner quelque chose comme ça :

    Raspberry Pi Home Server : auto héberger son serveur d'email

    La configuration automatique de Thunderbird doit détecter l’IMAP, le POP3 et le SMTP grâce à votre email

    Par contre, coté sécurité, ça peut râler. Chez moi le certificat avait été généré avec l’ancien nom de la machine et non pas avec le domaine créé sous noip.

    Raspberry Pi Home Server : auto héberger son serveur d'email

    Notre mail vu dans Thunderbird

Recevoir c’est fait. Prochaine étape, envoyer ! Pour cela, il faut que notre service SMTP soit accessible et qu’il puisse envoyer sur Internet. Nous avons 4 possibilités :

  1. Utiliser le SMTP de Postfix. Seul hic, il risque d’être bloqué par les différents services de mail (Yahoo, Hotmail par exemple) qui pourraient le considérer comme un spammeur car il n’est pas « connu ».
  2. Utiliser le SMTP de Postfix mais avec des exceptions pour certaines adresses mails afin que vos mails ne partent pas en spams.
  3. Utiliser le SMTP de votre FAI (ou ISP pour nos amis anglophones). Si vous changer de fournisseur, il vous faudra mettre à jour votre configuration
  4. Utiliser un SMTP tiers comme par exemple celui de gmail si vous y avez un compte.

La solution la plus simple : le SMTP de votre fournisseur.

  1. Modifier le fichier de configuration de Postfix /etc/postfix/main.cf et y modifier la ligne
    relayhost =

    avec

    relayhost = <nom du SMTP>

    Par exemple pour free c’est smtp.free.fr, Orange smtp.orange.fr, etc. Vous trouverez une liste complète (j’espère à jour) ici pour les services français.

  2. Recharger la configuration du service
    service postfix reload
  3. Reste à tester

    Raspberry Pi Home Server : auto héberger son serveur d'emailEt sur le serveur :

    Raspberry Pi Home Server : auto héberger son serveur d'email

    Le mail envoyé depuis Thunderbird vu sur le serveur d’email auto hébergé

Voilà. Si vous voulez une boite email « privée » (envois uniquement à des destinataires de votre domaine) sans intermédiaire, vous avez trouvé je l’espère votre bonheur.

Là où les choses peuvent se compliquer c’est si vous voulez envoyer des emails à des personnes en dehors de votre domaine (gmail, yahoo ou autre). Si vous ne mettez pas d’authentification sur votre serveur SMTP vous serez considéré comme un relai ouvert qui sera une proie rêvée pour les spammeurs qui vous utiliseront pour inonder nos boites. Vous serez alors repéré et blacklisté. Pas trop le but voulu je pense.

Par défaut, Postfix s’installe avec une couche TLS pour crypter les échanges et donc aussi les mots de passe. De ce coté rien à faire donc, voici ce que vous devez avoir :

# TLS parameters

smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem

smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

smtpd_use_tls=yes

smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache

smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

smtpd_tls_auth_only = yes

J’ai ajouté la ligne rouge pour s’assurer que l’authentification ne peut pas se faire sans passer par la couche TLS. Chaque client devra donc être configuré pour l’utiliser.

Nous allons ensuite mettre en place la fameuse authentification SASL. Pas besoin d’un serveur supplémentaire, Dovecot que nous avons installé pour la gestion POP3 et IMAP peut le faire donc nous n’allons pas surcharger la machine !

  1. Editer le fichier /etc/dovecot/dovecot.conf et y ajouter en fin de fichier :
    auth default {
    
     socket listen {
    
     client {
    
     path = /var/spool/postfix/private/auth
    
     group = postfix
    
     mode = 0660
    
     }
    
    }

    Nous avons maintenant le lien entre Dovecot et Postfix. Reste à le donner aussi à Postfix

  2. Modifier le fichier /etc/postfix/postfix.cf et y ajouter les lignes suivantes (pour plus de détail sur les lignes ajoutées, vous pouvez regarder ici) :
    smtpd_sasl_auth_enable = yes
    
    smtpd_sasl_type = dovecot
    
    smtpd_sasl_path = private/auth
    
    smtpd_sasl_authenticated_header = yes
    
    smtpd_client_restrictions =
    
     permit_mynetworks, permit_sasl_authenticated,
    
     sleep 1, reject_unauth_pipelining
    
    smtpd_helo_restrictions = reject_invalid_helo_hostname
    
    smtpd_sender_restrictions =
    
     reject_unlisted_sender, reject_unknown_sender_domain,
    
     permit_mynetworks, permit_sasl_authenticated,
    
     reject_non_fqdn_sender
    
    smtpd_recipient_restrictions =
    
     reject_unlisted_recipient, reject_unknown_recipient_domain,
    
     permit_mynetworks, permit_sasl_authenticated,
    
     reject_non_fqdn_recipient,
    
     reject_unauth_destination
  3. Reste à redémarrer Dovecot et Postfix
    service dovecot restart
    
    service postfix restart
  4. Vous devriez maintenant pouvoir envoyer où vous voulez et à qui vous voulez.

Au cas où voici mes configurations Thunderbird et Postfix

Raspberry Pi Home Server : auto héberger son serveur d'email

Configuration de Postfix

Raspberry Pi Home Server : auto héberger son serveur d'email

Configuration de réception IMAP sous Thunderbird

Raspberry Pi Home Server : auto héberger son serveur d'email

Configuration SMTP sous Thunderbird

Je ne suis pas le grand spécialiste Postfix alors n’hésitez pas à partager vos remarques ou expériences dans les commentaires.

Sources : Google, raspberrypi.org, Alsacreations, State-of-mind.de et surtout isalo.org qui a un super article sur le sujet

Vous aimerez aussi...