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 :
root: [email protected]
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
root@hostname [email protected]
[email protected] [email protected]
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