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.
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 !
- Le grand classique de mise à jour du Raspberry
apt-get update && apt-get upgrade -y
- 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.
- 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.
- 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.
- Installer le package bind9-host
apt-get install bind9-host
- 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.
- Changer le fichier /etc/hosts
127.0.0.1 <nom de votre domaine>
- Changer le fichier/etc/hostname
<nom de votre domaine>
- Redémarrer le Raspberry Pi
reboot
- Installer postfix
apt-get install postfix
Lors de l’installation vous choissez « Internet Site » dans l’écran de configuration. Puis votre nom de domaine.
- Pour faire nos tests, il faut
- Les outils de mail en ligne de commande qui sont déjà installés. Au cas où :
apt-get install mailutils
- 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
- Les outils de mail en ligne de commande qui sont déjà installés. Au cas où :
- 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 !) :
- 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 :
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.
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 :
- 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 ».
- Utiliser le SMTP de Postfix mais avec des exceptions pour certaines adresses mails afin que vos mails ne partent pas en spams.
- Utiliser le SMTP de votre FAI (ou ISP pour nos amis anglophones). Si vous changer de fournisseur, il vous faudra mettre à jour votre configuration
- 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.
- 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.
- Recharger la configuration du service
service postfix reload
- Reste à tester
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 !
- 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
- 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
- Reste à redémarrer Dovecot et Postfix
service dovecot restart service postfix restart
- Vous devriez maintenant pouvoir envoyer où vous voulez et à qui vous voulez.
Au cas où voici mes configurations Thunderbird et Postfix
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