Aller au contenu principal

Postfix

Configuration du serveur

Suppression de sendmail

sudo apt remove sendmail
sudo apt purge sendmail*

Installation de Postfix

sudo apt update
sudo apt upgrade
sudo apt install libsasl2-modules postfix mailutils

Configuration de postfix

sudo nano /etc/postfix/main.cf

Détail du fichier de configuration

A modifier

myhostname = domain.com
myorigin = localhost
mydestination = localhost.$mydomain, localhost, localhost.localdomain

A ajouter

smtputf8_enable = no

Création des alias

sudo nano /etc/aliases

On ajoute une ligne de correspondance entre les utilisateurs du système et l'adresse mail que l'on veut qu'ils utilisent Ex :

sudo newaliases

Application de la configuration

sudo systemctl restart postfix

Réécriture des adresses d'expédition (entête FROM)

On ajoute une entrée dans le fichier /etc/postfix/main.cf

sudo nano /etc/postfix/main.cf

On ajoute :

smtp_generic_maps = hash:/etc/postfix/generic

Ensuite on créé le fichier

sudo nano /etc/postfix/generic

Puis on ajoute les associations voulu

On exécute postmap pour prendre en compte nos modifications et on redémarre postfix

sudo postmap /etc/postfix/generic
sudo systemctl restart postfix

Site Wordpress

Il faut changer le hostname du serveur pour qu'il corresponde à notre nom de domaine

sudo hostnamectl set-hostname domain.com

Si un site Wordpress est présent sur le serveur il faut ajouter la configuration suivante pour réécrire le domaine d'expédition

sudo nano /etc/postfix/main.cf

Puis on ajoute :

mydomain = domain.com
masquerade_domains = $mydomain
sender_canonical_maps = hash:/etc/postfix/sender_canonical
recipient_canonical_maps = hash:/etc/postfix/recipient_canonical

On créé ensuite les fichiers nécessaires :

sudo nano /etc/postfix/sender_canonical

On ajoute les réécritures nécessaires :

@localhost @domain.com

Même chose avec le seond fichiers :

sudo nano /etc/postfix/recipient_canonical

Et :

@localhost @domain.com

On exécute postmap pour prendre en compte nos modifications et on redémarre postfix

sudo postmap /etc/postfix/sender_canonical
sudo postmap /etc/postfix/recipient_canonical
sudo systemctl restart postfix

Génération des certificats SSL

sudo mkdir /etc/postfix/ssl
cd /etc/postfix/ssl/
sudo openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 2048

Il est demandé une passphrase, on met le hostname du serveur ex : domain.com

sudo chmod 600 smtpd.key
sudo openssl req -new -key smtpd.key -out smtpd.csr

On renseigne de nouveau la même passphrase Puis on renseigne toutes les infos demandées pour la génération du CSR Pour l'adresse mail on utilise : [email protected] Pour le password challenge : de nouveau le hostname ex : domain.com (pas plus de 20 caractères)

sudo openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
sudo openssl rsa -in smtpd.key -out smtpd.key.unencrypted
sudo mv -f smtpd.key.unencrypted smtpd.key
sudo openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650

On renseigne de nouveau toutes les infos demandées pour la génération du CSR Puis on ajoute le nécessaire dans le fichier de configuration de postfix

sudo nano /etc/postfix/main.cf

On conserve juste les deux entrées suivantes sur l'existant

smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

Puis on ajoute

smtp_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_auth_only = no
smtpd_use_tls = yes
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key
smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt
smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
smtpd_recipient_limit = 100
smtpd_helo_restrictions = reject_invalid_hostname
smtpd_sender_restrictions = reject_unknown_address
smtpd_recipient_restrictions = permit_sasl_authenticated,
permit_mynetworks,
reject_unauth_destination,
reject_unknown_sender_domain,
reject_unknown_client,
reject_rbl_client zen.spamhaus.org,
reject_rbl_client bl.spamcop.net,
reject_rbl_client cbl.abuseat.org,
permit

Application de la configuration

sudo systemctl restart postfix

Installation de OpenDKIM

sudo apt update
sudo apt upgrade
sudo apt install opendkim opendkim-tools

Configuration de OpenDKIM

sudo nano /etc/opendkim.conf

On ajoute les entrées suivantes et pour éviter les problèmes on commente les entrées existantes si elles existent déjà

AutoRestart             Yes
AutoRestartRate 10/1h
UMask 002
Syslog yes
SyslogSuccess Yes
LogWhy Yes

Canonicalization relaxed/simple

ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
InternalHosts refile:/etc/opendkim/TrustedHosts
KeyTable refile:/etc/opendkim/KeyTable
SigningTable refile:/etc/opendkim/SigningTable

Mode sv
PidFile /var/run/opendkim/opendkim.pid
Domain domain.com
Selector default
SignatureAlgorithm rsa-sha256

UserID opendkim:opendkim

Socket inet:17789@localhost

Attention : bien mettre le domaine principal du serveur dans domain et renseigné dans Selector le sélecteur utilisé dans la zone DNS

sudo nano /etc/default/opendkim

On ajoute l'entrée suivante dans le fichier

SOCKET=inet:17789@localhost

On modifie la configuration de postfix pour utiliser OpenDKIM

sudo nano /etc/postfix/main.cf

On ajoute

milter_protocol = 2
milter_default_action = accept
smtpd_milters = inet:localhost:17789
non_smtpd_milters = inet:localhost:17789
sudo mkdir /etc/opendkim
sudo mkdir /etc/opendkim/keys

Génération des clés de signature

On créé le répertoire pour le domaine à signer

sudo mkdir /etc/opendkim/keys/domain.com

Puis on génère la clé

sudo opendkim-genkey -D /etc/opendkim/keys/domain.com -d domain.com -s default

Le -s correspond au sélecteur que l'on va utiliser, ici default

On modifie le propriétaire du dossier des clés pour opendkim

sudo chown -R opendkim:opendkim /etc/opendkim/keys/domain.com

On modifie les droits sur les clés Attention le nom du fichier correspond au sélecteur choisi

sudo chmod 640 /etc/opendkim/keys/domain.com/default.private
sudo chmod 644 /etc/opendkim/keys/domain.com/default.txt

On créé ensuite les 3 fichiers nécessaires au fonctionnement d'OpenDKIM

On commence par le fichier KeyTable

sudo nano /etc/opendkim/KeyTable

On renseigne ensuite une entrée par sélecteur créé sur le serveur en indiquant la clé à utiliser

default._domainkey.domain.com domain.com:default:/etc/opendkim/keys/domain.com/default.private

On continue avec le fichier SigningTable

sudo nano /etc/opendkim/SigningTable

On renseigne ensuite dans ce fichier pour chaque domaine d'adresse mail le sélecteur à utiliser

*@domain.com default._domainkey.domain.com

On fini avec le fichier TrustedHosts

sudo nano /etc/opendkim/TrustedHosts

En renseigne ici les hôtes autorisés à signer des mails avec OpenDKIM

#Ne pas toucher les 3 premieres lignes
127.0.0.1
localhost
192.168.0.1/24

*.domain.com

Application de la configuration

sudo systemctl restart postfix
sudo systemctl restart opendkim

Ajout de l'enregistrement DKIM dans la zone DNS

sudo cat /etc/opendkim/keys/domain.com/default.txt
default._domainkey	IN	TXT	( "v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqh ... I4bdCvZiwIDAQAB" )  ; ----- DKIM key default for domain.com