====== Architecture de mail ======
Le serveur [[admin:machines_virtuelles:mail|mail]] est le pivot de l'architecture mail. C'est le MX principal.
Les envois de mails vers l'Internet se font par lui, c'est donc le relais. Il reçoit également tous les domaines hébergés par chapril, dont le principal chapril.org
Pour installer un postfix satellite, c'est ici : [[admin:procedures:installation_postfix_satellite|Installation d'un postfix en satellite]]
Le serveur de mails est un postfix et le serveur de réception de courrier dovecot. On ne va pas s'étendre sur ce dernier car actuellement il n'y a pas d'email délivré à autre que root.
Enfin, sympa et l'interconnexion de sympa fait l'objet d'une documentation spécifique : [[admin:infrastructure:sympa|Interconnexion entre sympa et postfix]].
===== Architecture de postfix =====
Postfix réceptionne les mails sur le port 25. Il relaie les mails en provenance de nos réseaux ainsi que les mails soumis par une connexion authentifiée.
La configuration se fait par la compilation des fichiers de ''/etc/postfix/conf.d'' en un seul fichier ''main.cf'' contenant les options. Cette compilation se fait par l'invocation de la commande ''make'' dans le répertoire ''/etc/postfix''.
Les alias supportés par chaque domaine sont placés dans un fichier ''/etc/postfix/alias///domaine//.db'' qui est généré à partir du fichier ''//domaine//.aliases'' correspondant par la commande ''make''.
Pour remettre les courriels un certain nombre de transports ont été définis. Le transport par défaut est la remise par SMTP directe. Des transports pour la remise de courriel vers sympa (mailing-lists) ont été définis. Voir les détails ici : [[admin:infrastructure:sympa|Interconnexion entre sympa et postfix]]
Le transport slow_domains permet de limiter l'envoi du volume de mails à certains domaines, gérés par des pauvres comme laposte.net qui n'ont pas les moyens d'encaisser plus de 1 courriel à la fois.
La configuration TLS est basique: un couple clé/certificat placé dans ''/etc/ssl/'' a été créé et auto-signé. Les protocoles SSLv2 et SSLv3 ont été désactivés et l'authentification doit utiliser TLS obligatoirement.
Toute la doc qui suit a été écrite à froid, adaptée de celle de l'April, et concerne des sujets touchy. Il est évident que la peinture ne soit pas sèche et que des éléments divergent de ce qui est réellement sur le serveur.
===== Installation de Amavis =====
apt install amavisd-new spamassassin clamav-daemon pyzor razor arj bzip2 cabextract cpio file gzip nomarch pax unzip zip
Puis configuration des groupes:
addgroup clamav amavis
addgroup amavis clamav
Configuration de pyzor/razor:
su - amavis -s /bin/bash
razor-admin -create
razor-admin -register
pyzor discover
Installation des fichiers de test:
apt install clamdscan clamav-testfiles
systemctl start clamav-daemon.service
systemctl restart clamav-freshclam.service
clamdscan /usr/share/clamav-testfiles/clam.mail
Enfin décommenter les lignes dans ''/etc/amavis/conf.d/15-content_filter_mode'' :
@bypass_virus_checks_maps = (
\%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);
@bypass_spam_checks_maps = (
\%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);
Et redémarrer amavis :
systemctl restart amavis
===== Installation de fail2ban =====
L'idée est d'éviter les tentatives de brute force pour obtenir nos mots de passe:
apt-get install fail2ban
===== Installation de Postgrey =====
Pour un aperçu sur le greylisting : https://debian-handbook.info/browse/stable/network-services.html#sect.setting-up-greylisting
apt install postgrey
Après ça postgrey tourne et écoute sur le 10023. Il faut ajouter une restriction au niveau de posftix :
smtpd_recipient_restrictions =
[...]
check_policy_service inet:127.0.0.1:10023,
Et nous allons baisser fortement le délais de greylisting, le temps d'avoir en base une liste convenable de serveurs autorisés :
POSTGREY_OPTS="--inet=10023 --delay=60"
Nous allons aussi ajouter une liste de gros comptes en whitelist car les messages venant d'eux peuvent « rebondir » depuis de nombreux serveurs d'un même pool avant de nous parvenir tel qu'on les attend
yahoo.com
google.com
hotmail.com
live.fr
outlook.com
mail-out.ovh.net
mxb.ovh.net
gandi.net
Et on redémarre le tout :
systemctl restart postgrey
postfix reload
===== Déploiement de DKIM sur postfix =====
Pour le déploiement, ont été faites les choses suivantes.
Installation de opendkim:
apt-get install opendkim
Édition de ''/etc/opendkim.conf'' et ajout en fin :
KeyTable /etc/postfix/dkim/keytable
SigningTable /etc/postfix/dkim/signingtable
ExternalIgnoreList /etc/postfix/dkim/TrustedHosts
Puis édition de ''/etc/defaults/opendkim'' pour décommenter:
SOCKET="inet:12301@localhost" # listen on loopback on port 12301
Malheureusement opendkim est pour le moment mal intégré à systemd. La conf de /etc/defaults/opendkim est silentieusement ignorée par ce dernier. Il faut éditer /lib/systemd/system/opendkim.service pour changer les préférences et ne surtout pas utiliser /etc/init.d pour manipuler le démon.
Puis, pour générer les clefs:
opendkim-genkey -D /etc/postfix/dkim/ -d chapril.org -s mail
On va alors obtenir de fichiers dans ''/etc/postfix/dkim/'' : ''mail.private'' et ''mail.txt''. On copie ce dernier dans la zone concernée.
Par ailleurs on définie les tables
mail._domainkey.chapril.org chapril.org:mail:/etc/postfix/dkim/mail.private
chapril.org mail._domainkey.chapril.org
et
127.0.0.1
localhost
192.168.0.0/24
[::ffff:127.0.0.0]/104
[::1]/128
[2a01:4f8:10b:c41::]/64
[2a01:4f8:10b:c42::]/64
88.191.250.11
# 88.191.250.11 est galanga
On pense à changer les permissions :
chgrp opendkim /etc/postfix/dkim/*
chmod g+r /etc/postfix/dkim/*
Enfin, dans Postfix on ajoute dans ''/etc/postfix/conf.d/60-anti-spam.conf'':
milter_default_action = accept
milter_protocol = 2
smtpd_milters = inet:localhost:12301
non_smtpd_milters = inet:localhost:12301
Puis ''make'' dans ''/etc/postfix'' et:
service postfix reload
===== Adresse no-reply =====
Une adresse devnull@chapril.org existe pour les besoins d'un no-reply.