====== Serveur Mail Communautaire ====== ==== 1. Principes et inspirations ==== [[https://www.eff.org/deeplinks/2014/04/warrant-canary-faq|{{ :ateliers:serveurmail:riseup.png?linkonly |}}]] === Objectifs === L’idée est de créer un serveur (GNU/Linux) militant commun, permettant d’héberger des mails. À l'heure actuelle, on peut déjà recevoir et envoyer des mails, avec des adresses type mon_nom@anarcha.pink Cette documentation est mise à disposition pour permettre, à toute personne souhaitant rejoindre le groupe, de comprendre les étapes et de voir où nous en sommes. === Ateliers === Les ateliers ont lieu un dimanche sur deux (en gros) au Reset. Toutes les personnes sont les bienvenues, sous reserve d'avoir lu -a minima- le wiki du projet (cette page), et de ~correspondre aux prérequis. On essaie vraiment de garder ces prérequis au plus bas. * savoir utiliser la ligne de commande, c'est-à-dire une interface en mode texte. Donc il faut ouvrir un terminal (modalités différentes en fonction du système d'exploitation) * savoir avoir et utiliser SSH (présent par défaut sur les machines GNU/Linux, Mac; sur les Windows il faut avoir recours à PuTTY) * avoir un compte sur la machine (à demander lors des ateliers) == Cible actuelle == {{ :ateliers:serveurmail:flux_mail2.png?600 |}} Repo : https://raw.githubusercontent.com/rhaamo/draw.io/master/flux%20mail2.png == Méthode d'installation et d'administration collaboratives == Il y a un fichier [[https://en.wikipedia.org/wiki/Changelog|Changelog]] présent dans le répertoire /home de chaque personne sur le serveur. Il faut le maintenir à jour pour savoir qui a fait quoi et quand, cela permet de garder une trace du travail effectué. Le logiciel [[https://labs.riseup.net/code/projects/metche|metche]] tourne sur le serveur afin d'envoyer à root toutes les modifications effectuées, les mises à jours logicielles disponibles, etc. L'alias ''root'' est défini dans ''/etc/aliases'' et sert à contacter les admin du serveur. Lors des ateliers nous utilisons [[https://tmux.github.io/|tmux]], un multiplexeur de terminal, afin de permettre à plusieurs personnes d'utiliser le même terminal en lecture/écriture pour que tout⋅e⋅s voient les actions sur le serveur et puissent, à tour de rôle, envoyer au serveur des commandes. Après s'être connecté⋅e par ssh, pour créer une session tmux ([[https://robots.thoughtbot.com/a-tmux-crash-course|voir tutoriel]]) : $ tmux new -s session_name $ tmux -S /tmp/sessions.tmux new pour se connecter à une session en cours $ tmux -S /tmp/sessions.tmux attach-session Attention, toutes les actions effectuées apparaîtront comme étant celles de la personne ayant démarré la session partagée. Voir aussi [[adminsys]] ==== 2. Logiciels utilisés ==== == Envoi/Réception des mails == [[https://tools.ietf.org/html/rfc5321|SMTP]] (Simple Mail Transfer Protocol) est le protocole qui permet d'envoyer des mails. Dans notre cas, nous utilisons [[opensmtpd]]. == Gestion des boites mails == [[https://tools.ietf.org/html/rfc3501|IMAP]] (pour gérer les boites mails) Dans notre cas nous utilisons le logiciel [[dovecot]] == Chiffrement == On utilise le protocole de chiffrement TLS (Transport Layer Security) dans les versions 1.1 et 1.2 Pour cela, nous utilisons [[letsencrypt]] == Antispam == On utilise [[rspamd]] pour faire de l'antispam.[[https://www.rspamd.com/|Site officiel]] == Anti-antispam == On utilise le protocole [[https://en.wikipedia.org/wiki/DomainKeys_Identified_Mail|DKIM]] pour prouver qu'on est légitime à envoyer un email, on contrôle la zone DNS et la clé privée associée. On utilise [[dkimproxy]] pour cela. == Authentification == Nous n'avons peur de rien et, pour gérer les autorisations et droits d'accès, nous utiliseront un annuaire [[ldap]], Cet annuaire sera utilisé par nsswitch et [[pam|libpam-ldapd]] pour interroger le répertoire (et garder en cache les credentials afin d'éviter une surcharge du serveur). ==== 3. Ressources ==== * [[http://bortzmeyer.org/|Blog de Stéphane Bortzmeyer sur le DNS]] * [[http://www.iletaitunefoisinternet.fr/dns-bortzmeyer/|Conférence de Stéphane Bortzmeyer sur le DNS]] * [[http://www.iletaitunefoisinternet.fr/lemail-par-benjamin-sonntag/index.html|Conférence de Benjamin Sonntag sur le fonctionnement du mail]] * [[https://www.youtube.com/watch?v=nHNXice-A3U|What Happens to an Email After You Click "Send"?]] * [[https://en.wikibooks.org/wiki/UNIX_Computing_Security/Access_authorization|Fonctionnement des permissions dans les systèmes UNIX]] * [[https://riseup.net/en/about-us|pourquoi Riseup]] Vous pouvez tenter de retrouver des infos [[https://mensuel.framapad.org/p/reset-mail|sur le pad]]. === Ressources pour LDAP === * [[https://hynek.me/articles/ldap-a-gentle-introduction/|Une introduction à LDAP]][EN] * [[http://articles.mongueurs.net/magazines/linuxmag65.html|Une introduction à OpenLDAP]] * [[https://www.digitalocean.com/community/tutorials/how-to-configure-openldap-and-perform-administrative-ldap-tasks|Configuration et Administration OpenLDAP]] * [[http://www.zytrax.com/books/ldap/|Le site zytrax qui documente toutes les commandes LDAP]] * [[https://wiki1.dovecot.org/HowTo/DovecotOpenLdap| Dovecot + LDAP]] * [[http://articles.mongueurs.net/magazines/linuxmag67.html| Howto LDAP Unix]] ==== 4. Les ingrédients ==== * un nom de domaine (nécessite de demander à un registrar genre [[https://gandi.net|Gandi]]), la configuration DNS est [[dns|ici]]. * un hébergement. Pour le moment, une machine virtuelle chez Gandi a été choisie, cela permet de travailler rapidement. Une Debian stable (Jessie) est installée par défaut.