Table des matières
Architecture de mail
Le serveur 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
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 : 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 : 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.
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
:
- /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 :
- /etc/postfix/conf.d/50-restrictions.conf:
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 :
- /etc/default/postgrey
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
- /etc/postgrey/whitelist_clients
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
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
- /etc/postfix/dkim/keytable
mail._domainkey.chapril.org chapril.org:mail:/etc/postfix/dkim/mail.private
- /etc/postfix/dkim/signingtable
chapril.org mail._domainkey.chapril.org
et
- /etc/postfix/dkim/TrustedHosts
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.