skip to Main Content

Postfix installer et configurer un serveur de messagerie partie 5/8

Configurer postfix – installer et configurer un serveur de messagerie partie 5/8configurer postfix

Configurer Postfix, certificat ssl, création des paramètres Diffie-Hellman, gestion et du stockage des mails, paramètre SMTP sortie vers client

 

Sommaire

Configurer postfix

Dans un premier temps, avant de configurer postfix, vous devez sauvegarder du fichier de configuration de Postfix. En effet; en cas d’erreur nous pouvons toujours revenir en arrière.

cp /etc/postfix/main.cf /etc/postfix/main.cf.bak

Nous remarquons que ce fichier de configuration est très complexe. Je vous conseille de bien suivre le tutoriel pour configurer postfix. Maintenant vous ouvrez le fichier en question.

# nano /etc/postfix/main.cf

Dans ce fichier, j’ai séparé les bloc pour mieux comprendre.

Les blocs sont les suivant :

  • Générale
  • Paramètre TLS ( SMTP Sortie vers client et Entrée vers serveur)
  • Paramètre SMTP Sortie vers client
  • Paramètre SMTP Entrée vers serveur
  • Paramètre SASL
  • Paramètre VIRTUALS MAPS
  • Paramètre RESTRICTIONS
  • Paramètre OpenDKIM

Générale configurer postfix

# See /usr/share/postfix/main.cf.dist for a commented, more complete version # Debian specific:  Specifying a file name will cause the first # line of that file to be used as the name.  The Debian default # is /etc/mailname. ####################### ## GENERALS          ## ####################### smtpd_banner            = $myhostname ESMTP $mail_name (Debian/GNU) biff                    = no append_dot_mydomain     = no readme_directory        = no delay_warning_time      = 4h mailbox_command         = procmail -a "$EXTENSION" recipient_delimiter     = + disable_vrfy_command    = yes message_size_limit      = 502400000 mailbox_size_limit      = 1024000000 inet_interfaces = all inet_protocols = ipv4 myhostname    = hostname.domain.com myorigin      = hostname.domain.com mydestination = localhost localhost.$mydomain mynetworks      = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.4.0/24 adresse ip publique relayhost       = alias_maps      = hash:/etc/aliases alias_database  = hash:/etc/aliases

 

Paramètre TLS

Avant de configurer le TLS, nous devons installer openssl.

Paramètre SMTP Entrée vers serveur

Nous devons créer certificat SSL.

Avant tout, vous devez installer openssl.

# apt-get install openssl

Cette commande  va vous créer un fichier ca.key.pem

Attention : c’est certificat auto-signé

openssl genrsa -out ca.key.pem 4096

Puis grâce à ce fichier vous allez créer un fichier ca.cert.pem

openssl req -x509 -new -nodes -days 1460 -sha256 -key ca.key.pem -out ca.cert.pem

Cette commande va vous demander des informations.

Country Name (2 letter code) [AU]: FR State or Province Name (full name) [Some-State]: France Locality Name (eg, city) []: Votre ville Organization Name (eg, company) [Internet Widgits Pty Ltd]: domaine.com Organizational Unit Name (eg, section) []: Certificate Authority Common Name (e.g. server FQDN or YOUR name) []: domaine.com CA

Nous allons créer la clé mailserver.key cripter en 4096

openssl genrsa -out mailserver.key 4096

Puis grâce à ce fichier vous allez créer un fichier mailserver.key.crs

openssl req -new -sha256 -key mailserver.key -out mailserver.csr

De nouveau, avec cette commande va vous demander des informations.

Country Name (2 letter code) [AU]: FR State or Province Name (full name) [Some-State]: France Locality Name (eg, city) []: Votre ville Organization Name (eg, company) [Internet Widgits Pty Ltd]: domaine.com Organizational Unit Name (eg, section) []:Mail server Common Name (e.g. server FQDN or YOUR name) []: mail.domain.com

Nous allons créer le fichier mailserver.crt

openssl x509 -req -days 1460 -sha256 -in mailserver.csr -CA ca.cert.pem -CAkey ca.key.pem -CAcreateserial -out mailserver.crt

Pour chaque fichiers, nous devons changer les droits pour la sécurité.

chmod 444 ca.cert.pem
chmod 444 mailserver.crt
chmod 400 ca.key.pem
chmod 400 mailserver.key

Nous allons déplacer cer fichiers dans le répertoire qui leur correspond. le ca.key.pem et mailserver.key dans le répertoire /etc/ssl/private. les fichiers ca.cert.pem et mailserver.crt dans le répertoire certs.

mv ca.key.pem private/
mv ca.cert.pem certs/
mv mailserver.key private/
mv mailserver.crt certs/

Création des paramètres Diffie-Hellman :

L’algorithme Diffie-Hellman est de créer un secret commun aux personnes qui veulent communiquer et d’utiliser ce secret pour chiffrer les données échangées.

Nous allons créer deux chiffrements l’un en 2048 et l’autre en 512.

openssl dhparam -out /etc/postfix/dh2048.pem 2048

Voici la deuxième commande à lancer.

openssl dhparam -out /etc/postfix/dh512.pem 512

Une fois que c’est créée, nous devons renseigner le fichier main.cf de postfix dans /etc/postfix/main.cf.
J’ai souligné en gras les lignes.

#######################     # Smtp ( ENTREE / Serveur )  # ############################# smtpd_tls_loglevel            = 1 smtpd_tls_auth_only           = yes smtpd_tls_security_level      = may smtpd_tls_received_header     = yes smtpd_tls_protocols           = !SSLv2, !SSLv3 smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3 smtpd_tls_mandatory_ciphers   = medium smtpd_tls_CAfile              = $smtp_tls_CAfile smtpd_tls_cert_file           = /etc/ssl/certs/mailserver.crt smtpd_tls_key_file            = /etc/ssl/private/mailserver.key smtpd_tls_dh1024_param_file   = $config_directory/dh2048.pem smtpd_tls_dh512_param_file    = $config_directory/dh512.pem tls_preempt_cipherlist = yes tls_random_source      = dev:/dev/urandom smtp_tls_session_cache_database  = btree:${data_directory}/smtp_scache smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache lmtp_tls_session_cache_database  = btree:${data_directory}/lmtp_scache

Nous allons déclaré Dovecot pour identifier  les utilisateurs.

##################### ## Paremètre SASL ## ##################### # C'est ici que l'on déclare Dovecot comme une passerelle pour authentifier les utilisateurs. # Postfix peut s'appuyer sur Dovecot pour identifier les connexions SMTP. smtpd_sasl_auth_enable          = yes smtpd_sasl_type                 = dovecot smtpd_sasl_path                 = private/auth smtpd_sasl_security_options     = noanonymous smtpd_sasl_tls_security_options = $smtpd_sasl_security_options smtpd_sasl_local_domain         = $mydomain smtpd_sasl_authenticated_header = yes broken_sasl_auth_clients = yes
Gestion et du stockage des mails

Ici nous allons dire où nous stockons les mail. J’ai choisi le dosssier /var/mail/vhosts/.

mkdir -p /var/mail/vhosts/domain.com

Nous allons créer un utilisateur virtuel nommé vmail avec comme UID/GID de 5000, avec un HOME par défaut pointant sur /var/mail.

# groupadd -g 5000 vmail
# useradd -g vmail -u 5000 vmail -d /var/vmail/ -m
chown -R vmail:vmail /var/mail

Le paramètre virtual_transport est très très important, il permet à Postfix de savoir où envoyer les emails reçus. Dans notre cas, on utilise le protocole LMTP pour les acheminer jusqu’à Dovecot.

 

############################## ## Paramètre VIRTUALS MAPS ## ############################## # Gestion et du stockage des emails. Dans la suite de ce tutoriel #nous allons créer un utilisateur nommé vmail avec UID/GID de 5000 #avec un HOME par défaut pointant sur /var/mail virtual_uid_maps        = static:5000 virtual_gid_maps        = static:5000 virtual_minimum_uid     = 5000 virtual_mailbox_base    = /var/mail # Le paramètre virtual_transport est très très important, # il permet à Postfix de savoir où envoyer les emails reçus. Dans notre cas, # on utilise le protocole LMTP pour les acheminer jusqu'à Dovecot virtual_transport       = lmtp:unix:private/dovecot-lmtp virtual_mailbox_domains = mysql:/etc/postfix/mysql/mysql-virtual-mailbox-domains.cf virtual_mailbox_maps    = mysql:/etc/postfix/mysql/mysql-virtual-mailbox-maps.cf virtual_alias_maps      = mysql:/etc/postfix/mysql/mysql-virtual-alias-maps.cf smtpd_sender_login_maps  = mysql:/etc/postfix/mysql/mysql-sender-login-maps.cf

D’une part nous allons définir règles de restrictions au niveau du protocole SMTP afin de sécuriser les échanges lors de l’envoie des mails.

############################### ## Paramètre de RESTRICTIONS ## ############################### # Règles sur les adresses de destination # permit_sasl_authenticated : Accepter la connexion lorsque le client est authentifié # reject_non_fqdn_recipient : Refuser les adresses de destinations invalides (non FQDN) smtpd_recipient_restrictions =      permit_mynetworks,      permit_sasl_authenticated,      reject_non_fqdn_recipient,      reject_unauth_destination,      reject_unknown_recipient_domain,      reject_rbl_client zen.spamhaus.org # Règles sur l'échange HELO qui survient avant la connexion # reject_invalid_helo_hostname : Refuser les échanges HELO invalides # reject_non_fqdn_helo_hostname : Refuser les noms d'hôte invalides (non FQDN) # reject_unknown_helo_hostname : Refuser les noms d'hôte qui n'ont pas de champ DNS A ou MX dans leurs DNS. smtpd_helo_restrictions =      permit_mynetworks,      permit_sasl_authenticated,      reject_invalid_helo_hostname,      reject_non_fqdn_helo_hostname      reject_unknown_helo_hostname smtpd_client_restrictions =      permit_mynetworks,      permit_inet_interfaces,      permit_sasl_authenticated      reject_plaintext_session,      reject_unauth_pipelining # Règles de connexion des clients # permit_sasl_authenticated : Accepter la connexion lorsque le client est authentifié # reject_plaintext_session : Refuser les connexions non sécurisées # reject_unauth_pipelining : Refuser les défauts lors de la connexion smtpd_sender_restrictions =         reject_non_fqdn_sender,         reject_unknown_sender_domain,         reject_sender_login_mismatch
###################
## Paramètre OpenDKIM  ##
###################
# Indiquer à Postfix comment s'interfacer avec OpenDKIM

milter_protocol = 6
milter_default_action = accept
smtpd_milters = unix:/opendkim/opendkim.sock
non_smtpd_milters = unix:/opendkim/opendkim.sock
Paramètre SMTP Sortie vers client

Nous allons paramétrer les paramètres de chiffrement TLS pour les sortie vers le client et entrée vers le serveur. Le protocol utilisé est ssl.

############################# # TLS PARAMETERS            # ############################# #############################     # Smtp ( SORTIE / Client )  # ############################# smtp_tls_loglevel            = 1 smtpd_tls_security_level     = may smtp_tls_CAfile              = /etc/ssl/certs/ca.cert.pem smtp_tls_protocols           = !SSLv2, !SSLv3 smtp_tls_mandatory_protocols = !SSLv2, !SSLv3 smtp_tls_mandatory_ciphers   = high smtp_tls_exclude_ciphers     = aNULL, eNULL, EXPORT, DES, 3DES, RC2, RC4, MD5, PSK, SRP, DSS, AECDH, ADH smtp_tls_note_starttls_offer = yes

Configurer Postfix pour MySQL

Maintenant nous allons créer 4 fichiers de configuration qui vont permettre à Postfix d’interagir avec MySQL. Ces fichiers se peuvent se mettre dans /etc/postfix/mysql/ ou à la racine.

Le premier fichier est mysql-virtual-mailbox-domaine.cf.

# nano /etc/postfix/mysql-virtual-mailbox-domains.cf
hosts = 127.0.0.1
user = postfix
password = MOT DE PASSE
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1

Le deuxième fichier est mysql-virtual-mailbox-maps

# nano /etc/postfix/mysql-virtual-mailbox-maps.cf
hosts = 127.0.0.1
user = postfix
password = MOT DE PASSE
dbname = postfix

query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1

Le troisième fichier est mysql-virtual-mailbox-alias-maps.cf

# nano /etc/postfix/mysql-virtual-mailbox-alias-maps.cf
hosts = 127.0.0.1
user = postfix
password = MOT DE PASSE
dbname = postfix

query = SELECT goto FROM alias WHERE address='%s' AND active = 1

Le quatrième fichier est mysql-sender-login-maps.cf

# nano /etc/postfix/mysql-virtual-sender-login-maps.cf
hosts = 127.0.0.1
user = postfix
password = MOT DE PASSE
dbname = postfix

query = SELECT username FROM mailbox WHERE username='%s' AND active = 1

Attention : Vérifier dans le fichier /etc/postfix/main.cf que vous avez le même chemin.

Dans la partie Paramètre Virtual maps, vérifier le chemin.

virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf virtual_mailbox_maps    = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf virtual_alias_maps      = mysql:/etc/postfix/mysql-virtual-alias-maps.cf smtpd_sender_login_maps  = mysql:/etc/postfix/mysql-sender-login-maps.cf

Nous avons terminé de configurer postfix. Maintenant, nous allons configurer Dovecote.

Postfix installer et configurer un serveur de messagerie partie 6/8

 

Cet article comporte 0 commentaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.