Vous trouverez ci-dessous une brève description pour installer un serveur de messagerie Postfix obtenant le score maximum dans les trois domaines du rapport: Envoi Confidentiel, Hameçonnage et Usurpation d'Identité et Intégrité des Messages. Ce guide a été testé sur une machine virtuelle équipée de Ubuntu 24.04 LTS.
Le moyen le plus simple d'avoir DNSSEC est d'utiliser un fournisseur de service supportant DNSSEC. Une autre alternative, que nous explorerons dans les futurs guides, est d'installer son propre service DNS avec le support DNSSEC. Un nom de domaine doit avoir un enregistrement MX ainsi qu'un enregistrement A. Ce dernier assure la correspondance entre le nom de domaine et l'adresse IP correspondante. Dans le cas du service DNS que nous souhaitons mettre en place (local ou fourni par un tiers), nous créerons un enregistrement MX (au moins un) pour le domaine model.dcslab.eu : 5 mx.model.dcslab.eu. La première valeur correspond à la priorité et la seconde au nom d'hôte du MTA. Pour chaque enregistrement MX créé, nous allons créer un enregistrement A associant le nom d'hôte MX à son adresse IP, par exemple:
mx.model.dcslab.eu. IN A 139.191.36.5
General type of mail configuration? | Internet Site |
System mail name | model.dcslab.eu |
root and postmaster mail recipients | model (root user) |
destinations to accept mail for (mydestinations) | model.dcslab.eu |
force synchronous updates on mail | yes |
local networks (mynetworks) | 192.168.1.0/24 127.0.0.1 |
Mailbox Size limit (bytes) | 0 (means no limit) |
Local address extension character | (no address extensions) |
Internet Protocols to use | IPv4 |
Nous créons des alias afin de recevoir les rapports DMARC.
Pour installer StartTLS correctement dans notre installation de Postfix, nous avons besoin d'un certificat signé par une autorité de certification (CA) reconnue, et de configurer un ensemble de paramètres dans le serveur Postfix. La première étape est d'obtenir un certificat signé par une autorité valide. Dans cet exemple, nous utilisons Let's Encrypt comme autorité de certification émettant un certificat gratuit valide. Nous utilisons le guide d'installation d'une plate-forme générique Debian .
L'application, pour demander le certificat, nécessite l'accès au port TCP 80. Si une autre application utilise ce port, elle doit être arrêtée avant de poursuivre. Une fois le certificat obtenu, nous pouvons redémarrer notre service. Lors de la demande de certificat, il est important de spécifier correctement le nom de domaine que nous voulons authentifier via le certificat. Dans notre cas, nous avons spécifié mx.model.dcslab.eu pour notre serveur de messagerie.
Pour configurer SPF, nous devons configurer un enregistrement DNS afin que les autres agents de transfert de courrier (MTA) puissent l'utiliser lors de la réception des emails de notre domaine. Afin que notre domaine puisse utiliser SPF lors de la réception d'emails, nous devons installer et configurer une application en utilisant l'outil apt-get.
Nous allons commencer par mettre en place un enregistrement DNS basique indiquant les hôtes autorisés à envoyer des emails au nom de notre domaine model.dcslab.eu
IN TXT "v=spf1 mx -all"
Ensuite nous installons et configurons le paquet postfix-policyd-spf-python:
# SPF /etc/postfix/master.cf configuration
#
policy-spf unix - n n - - spawn
user=nobody argv=/usr/bin/policyd-spf
# SPF /etc/postfix/main.cf configuration
policy-spf_time_limit = 3600s
smtpd_helo_restrictions = reject_invalid_hostname
smtpd_recipient_restrictions = permit_mynetworks,reject_unauth_destination, check_policy_service unix:private/policy-spf
DKIM nécessite quatre étapes pour être activé:
Une fois que nous avons généré les clés, nous pouvons les utiliser pour créer l'enregistrement TXT correspondant dans le DNS de notre domaine. Le sous-domaine auquel il sera attaché est <selector>._domainkey.<our_domain>.
modelSelector._domainkey IN TXT ("v=DKIM1; h=sha256; k=rsa; s=email; p=MIGf...QAB")
Après la génération des clés et de l'enregistrement TXT, nous devons configurer opendkim pour fonctionner avec postfix.
#key_name domain:selector:/path/to/private_key_file
model.dcslab.eu model.dcslab.eu:modelSelector:/etc/opendkim/private_keys/modelSelector.key
#signer_of_the_message key_name
*@model.dcslab.eu model.dcslab.eu
#list-of-hosts (ips and hostnames)
127.0.0.1
model.dcslab.eu
192.168.1.0/24
Syslog yes
SyslogSuccess yes
LogWhy yes
UMask 002
OversignHeaders From,Subject
KeyTable refile:/etc/opendkim/KeyTable
SigningTable refile:/etc/opendkim/SigningTable
ExternalIgnoreList /etc/opendkim/TrustedHosts
InternalHosts /etc/opendkim/TrustedHosts
SignatureAlgorithm rsa-sha256
AutoRestart Yes
UserID opendkim:opendkim
SOCKET="local:/var/spool/postfix/var/run/opendkim/opendkim.sock"
# OpenDKIM milter configuration
milter_default_action = accept
milter_protocol = 6
smtpd_milters = unix:/var/run/opendkim/opendkim.sock
non_smtpd_milters = $smtpd_milters
La configuration de DMARC est similaire à celle de DKIM, à l'exception de la génération des clés.
Dans le cas de DMARC, l'enregistrement TXT est attaché au sous-domaine _dmarc.<our_domain>. Un enregistrement de politique DMARC basique contient la version, la politique à suivre (accepter, rejeter, ...) et l'adresse mail à laquelle se reporter en cas de problème.
_dmarc TXT( "v=DMARC1; p=reject; rua=mailto:dmarc_reports@model.dcslab.eu")
Finalement, nous devons configurer postfix et opendmarc.
AuthservID model.dcslab.eu
Socket inet:8893@localhost
# DMARC /etc/postfix/main.cf configuration
# 8893 is default for opendmarc
smtpd_milters = unix:/var/run/opendkim/opendkim.sock, inet:127.0.0.1:8893
Postfix supporte DANE en option dans la configuration de TLS. Cette option a déjà été activée lors de la configuration de StartTLS.
smtp_tls_security_level = dane
smtp_dns_support_level = dnssec
Postfix requiert un nameserver récursif validant DNSSEC pour effectuer la validation DNSSEC. Par conséquent, soit nous installons et configurons un cache-nameserver récursif local validant DNSSEC, soit nous configurons notre système pour en utiliser un externe. Pour configurer les enregistrements TLSA, nous pouvons utiliser un outil en ligne (exemple) pour générer les valeurs correspondantes. Pour obtenir la valeur pem du certificat, nous pouvons exécuter:
-----BEGIN CERTIFICATE-----
MIIFMjCCBBqgAwIBAgISA/ZiA+nFT1Hd5emwMgI20KtdMA0GCSqGSIb3DQEBCwUA
...
Wq6bzNp36KG7fb86FW5VfJsINeIUdad/6J/gBylPPzaoonQ7vcT0VB6TI4/ic1C1
VuvF9e7YHH42YnWMoBesmOqoNWty+tzyFObvZPp7XLyQCDbS4ZY=
-----END CERTIFICATE-----
En suivant la documentation Postfix nous choisissons les paramètres suivants pour géréner les enregistrements TLSA:
Nous générons un enregistrement pour un service TCP sur le port 25
_25._tcp.mx.model.dcslab.eu TLSA 3 1 1 1cf86240705080beee6827b063e52274e545859711d4f63aca3af259210ad6ab