Outils pour utilisateurs

Outils du site


serveur_mail

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
serveur_mail [2024/12/12 13:29] huracanserveur_mail [2024/12/12 15:04] (Version actuelle) huracan
Ligne 1: Ligne 1:
 ---- ----
  
-Installation d'un serveur de mail complet +====== Installation d'un serveur de mail complet ======
-Pré-requis : +
-Un nom de domaine (avec un accès aux DNS et fichiers de zone) +
-Nginx +
-PHP +
-OpenSSL +
-MySQL +
-Schéma :+
  
-{{:schema-mail_serveur.png?400|}}+==== Pré-requis :====
  
-Configuration du nom d'hôte, du FQDN et du champ MX :+  * Un nom de domaine (avec un accès aux DNS et fichiers de zone) 
 +  * Nginx 
 +  * PHP 
 +  * OpenSSL 
 +  * MySQL 
 + 
 +==== Schéma : ==== 
 + 
 +{{ :schema-mail_serveur.png?direct&600 |}} 
 + 
 +==== Configuration du nom d'hôte, du FQDN et du champ MX : ====
 Dans la suite de ce tutoriel, nous allons utiliser les caractéristiques suivantes (à adapter selon votre configuration) : Dans la suite de ce tutoriel, nous allons utiliser les caractéristiques suivantes (à adapter selon votre configuration) :
 +  * Nom de domaine principal : **kenny.ovh**
 +  * Nom d'hôte : **mail**
 +  * FQDN : **smtp.kenny.ovh**
 +  * MX : **smtp.kenny.ovh**
  
-Nom de domaine principal : kenny.ovh +Pour modifier le nom d'hôte, exécutez la commande suivante (n'oubliez pas de remplacer "hostnamepar le nom d'hôte de votre serveur) : 
-Nom d'hôte : mail +  echo **mail** > /etc/hostname
-FQDN : smtp.dams.ovh +
-MX : smtp.dams.ovh +
-Pour modifier le nom d'hôte, exécutez la commande suivante (n'oubliez pas de remplacer hostname” par le nom d'hôte de votre serveur) :+
  
-echo **mail** > /etc/hostname +Pour modifier le FQDN, il faut editer le fichier **/etc/hosts** : 
-Pour modifier le FQDN, il faut editer le fichier /etc/hosts :+  # vi /etc/hosts 
 + 
 +  127.0.0.1 localhost.localdomain localhost 
 +  IP DU SERVEUR smtp.kenny.ovh mail
  
-# vi /etc/hosts 
-127.0.0.1 localhost.localdomain localhost 
-IP DU SERVEUR smtp.dams.ovh mail 
 Redémarrez le serveur pour prendre en compte le changement de nom d'hôte. Ensuite il faut associer le FQDN avec l'adresse IP de votre serveur. Pour cela, vous devez mettre à jour le fichier de zone de votre domaine depuis le site de votre registrar (OVH). Redémarrez le serveur pour prendre en compte le changement de nom d'hôte. Ensuite il faut associer le FQDN avec l'adresse IP de votre serveur. Pour cela, vous devez mettre à jour le fichier de zone de votre domaine depuis le site de votre registrar (OVH).
  
 Le plus important dans cette partie, c'est de faire pointer le FQDN ET le MX vers l'adresse IP de votre serveur. L'enregistrement MX permet de déterminer vers quel serveur un email doit être acheminé, si quelqu'un vous envoie un message depuis Gmail par exemple, les serveurs de google vont automatiquement interroger cette entrée pour savoir où transmettre le message. Donc si cette entrée n'est pas ou mal définie, vous ne recevrez jamais d'emails. Le plus important dans cette partie, c'est de faire pointer le FQDN ET le MX vers l'adresse IP de votre serveur. L'enregistrement MX permet de déterminer vers quel serveur un email doit être acheminé, si quelqu'un vous envoie un message depuis Gmail par exemple, les serveurs de google vont automatiquement interroger cette entrée pour savoir où transmettre le message. Donc si cette entrée n'est pas ou mal définie, vous ne recevrez jamais d'emails.
  
-1 - Installation de postfix+==== 1 - Installation de postfix ====
 On commence par installer Postfix avec le support de mysql. Les domaines, comptes utilisateurs et alias seront ainsi gérés directement au sein d'une base de données, que vous pourrez administrer grâce à vos outils habituels, comme phpMyAdmin par exemple. On commence par installer Postfix avec le support de mysql. Les domaines, comptes utilisateurs et alias seront ainsi gérés directement au sein d'une base de données, que vous pourrez administrer grâce à vos outils habituels, comme phpMyAdmin par exemple.
 +  apt-get install postfix postfix-mysql
  
-apt-get install postfix postfix-mysql +Lors de l'installation de Postfix, vous devez choisir le type du serveur de messagerie, choisissez **"Site Internet"** pour utiliser SMTP. 
-Lors de l'installation de Postfix, vous devez choisir le type du serveur de messagerie, choisissez Site Internet” pour utiliser SMTP. Ensuite une autre fenêtre apparaît et vous demande le nom du système de mail, entrez alors le FQDN de votre serveur.+Ensuite une autre fenêtre apparaît et vous demande le nom du système de mail, entrez alors le **FQDN** de votre serveur.
  
-2 - Création de la base de donnée +==== 2 - Création de la base de donnée ==== 
-mysql -u root -p +  mysql -u root -p 
-CREATE DATABASE postfix; +  CREATE DATABASE postfix; 
-CREATE USER 'postfix'@'localhost' IDENTIFIED BY 'password'; +  CREATE USER 'postfix'@'localhost' IDENTIFIED BY 'password'; 
-GRANT ALL PRIVILEGES ON `postfix`.* TO 'postfix'@'localhost'; +  GRANT ALL PRIVILEGES ON `postfix`.* TO 'postfix'@'localhost'; 
-FLUSH PRIVILEGES; +  FLUSH PRIVILEGES; 
-EXIT; +  EXIT; 
-3 - Installation et configuration de PostfixAdmin+ 
 +==== 3 - Installation et configuration de PostfixAdmin ====
 PostfixAdmin est une interface web qui permet de gérer simplement vos domaines, vos adresses virtuelles ainsi que vos alias. Dès que vous aurez besoin d'une nouvelle adresse email, c'est par cette interface qu'il faudra passer. PostfixAdmin est une interface web qui permet de gérer simplement vos domaines, vos adresses virtuelles ainsi que vos alias. Dès que vous aurez besoin d'une nouvelle adresse email, c'est par cette interface qu'il faudra passer.
  
 Il faut dans un premier temps télécharger l'archive la plus récente et la décompresser sur le serveur : Il faut dans un premier temps télécharger l'archive la plus récente et la décompresser sur le serveur :
 +  cd /var/www
 +  wget http://downloads.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-3.2/postfixadmin-3.2.tar.gz
 +  tar -xzf postfixadmin-3.2.tar.gz
 +  mv postfixadmin-3.2 postfixadmin
 +  rm -rf postfixadmin-3.2.tar.gz
 +  chown -R www-data:www-data postfixadmin
 +  apt-get install php5-imap
  
-cd /var/www 
-wget http://downloads.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-3.2/postfixadmin-3.2.tar.gz 
-tar -xzf postfixadmin-3.2.tar.gz 
-mv postfixadmin-3.2 postfixadmin 
-rm -rf postfixadmin-3.2.tar.gz 
-chown -R www-data:www-data postfixadmin 
-apt-get install php5-imap 
 Editez le fichier de configuration et modifiez les paramètres suivants : Editez le fichier de configuration et modifiez les paramètres suivants :
 +  # vim /var/www/postfixadmin/config.inc.php
 +  $CONF['configured'] = true;
 +  $CONF['default_language'] = 'fr';
 +  $CONF['database_type'] = 'mysqli';
 +  $CONF['database_host'] = 'localhost';
 +  $CONF['database_user'] = 'postfix';
 +  $CONF['database_password'] = 'MOT DE PASSE';
 +  $CONF['database_name'] = 'postfix';
 +  $CONF['admin_email'] = 'admin@kenny.ovh';
 +  $CONF['domain_path'] = 'YES';
 +  $CONF['domain_in_mailbox'] = 'NO';
 +  $CONF['fetchmail'] = 'NO';
  
-# vim /var/www/postfixadmin/config.inc.php 
-$CONF['configured'] = true; 
-$CONF['default_language'] = 'fr'; 
-$CONF['database_type'] = 'mysqli'; 
-$CONF['database_host'] = 'localhost'; 
-$CONF['database_user'] = 'postfix'; 
-$CONF['database_password'] = 'MOT DE PASSE'; 
-$CONF['database_name'] = 'postfix'; 
-$CONF['admin_email'] = 'admin@dams.ovh'; 
-$CONF['domain_path'] = 'YES'; 
-$CONF['domain_in_mailbox'] = 'NO'; 
-$CONF['fetchmail'] = 'NO'; 
 Ajouter un nouveau virtual host Nginx (à adapter selon votre configuration) : Ajouter un nouveau virtual host Nginx (à adapter selon votre configuration) :
 +  # vim /etc/nginx/sites-enabled/postfixadmin.conf
  
-# vim /etc/nginx/sites-enabled/postfixadmin.conf +  server { 
-server { +     listen 80; 
-   listen 80; +     server_name     postfixadmin.kenny.ovh; 
-   server_name     postfixadmin.dams.ovh; +     root            /var/www/postfixadmin; 
-   root            /var/www/postfixadmin; +     index           index.php; 
-   index           index.php; +     charset         utf-8; 
-   charset         utf-8; +   
- +     location / { 
-   location / { +        try_files $uri $uri/ index.php; 
-      try_files $uri $uri/ index.php; +     } 
-   }+   
 +     location ~* \.php$ { 
 +          include       /etc/nginx/fastcgi_params; 
 +          fastcgi_pass  unix:/var/run/php5-fpm.sock; 
 +          fastcgi_index index.php; 
 +          fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
 +     } 
 +  }
  
-   location ~* \.php$ { 
-        include       /etc/nginx/fastcgi_params; 
-        fastcgi_pass  unix:/var/run/php5-fpm.sock; 
-        fastcgi_index index.php; 
-        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
-   } 
-} 
 Redémarrez Nginx pour prendre en compte le nouveau vhost : Redémarrez Nginx pour prendre en compte le nouveau vhost :
 +  service nginx restart
  
-service nginx restart 
 Lancez l'assistant d'installation de PostfixAdmin à l'adresse suivante et suivez les indications : Lancez l'assistant d'installation de PostfixAdmin à l'adresse suivante et suivez les indications :
 +  http://postfixadmin.kenny.ovh/setup.php
  
-http://postfixadmin.dams.ovh/setup.php +Le script créé toutes les tables nécessaires au bon fonctionnement de Postfix. En bas de la page générez le hash du mot de passe d'installation et créez un compte administrateur (exemple : admin@kenny.ovh). C'est à partir de ce compte que vous allez gérer toutes vos adresses emails. Attention: admin@kenny.ovh n'est qu'un compte administrateur, l'adresse email n'existe pas. Si vous voulez la créer, il faudra passer par postfixadmin, comme on va le voir par la suite.
-Le script créé toutes les tables nécessaires au bon fonctionnement de Postfix. En bas de la page générez le hash du mot de passe d'installation et créez un compte administrateur (exemple : admin@dams.ovh). C'est à partir de ce compte que vous allez gérer toutes vos adresses emails. Attention: admin@dams.ovh n'est qu'un compte administrateur, l'adresse email n'existe pas. Si vous voulez la créer, il faudra passer par postfixadmin, comme on va le voir par la suite.+
  
 Il ne vous reste plus qu'à mettre le hash généré par l'assistant dans le fichier config.inc.php : Il ne vous reste plus qu'à mettre le hash généré par l'assistant dans le fichier config.inc.php :
 +  # vim /var/www/postfixadmin/config.inc.php
 +
 +  $CONF['setup_password'] = 'HASH';
  
-# vim /var/www/postfixadmin/config.inc.php 
-$CONF['setup_password'] = 'HASH'; 
 Vous pouvez maintenant vous connecter via le formulaire de connexion : Vous pouvez maintenant vous connecter via le formulaire de connexion :
 +  http://postfixadmin.kenny.ovh/login.php
  
-http://postfixadmin.dams.ovh/login.php +On va commencer par ajouter un nouveau domaine, dans notre exemple il s'agit de kenny.ovh :
-On va commencer par ajouter un nouveau domaine, dans notre exemple il s'agit de dams.ovh : +
  
-Et une adresse email, exemple damien@dams.ovh :+{{ :mail_server2.jpg?direct&600 |}}
  
 +Et une adresse email, exemple kenny@kenny.ovh :
  
 +{{ :mail_server3.jpg?direct&600 |}}
  
 Voila, vous avez ajouté votre première adresse email, like a boss, maintenant on va passer aux choses sérieuses. Voila, vous avez ajouté votre première adresse email, like a boss, maintenant on va passer aux choses sérieuses.
  
-4 - Configuration de Postfix+==== 4 - Configuration de Postfix ====
 Maintenant nous allons devoir configurer Postfix pour qu'il prenne en charge correctement les connexions SMTP et l'envoie des messages sur le réseau pour chaque utilisateur créé via PostfixAdmin. Maintenant nous allons devoir configurer Postfix pour qu'il prenne en charge correctement les connexions SMTP et l'envoie des messages sur le réseau pour chaque utilisateur créé via PostfixAdmin.
  
 Faites une sauvegarde du fichier de conf de Postfix : Faites une sauvegarde du fichier de conf de Postfix :
  
-cp /etc/postfix/main.cf /etc/postfix/main.cf.bak Ce fichier de configuration est assez complexe, on va voir ensemble comment le configurer correctement. J'ai séparé par bloc de configuration pour que ça soit plus facile à comprendre. Vous retrouverez à la fin de cette section l'ensemble de la configuration de Postfix, n'hésitez pas à faire un diff avec le votre pour voir si vous n'avez pas fait d'erreur.+cp /etc/postfix/main.cf /etc/postfix/main.cf.bak 
 +Ce fichier de configuration est assez complexe, on va voir ensemble comment le configurer correctement. J'ai séparé par bloc de configuration pour que ça soit plus facile à comprendre. Vous retrouverez à la fin de cette section l'ensemble de la configuration de Postfix, n'hésitez pas à faire un diff avec le votre pour voir si vous n'avez pas fait d'erreur.
  
 On va commencer par définir quelques règles (restrictions) au niveau du protocole SMTP afin de sécuriser les échanges et avoir un cadre plus restrictif lors de l'envoie des emails. Attention un client mail mal configuré ou obsolète peut ne pas fonctionner avec cette configuration, à vous d'adapter la configuration en fonction de vos besoins. On va commencer par définir quelques règles (restrictions) au niveau du protocole SMTP afin de sécuriser les échanges et avoir un cadre plus restrictif lors de l'envoie des emails. Attention un client mail mal configuré ou obsolète peut ne pas fonctionner avec cette configuration, à vous d'adapter la configuration en fonction de vos besoins.
 +  # vim /etc/postfix/main.cf
  
-# vim /etc/postfix/main.cf +  # Règles sur les adresses de destination 
-# Règles sur les adresses de destination +  # permit_sasl_authenticated : Accepter la connexion lorsque le client est authentifié 
-# permit_sasl_authenticated : Accepter la connexion lorsque le client est authentifié +  # reject_non_fqdn_recipient : Refuser les adresses de destinations invalides (non FQDN) 
-# reject_non_fqdn_recipient : Refuser les adresses de destinations invalides (non FQDN) +  smtpd_recipient_restrictions = 
-smtpd_recipient_restrictions = +       permit_mynetworks, 
-     permit_mynetworks, +       permit_sasl_authenticated,  
-     permit_sasl_authenticated,  +       reject_non_fqdn_recipient,  
-     reject_non_fqdn_recipient,  +       reject_unauth_destination,  
-     reject_unauth_destination,  +       reject_unknown_recipient_domain, 
-     reject_unknown_recipient_domain, +       reject_rbl_client zen.spamhaus.org 
-     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    
 +   
 +  # 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_client_restrictions = 
 +       permit_mynetworks, 
 +       permit_inet_interfaces, 
 +       permit_sasl_authenticated,    
 +       # reject_plaintext_session,     
 +       # reject_unauth_pipelining      
 +   
 +  # Règles sur les expéditeurs 
 +  # reject_non_fqdn_sender : Refuser les expéditeurs invalides (non FQDN) 
 +  # reject_unknown_sender_domain : Refuser les expéditeurs qui n'ont pas de champ DNS A ou MX dans leurs DNS.  
 +  # reject_sender_login_mismatch : Refuser les expéditeurs locaux non authentifiés 
 +  smtpd_sender_restrictions = 
 +       reject_non_fqdn_sender, 
 +       reject_unknown_sender_domain, 
 +       reject_sender_login_mismatch
  
-# 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    
- 
-# 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_client_restrictions = 
-     permit_mynetworks, 
-     permit_inet_interfaces, 
-     permit_sasl_authenticated,    
-     # reject_plaintext_session,     
-     # reject_unauth_pipelining      
- 
-# Règles sur les expéditeurs 
-# reject_non_fqdn_sender : Refuser les expéditeurs invalides (non FQDN) 
-# reject_unknown_sender_domain : Refuser les expéditeurs qui n'ont pas de champ DNS A ou MX dans leurs DNS.  
-# reject_sender_login_mismatch : Refuser les expéditeurs locaux non authentifiés 
-smtpd_sender_restrictions = 
-     reject_non_fqdn_sender, 
-     reject_unknown_sender_domain, 
-     reject_sender_login_mismatch 
 Ensuite nous allons définir les paramètres de chiffrement via TLS : Ensuite nous allons définir les paramètres de chiffrement via TLS :
 +  # Smtp ( OUTGOING / Client )
 +  smtp_tls_loglevel            = 1
 +  smtp_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
 +  
 +  # ---------------------------------------------------------------------------------------------------
 +  
 +  # Smtpd ( INCOMING / Server )
 +  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
 +  
 +  # Infos (voir : postconf -d)
 +  # Medium cipherlist = aNULL:-aNULL:ALL:!EXPORT:!LOW:+RC4:@STRENGTH
 +  # High cipherlist   = aNULL:-aNULL:ALL:!EXPORT:!LOW:!MEDIUM:+RC4:@STRENGTH
 +  
 +  # smtpd_tls_exclude_ciphers   = NE PAS modifier cette directive pour des raisons de compatibilité
 +  #                               avec les autres serveurs de mail afin d'éviter une erreur du type
 +  #                               "no shared cipher" ou "no cipher overlap" puis un fallback en
 +  #                               plain/text...
 +  # smtpd_tls_cipherlist        = Ne pas modifier non plus !
 +  
 +  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
  
-# Smtp ( OUTGOING / Client ) 
-smtp_tls_loglevel            = 1 
-smtp_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 
- 
-# --------------------------------------------------------------------------------------------------- 
- 
-# Smtpd ( INCOMING / Server ) 
-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 
- 
-# Infos (voir : postconf -d) 
-# Medium cipherlist = aNULL:-aNULL:ALL:!EXPORT:!LOW:+RC4:@STRENGTH 
-# High cipherlist   = aNULL:-aNULL:ALL:!EXPORT:!LOW:!MEDIUM:+RC4:@STRENGTH 
- 
-# smtpd_tls_exclude_ciphers   = NE PAS modifier cette directive pour des raisons de compatibilité 
-#                               avec les autres serveurs de mail afin d'éviter une erreur du type 
-#                               "no shared cipher" ou "no cipher overlap" puis un fallback en 
-#                               plain/text... 
-# smtpd_tls_cipherlist        = Ne pas modifier non plus ! 
- 
-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 
 Si vous n'avez pas de certificat SSL, exécutez les commandes suivantes pour en générer un (attention il s'agira d'un certificat auto-signé par votre propre autorité de certification) : Si vous n'avez pas de certificat SSL, exécutez les commandes suivantes pour en générer un (attention il s'agira d'un certificat auto-signé par votre propre autorité de certification) :
 +  cd /etc/ssl/
  
-cd /etc/ssl/ +  openssl genrsa -out ca.key.pem 4096 
-openssl genrsa -out ca.key.pem 4096 +  openssl req -x509 -new -nodes -days 1460 -sha256 -key ca.key.pem -out ca.cert.pem 
-openssl req -x509 -new -nodes -days 1460 -sha256 -key ca.key.pem -out ca.cert.pem+   
 +  Country Name (2 letter code) [AU]: FR 
 +  State or Province Name (full name) [Some-State]: France 
 +  Locality Name (eg, city) []: Paris 
 +  Organization Name (eg, company) [Internet Widgits Pty Ltd]: Corp Ltd 
 +  Organizational Unit Name (eg, section) []: Certificate Authority 
 +  Common Name (e.g. server FQDN or YOUR name) []: Root CA
  
-Country Name (2 letter code) [AU]: FR +  openssl genrsa -out mailserver.key 4096 
-State or Province Name (full name) [Some-State]: France +  openssl req -new -sha256 -key mailserver.key -out mailserver.csr 
-Locality Name (eg, city) []: Paris +   
-Organization Name (eg, company) [Internet Widgits Pty Ltd]: Corp Ltd +  Country Name (2 letter code) [AU]: FR 
-Organizational Unit Name (eg, section) []: Certificate Authority +  State or Province Name (full name) [Some-State]: France 
-Common Name (e.g. server FQDN or YOUR name) []: Root CA +  Locality Name (eg, city) []: Paris 
-openssl genrsa -out mailserver.key 4096 +  Organization Name (eg, company) [Internet Widgits Pty Ltd]: Corp Ovh 
-openssl req -new -sha256 -key mailserver.key -out mailserver.csr+  Organizational Unit Name (eg, section) []:Mail server 
 +  Common Name (e.g. server FQDN or YOUR name) []: kenny
  
-Country Name (2 letter code) [AU]: FR +  openssl x509 -req -days 1460 -sha256 -in mailserver.csr -CA ca.cert.pem -CAkey ca.key.pem -CAcreateserial -out mailserver.crt 
-State or Province Name (full name) [Some-State]: France +   
-Locality Name (eg, city) []: Paris +  chmod 444 ca.cert.pem 
-Organization Name (eg, company) [Internet Widgits Pty Ltd]: Corp Ovh +  chmod 444 mailserver.crt 
-Organizational Unit Name (eg, section) []:Mail server +  chmod 400 ca.key.pem 
-Common Name (e.g. server FQDN or YOUR name) []: Dams +  chmod 400 mailserver.key 
-openssl x509 -req -days 1460 -sha256 -in mailserver.csr -CA ca.cert.pem -CAkey ca.key.pem -CAcreateserial -out mailserver.crt+   
 +  mv ca.key.pem private/ 
 +  mv ca.cert.pem certs/ 
 +  mv mailserver.key private/ 
 +  mv mailserver.crt certs/
  
-chmod 444 ca.cert.pem 
-chmod 444 mailserver.crt 
-chmod 400 ca.key.pem 
-chmod 400 mailserver.key 
- 
-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 : Création des paramètres Diffie-Hellman :
 +  openssl dhparam -out /etc/postfix/dh2048.pem 2048
 +  openssl dhparam -out /etc/postfix/dh512.pem 512
  
-openssl dhparam -out /etc/postfix/dh2048.pem 2048 
-openssl dhparam -out /etc/postfix/dh512.pem 512 
 Ensuite nous allons définir les paramètres de connexion via SASL (fichier main.cf de postfix) : Ensuite nous allons définir les paramètres de connexion via SASL (fichier main.cf de postfix) :
 +  # Paramètres de connexion 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
  
-# Paramètres de connexion 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 
 Maintenant on va s'occuper de la 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. Postfix doit le savoir donc on lui indique avec les 4 paramètres suivants : Maintenant on va s'occuper de la 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. Postfix doit le savoir donc on lui indique avec les 4 paramètres suivants :
 +  virtual_uid_maps        = static:5000
 +  virtual_gid_maps        = static:5000
 +  virtual_minimum_uid     = 5000
 +  virtual_mailbox_base    = /var/mail
  
-virtual_uid_maps        = static:5000 
-virtual_gid_maps        = static:5000 
-virtual_minimum_uid     = 5000 
-virtual_mailbox_base    = /var/mail 
 Les 4 règles suivantes permettent à Postfix de savoir comment se connecter et lire la base de donnée afin de récupérer des informations sur les différents domaines, adresses virtuelles et alias. Nous allons détailler le contenu de ces 4 fichiers juste après. Les 4 règles suivantes permettent à Postfix de savoir comment se connecter et lire la base de donnée afin de récupérer des informations sur les différents domaines, adresses virtuelles et alias. Nous allons détailler le contenu de ces 4 fichiers juste après.
 +  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
  
-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 
 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 : 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_transport = lmtp:unix:private/dovecot-lmtp 
 Il ne reste plus qu'à definir les paramètres généraux. N'oubliez pas de modifier la valeur de myhostname et myorigin en indiquant votre FQDN. Il ne reste plus qu'à definir les paramètres généraux. N'oubliez pas de modifier la valeur de myhostname et myorigin en indiquant votre FQDN.
 +  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    = smtp.kenny.ovh
 +  myorigin      = smtp.kenny.ovh
 +  mydestination = localhost localhost.$mydomain
 +  mynetworks    = 127.0.0.0/8
 +  relayhost     =
 +  
 +  alias_maps     = hash:/etc/aliases
 +  alias_database = hash:/etc/aliases
  
-smtpd_banner         = $myhostname ESMTP $mail_name (Debian/GNU) +C'est terminé pour le fichier de configuration principale, je vous l'accorde il y pas mal de paramètres à prendre en compte mais dans le cas d'un serveur SMTP c'est pas étonnant. Vous pouvez aller voir la documentation de Postfix si vous voulez avoir plus d'informations sur sa configuration. [[http://www.postfix.org/postconf.5.html]]
-biff                 = no +
-append_dot_mydomain  = no +
-readme_directory     = no +
-delay_warning_time   = 4h +
-mailbox_command      = procmail -"$EXTENSION" +
-recipient_delimiter  = + +
-disable_vrfy_command = yes +
-message_size_limit   = 502400000 +
-mailbox_size_limit   = 1024000000+
  
-inet_interfaces all +=== Configuration de Postfix pour MySQL ===
-inet_protocols ipv4+
  
-myhostname    = smtp.dams.ovh 
-myorigin      = smtp.dams.ovh 
-mydestination = localhost localhost.$mydomain 
-mynetworks    = 127.0.0.0/8 
-relayhost     = 
- 
-alias_maps     = hash:/etc/aliases 
-alias_database = hash:/etc/aliases 
-C'est terminé pour le fichier de configuration principale, je vous l'accorde il y a pas mal de paramètres à prendre en compte mais dans le cas d'un serveur SMTP c'est pas étonnant. Vous pouvez aller voir la documentation de Postfix si vous voulez avoir plus d'informations sur sa configuration. http://www.postfix.org/postconf.5.html 
- 
-Configuration de Postfix pour MySQL 
 On peut maintenant créer les 4 fichiers de configuration qui vont permettre à Postfix d’interagir avec MySQL : On peut maintenant créer les 4 fichiers de configuration qui vont permettre à Postfix d’interagir avec MySQL :
 +  # vim /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
  
-# vim /etc/postfix/mysql-virtual-mailbox-domains.cf +  # vim /etc/postfix/mysql-virtual-mailbox-maps.cf 
- +   
-hosts = 127.0.0.1 +  hosts = 127.0.0.1 
-user = postfix +  user = postfix 
-password = MOT DE PASSE +  password = MOT DE PASSE 
-dbname = postfix +  dbname = postfix 
- +   
-query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1 +  query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
-# vim /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 +
-# vim /etc/postfix/mysql-virtual-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 +  # vim /etc/postfix/mysql-virtual-alias-maps.cf 
-# vim /etc/postfix/mysql-sender-login-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
  
-hosts = 127.0.0.1 +  # vim /etc/postfix/mysql-sender-login-maps.cf 
-user = postfix +   
-password = MOT DE PASSE +  hosts = 127.0.0.1 
-dbname = postfix+  user = postfix 
 +  password = MOT DE PASSE 
 +  dbname = postfix 
 +   
 +  query = SELECT username FROM mailbox WHERE username='%s' AND active = 1
  
-query = SELECT username FROM mailbox WHERE username='%s' AND active = 1 +Si vous voulez activer le port 587 pour vous connecter de manière sécurisé par SMTPS avec n'importe quel client mail, il faut décommenter/modifier les lignes suivantes dans le fichier **/etc/postfix/master.cf** : 
-Si vous voulez activer le port 587 pour vous connecter de manière sécurisé par SMTPS avec n'importe quel client mail, il faut décommenter/modifier les lignes suivantes dans le fichier /etc/postfix/master.cf :+  submission inet n                               smtpd 
 +    -o syslog_name=postfix/submission 
 +    -o smtpd_tls_dh1024_param_file=${config_directory}/dh2048.pem 
 +    -o smtpd_tls_security_level=encrypt 
 +    -o smtpd_sasl_auth_enable=yes 
 +    -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  
-submission inet n                               smtpd 
-  -o syslog_name=postfix/submission 
-  -o smtpd_tls_dh1024_param_file=${config_directory}/dh2048.pem 
-  -o smtpd_tls_security_level=encrypt 
-  -o smtpd_sasl_auth_enable=yes 
-  -o smtpd_client_restrictions=permit_sasl_authenticated,reject 
 Et n'oubliez pas de décommentez cette ligne aussi si ce n'est pas déjà fait : Et n'oubliez pas de décommentez cette ligne aussi si ce n'est pas déjà fait :
 +  smtp  inet  n                               smtpd
  
-smtp  inet  n                               smtpd +==== 5 - Installation de Dovecot ==== 
-5 - Installation de Dovecot +  apt-get install dovecot-core dovecot-imapd dovecot-lmtpd dovecot-mysql
-apt-get install dovecot-core dovecot-imapd dovecot-lmtpd dovecot-mysql +
-6 - Configuration de dovecot +
-Ajoutez la liste des protocoles activés après l'instruction “!include_try” dans le fichier /etc/dovecot/dovecot.conf. Dans notre cas, nous allons activer IMAP pour la récupération des emails via le port 993 et LMTP pour l'acheminement des emails entre Postfix et Dovecot :+
  
-# vim /etc/dovecot/dovecot.conf+==== 6 - Configuration de dovecot ====
  
-!include_try /usr/share/dovecot/protocols.d/*.protocol +Ajoutez la liste des protocoles activés après l'instruction "!include_try" dans le fichier /etc/dovecot/dovecot.conf. Dans notre cas, nous allons activer IMAP pour la récupération des emails via le port 993 et LMTP pour l'acheminement des emails entre Postfix et Dovecot : 
-protocols = imap lmtp +  # vim /etc/dovecot/dovecot.conf 
-listen = *+   
 +  !include_try /usr/share/dovecot/protocols.d/*.protocol 
 +  protocols = imap lmtp 
 +  listen = * 
 +   
 +  # Assurez-vous que cette ligne est bien décommentée : 
 +  !include conf.d/*.conf
  
-# Assurez-vous que cette ligne est bien décommentée : 
-!include conf.d/*.conf 
 On indique le chemin du conteneur local qui contiendra tous nos emails. Editez le fichier 10-mail.conf : On indique le chemin du conteneur local qui contiendra tous nos emails. Editez le fichier 10-mail.conf :
 +  # vim /etc/dovecot/conf.d/10-mail.conf
 +  
 +  # Le contenur local est organisé de cette manière :
 +  # /var/mail/vhosts/kenny.ovh/utilisateur
 +  mail_location = maildir:/var/mail/vhosts/%d/%n/mail
 +  maildir_stat_dirs=yes
 +  
 +  namespace inbox {
 +      inbox = yes
 +  }
 +  
 +  mail_uid = 5000
 +  mail_gid = 5000
 +  
 +  first_valid_uid = 5000
 +  last_valid_uid = 5000
 +  
 +  mail_privileged_group = vmail
  
-# vim /etc/dovecot/conf.d/10-mail.conf 
- 
-# Le contenur local est organisé de cette manière : 
-# /var/mail/vhosts/dams.ovh/utilisateur 
-mail_location = maildir:/var/mail/vhosts/%d/%n/mail 
-maildir_stat_dirs=yes 
- 
-namespace inbox { 
-    inbox = yes 
-} 
- 
-mail_uid = 5000 
-mail_gid = 5000 
- 
-first_valid_uid = 5000 
-last_valid_uid = 5000 
- 
-mail_privileged_group = vmail 
 Les emails seront stockés dans le répertoire /var/mail. On doit donc créer un répertoire correspondant à notre domaine (celui qui est présent dans la table domain). Les emails seront stockés dans le répertoire /var/mail. On doit donc créer un répertoire correspondant à notre domaine (celui qui est présent dans la table domain).
 +  mkdir -p /var/mail/vhosts/kenny.ovh
  
-mkdir -p /var/mail/vhosts/dams.ovh 
 Maintenant on ajoute un nouvel utilisateur et un nouveau groupe nommé vmail avec un UID/GID de 5000 : Maintenant on ajoute un nouvel utilisateur et un nouveau groupe nommé vmail avec un UID/GID de 5000 :
 +  groupadd -g 5000 vmail 
 +  useradd -g vmail -u 5000 vmail -d /var/mail
 +  chown -R vmail:vmail /var/mail
  
-groupadd -g 5000 vmail  
-useradd -g vmail -u 5000 vmail -d /var/mail 
-chown -R vmail:vmail /var/mail 
 Editer le fichier 10-auth.conf et modifier les lignes suivantes : Editer le fichier 10-auth.conf et modifier les lignes suivantes :
 +  # vim /etc/dovecot/conf.d/10-auth.conf
 +  
 +  disable_plaintext_auth = yes
 +  auth_mechanisms = plain login
 +  #!include auth-system.conf.ext # Commenter cette ligne
 +  !include auth-sql.conf.ext     # décommenter cette ligne
  
-# vim /etc/dovecot/conf.d/10-auth.conf 
- 
-disable_plaintext_auth = yes 
-auth_mechanisms = plain login 
-#!include auth-system.conf.ext # Commenter cette ligne 
-!include auth-sql.conf.ext     # décommenter cette ligne 
 Maintenant on va définir deux méthodes qui vont permettrent à Dovecot de savoir comment obtenir les utilisateurs et les mots de passe correspondants lors de la connexion. Editez le fichier auth-sql.conf.ext : Maintenant on va définir deux méthodes qui vont permettrent à Dovecot de savoir comment obtenir les utilisateurs et les mots de passe correspondants lors de la connexion. Editez le fichier auth-sql.conf.ext :
 +  # vim /etc/dovecot/conf.d/auth-sql.conf.ext
 +  
 +  # Le mot de passe est obtenu à partir de la base de donnée
 +  passdb {
 +    driver = sql
 +    args = /etc/dovecot/dovecot-sql.conf.ext
 +  }
 +  
 +  # Par contre le nom d'utilisateur est obtenu de manière statique à partir du conteneur local
 +  # %d = kenny.ovh
 +  # %n = utilisateur
 +  userdb {
 +    driver = static
 +    args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n
 +  }
  
-# vim /etc/dovecot/conf.d/auth-sql.conf.ext 
- 
-# Le mot de passe est obtenu à partir de la base de donnée 
-passdb { 
-  driver = sql 
-  args = /etc/dovecot/dovecot-sql.conf.ext 
-} 
- 
-# Par contre le nom d'utilisateur est obtenu de manière statique à partir du conteneur local 
-# %d = dams.ovh 
-# %n = utilisateur 
-userdb { 
-  driver = static 
-  args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n 
-} 
 Ensuite editez le fichier dovecot-sql.conf.ext et modifiez les paramètres suivants : Ensuite editez le fichier dovecot-sql.conf.ext et modifiez les paramètres suivants :
 +  # vim /etc/dovecot/dovecot-sql.conf.ext
 +  
 +  # Paramètres de connexion
 +  driver = mysql
 +  connect = host=127.0.0.1 dbname=postfix user=postfix password=MOT DE PASSE
 +  
 +  # Permet de définir l'algorithme de hachage.
 +  # Pour plus d'information: http://wiki2.dovecot.org/Authentication/PasswordSchemes
 +  # /!\ ATTENTION : ne pas oublier de modifier le paramètre $CONF['encrypt'] de PostfixAdmin
 +  default_pass_scheme = MD5-CRYPT
 +  
 +  # Requête de récupération du mot de passe du compte utilisateur
 +  password_query = SELECT password FROM mailbox WHERE username = '%u'
  
-# vim /etc/dovecot/dovecot-sql.conf.ext 
- 
-# Paramètres de connexion 
-driver = mysql 
-connect = host=127.0.0.1 dbname=postfix user=postfix password=MOT DE PASSE 
- 
-# Permet de définir l'algorithme de hachage. 
-# Pour plus d'information: http://wiki2.dovecot.org/Authentication/PasswordSchemes 
-# /!\ ATTENTION : ne pas oublier de modifier le paramètre $CONF['encrypt'] de PostfixAdmin 
-default_pass_scheme = MD5-CRYPT 
- 
-# Requête de récupération du mot de passe du compte utilisateur 
-password_query = SELECT password FROM mailbox WHERE username = '%u' 
 Modifiez les permissions sur le répertoire /etc/dovecot : Modifiez les permissions sur le répertoire /etc/dovecot :
 +  chown -R vmail:dovecot /etc/dovecot
 +  chmod -R o-rwx /etc/dovecot
  
-chown -R vmail:dovecot /etc/dovecot 
-chmod -R o-rwx /etc/dovecot 
 Editer le fichier 10-master.conf avec le contenu suivant : Editer le fichier 10-master.conf avec le contenu suivant :
- +  # vim /etc/dovecot/conf.d/10-master.conf 
-# vim /etc/dovecot/conf.d/10-master.conf +   
- +  service imap-login { 
-service imap-login { +   
- +    inet_listener imap { 
-  inet_listener imap { +      port = 143 
-    port = 143+    } 
 +   
 +    inet_listener imaps { 
 +      port = 993 
 +      ssl = yes 
 +    } 
 +   
 +    service_count = 0 
 +  
   }   }
- +   
-  inet_listener imaps +  service imap 
-    port = 993 +  
-    ssl = yes+
   }   }
- +   
-  service_count = 0 +  service lmtp { 
- +   
-+    # On autorise Postfix à transférer les emails dans le spooler de Dovecot via LMTP 
- +    unix_listener /var/spool/postfix/private/dovecot-lmtp { 
-service imap { +        mode = 0600 
- +        user = postfix 
-+        group = postfix 
- +    } 
-service lmtp { +  
- +
-  # On autorise Postfix à transférer les emails dans le spooler de Dovecot via LMTP +
-  unix_listener /var/spool/postfix/private/dovecot-lmtp { +
-      mode = 0600 +
-      user = postfix +
-      group = postfix+
   }   }
- +   
-+  service auth { 
- +   
-service auth { +    # On autorise Postfix à se connecter à Dovecot via LMTP 
- +    unix_listener /var/spool/postfix/private/auth { 
-  # On autorise Postfix à se connecter à Dovecot via LMTP +        mode = 0666 
-  unix_listener /var/spool/postfix/private/auth { +        user = postfix 
-      mode = 0666 +        group = postfix 
-      user = postfix +    } 
-      group = postfix+   
 +    # On indique à Dovecot les permissions du conteneur local 
 +    unix_listener auth-userdb { 
 +        mode = 0600 
 +        user = vmail 
 +        group = vmail 
 +    } 
 +   
 +    user = dovecot 
 +  
   }   }
- +   
-  # On indique à Dovecot les permissions du conteneur local +  service auth-worker 
-  unix_listener auth-userdb +   
-      mode = 0600 +    user = vmail 
-      user = vmail +  
-      group = vmail+
   }   }
  
-  user = dovecot 
- 
-} 
- 
-service auth-worker { 
- 
-  user = vmail 
- 
-} 
 Enfin, editez le fichier 10-ssl.conf et modifiez les paramètres suivants : Enfin, editez le fichier 10-ssl.conf et modifiez les paramètres suivants :
 +  # vim /etc/dovecot/conf.d/10-ssl.conf
 +  
 +  ssl = required
 +  ssl_cert = </etc/ssl/certs/mailserver.crt
 +  ssl_key = </etc/ssl/private/mailserver.key
 +  ssl_protocols = !SSLv3
 +  ssl_cipher_list = ALL:!aNULL:!eNULL:!LOW:!MEDIUM:!EXP:!RC2:!RC4:!DES:!3DES:!MD5:!PSK:!SRP:!DSS:!AECDH:!ADH:@STRENGTH
 +  ssl_prefer_server_ciphers = yes # Dovecot > 2.2.x
 +  ssl_dh_parameters_length = 2048 # Dovecot > 2.2.x
  
-# vim /etc/dovecot/conf.d/10-ssl.conf 
- 
-ssl = required 
-ssl_cert = </etc/ssl/certs/mailserver.crt 
-ssl_key = </etc/ssl/private/mailserver.key 
-ssl_protocols = !SSLv3 
-ssl_cipher_list = ALL:!aNULL:!eNULL:!LOW:!MEDIUM:!EXP:!RC2:!RC4:!DES:!3DES:!MD5:!PSK:!SRP:!DSS:!AECDH:!ADH:@STRENGTH 
-ssl_prefer_server_ciphers = yes # Dovecot > 2.2.x 
-ssl_dh_parameters_length = 2048 # Dovecot > 2.2.x 
 Si un jour vous oubliez le mot de passe du compte administrateur, cette procédure permet de le changer : Si un jour vous oubliez le mot de passe du compte administrateur, cette procédure permet de le changer :
 +  # On génère le hash correspondant au mot de passe
 +  doveadm pw -s MD5-CRYPT -p MOT_DE_PASSE | sed 's/{MD5-CRYPT}//'
 +  
 +  mysql -u root -p
 +  
 +  mysql> connect postfix
 +  mysql> UPDATE admin SET password = 'HASH' WHERE username = 'admin@domain.tld';
 +  
 +  Query OK, 1 row affected (0.00 sec)
 +  Rows matched: 1  Changed: 1  Warnings: 0
 +  
 +  mysql> quit
  
-# On génère le hash correspondant au mot de passe +==== 7 Redémarrage des services et vérification des ports ====
-doveadm pw -s MD5-CRYPT -p MOT_DE_PASSE | sed 's/{MD5-CRYPT}//'+
  
-mysql -u root -p 
- 
-mysql> connect postfix 
-mysql> UPDATE admin SET password = 'HASH' WHERE username = 'admin@domain.tld'; 
- 
-Query OK, 1 row affected (0.00 sec) 
-Rows matched: 1  Changed: 1  Warnings: 0 
- 
-mysql> quit 
-7 - Redémarrage des services et vérification des ports 
 On redémarre Postfix et Dovecot : On redémarre Postfix et Dovecot :
 +  service postfix restart
 +  service dovecot restart
  
-service postfix restart 
-service dovecot restart 
 Puis on vérifie que les ports 25 (SMTP), 587 (SMTPS) et 993 (IMAPS) sont bien en écoute sur 0.0.0.0. N'oubliez pas de les ouvrir au niveau de votre Firewall : Puis on vérifie que les ports 25 (SMTP), 587 (SMTPS) et 993 (IMAPS) sont bien en écoute sur 0.0.0.0. N'oubliez pas de les ouvrir au niveau de votre Firewall :
 +  netstat -ptna
 +  [...]
 +  tcp 0 0 0.0.0.0:25 0.0.0.0: LISTEN 4995/master 
 +  tcp 0 0 0.0.0.0:587 0.0.0.0: LISTEN 4995/master 
 +  
 +  tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 5030/dovecot
 +  [...]
  
-netstat -ptna 
-[...] 
-tcp 0 0 0.0.0.0:25 0.0.0.0: LISTEN 4995/master  
-tcp 0 0 0.0.0.0:587 0.0.0.0: LISTEN 4995/master  
- 
-tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 5030/dovecot 
-[...] 
 On peut faire un petit essai via telnet avec la commande suivante depuis le serveur : On peut faire un petit essai via telnet avec la commande suivante depuis le serveur :
 +  telnet localhost 25
 +  # Puis faites lui un petit coucou <3
 +  ehlo localhost 
  
-telnet localhost 25 
-# Puis faites lui un petit coucou <3 
-ehlo localhost  
 Normalement si tout se passe bien, vous allez obtenir la réponse suivante : Normalement si tout se passe bien, vous allez obtenir la réponse suivante :
 +  250-hostname.domain.tld
 +  250-PIPELINING
 +  250-SIZE 10240000
 +  250-VRFY
 +  250-ETRN
 +  250-STARTTLS
 +  250-ENHANCEDSTATUSCODES
 +  250-8BITMIME
 +  250 DSN
  
-250-hostname.domain.tld 
-250-PIPELINING 
-250-SIZE 10240000 
-250-VRFY 
-250-ETRN 
-250-STARTTLS 
-250-ENHANCEDSTATUSCODES 
-250-8BITMIME 
-250 DSN 
 Si vous voyez 250-STARTTLS, c'est que le serveur supporte bien l'authentification par STARTTLS. Si vous voyez 250-STARTTLS, c'est que le serveur supporte bien l'authentification par STARTTLS.
  
-8 - Exemple de configuration d'un client mail : Thunderbird+==== 8 - Exemple de configuration d'un client mail : Thunderbird ==== 
 La configuration du client mail reste relativement simple, il ne faut juste pas se tromper de port : La configuration du client mail reste relativement simple, il ne faut juste pas se tromper de port :
 +  serveur de reception IMAP : smtp.kenny.ovh | le port est 993 chiffrement SSL/TLS
 +  serveur d'envoi SMTP : smtp.kenny.ovh | le port est 587 chiffrement STARTTLS
  
-serveur de reception IMAP : smtp.dams.ovh | le port est 993 chiffrement SSL/TLS +==== 9 - Tests de fonctionnement ====
-serveur d'envoi SMTP : smtp.dams.ovh | le port est 587 chiffrement STARTTLS +
-9 - Tests de fonctionnement+
 On va regarder les logs pour pour voir si il n'y a pas de soucis au niveau de la configuration du serveur mail. On va regarder les logs pour pour voir si il n'y a pas de soucis au niveau de la configuration du serveur mail.
  
-Premier test : connexion via IMAP+__Premier test : connexion via IMAP__
  
 Pour réaliser ce test, vous avez juste à ouvrir votre client mail pour que la connexion se fasse. En même temps, exécutez la commande suivante sur votre serveur : Pour réaliser ce test, vous avez juste à ouvrir votre client mail pour que la connexion se fasse. En même temps, exécutez la commande suivante sur votre serveur :
 +  tail -f /var/log/mail.log
  
-tail -f /var/log/mail.log 
 Si vous avez les deux lignes suivantes c'est que la connexion IMAP/TLS est OK (ouf 😛) Si vous avez les deux lignes suivantes c'est que la connexion IMAP/TLS est OK (ouf 😛)
 +  Aug 16 19:37:11 hostname dovecot: auth-worker(xxx): mysql(127.0.0.1): Connected to database postfix
 +  Aug 16 19:37:11 hostname dovecot: imap-login: Login: user=<kenny@kenny.ovh>, method=PLAIN, rip=ADRESSE IP 
 +  CLIENT, lip=ADRESSE IP SERVEUR, mpid=xxx, TLS, session=<xxxxxxxx>
  
-Aug 16 19:37:11 hostname dovecot: auth-worker(xxx): mysql(127.0.0.1): Connected to database postfix +__Deuxième test : envoie par SMTP__
-Aug 16 19:37:11 hostname dovecot: imap-login: Login: user=<damien@dams.ovh>, method=PLAIN, rip=ADRESSE IP  +
-CLIENT, lip=ADRESSE IP SERVEUR, mpid=xxx, TLS, session=<xxxxxxxx> +
-Deuxième test : envoie par SMTP+
  
 Si vous avez les lignes suivantes dans le fichiers mail.log, c'est que la connexion SASL et l'envoie par SMTPS sont OK (ça c'est cool :lol)🙂 Si vous avez les lignes suivantes dans le fichiers mail.log, c'est que la connexion SASL et l'envoie par SMTPS sont OK (ça c'est cool :lol)🙂
 +  Aug 16 19:54:13 hostname postfix/submission/smtpd[xxx]: connect from [VOTRE ADRESSE IP]
 +  Aug 16 19:54:14 hostname dovecot: auth-worker(xxx): mysql(127.0.0.1): Connected to database postfix
 +  Aug 16 19:54:14 hostname postfix/submission/smtpd[xxx]: client=[VOTRE ADRESSE IP], sasl_method=PLAIN, 
 +  sasl_username=kenny.kenny@gmail.com
 +  Aug 16 19:54:15 hostname postfix/smtp[xxx]: to=<kenny@kenny.ovh>, relay=[ADRESSE IP RELAI]:25, status=sent (250 OK)
  
-Aug 16 19:54:13 hostname postfix/submission/smtpd[xxx]: connect from [VOTRE ADRESSE IP] +__Troisième test : réception par IMAP__
-Aug 16 19:54:14 hostname dovecot: auth-worker(xxx): mysql(127.0.0.1): Connected to database postfix +
-Aug 16 19:54:14 hostname postfix/submission/smtpd[xxx]: client=[VOTRE ADRESSE IP], sasl_method=PLAIN,  +
-sasl_username=damien.cel@gmail.com +
-Aug 16 19:54:15 hostname postfix/smtp[xxx]: to=<damien@dams.ovh>, relay=[ADRESSE IP RELAI]:25, status=sent (250 OK) +
-Troisième test : réception par IMAP+
  
 Si vous avez les lignes suivantes dans le fichiers mail.log, c'est que la réception par IMAP et le transfert de l'email par LMTP sont bons aussi. Si vous avez les lignes suivantes dans le fichiers mail.log, c'est que la réception par IMAP et le transfert de l'email par LMTP sont bons aussi.
 +  Aug 16 20:04:58 hostname postfix/smtpd[xxx]: Anonymous TLS connection established from smtp.kenny.ovh: TLSv1 with 
 +  cipher ECDHE-RSA-RC4-SHA (128/128 bits)
 +  Aug 16 20:05:00 hostname postfix/qmgr[xxx]: from=<kenny@kenny.ovh>, size=1748, nrcpt=1 (queue active)
 +  Aug 16 20:05:01 hostname dovecot: lmtp(xxx, kenny.kenny@gmail.com): saved mail to INBOX
 +  Aug 16 20:05:01 hostname postfix/lmtp[xxx]: to=<kenny.kenny@gmail.com>, 
 +  relay=smtp.kenny.ovh[private/dovecot-lmtp], status=sent (250 2.0.0 <kenny.kenny@gmail.com> Saved)
  
-Aug 16 20:04:58 hostname postfix/smtpd[xxx]: Anonymous TLS connection established from smtp.dams.ovh: TLSv1 with  +==== 10 - Test d'indésirabilité (spam) de vos emails :====
-cipher ECDHE-RSA-RC4-SHA (128/128 bits) +
-Aug 16 20:05:00 hostname postfix/qmgr[xxx]: from=<damien@dams.ovh>, size=1748, nrcpt=1 (queue active) +
-Aug 16 20:05:01 hostname dovecot: lmtp(xxx, damien.cel@gmail.com): saved mail to INBOX +
-Aug 16 20:05:01 hostname postfix/lmtp[xxx]: to=<damien.cel@gmail.com>,  +
-relay=smtp.dams.ovh[private/dovecot-lmtp], status=sent (250 2.0.0 <damien.cel@gmail.com> Saved) +
-10 - Test d'indésirabilité (spam) de vos emails : +
-Allez sur ce site : http://www.mail-tester.com/ et envoyez un email à l'adresse indiquée en page d'accueil et vérifiez votre score. Normalement il ne devrait pas être suffisant pour que vous puissiez envoyer sereinement vos emails partout dans le monde. La première fois, je me suis pris 2.6/10 +
  
 +Allez sur ce site : [[http://www.mail-tester.com/]] et envoyez un email à l'adresse indiquée en page d'accueil et vérifiez votre score. Normalement il ne devrait pas être suffisant pour que vous puissiez envoyer sereinement vos emails partout dans le monde. La première fois, je me suis pris 2.6/10
  
 Vous obtiendrez la note maximum, si et seulement si : Vous obtiendrez la note maximum, si et seulement si :
 +  * Votre message est sain et bien formaté
 +  * Votre serveur n'est pas blacklisté
 +  * Votre reverse / FQDN est correctement configuré
 +  * DKIM (DomainKeys Identified Mail) est installé et configuré sur votre serveur
 +  * Le champ Sender Policy Framework (SPF) est mis en place dans le fichier de zone de votre domaine
 +  * Le champ MX est mis en place dans le fichier de zone de votre domaine
 +
 +==== 11 - Installation et configuration d'OpenDKIM ====
  
-Votre message est sain et bien formaté 
-Votre serveur n'est pas blacklisté 
-Votre reverse / FQDN est correctement configuré 
-DKIM (DomainKeys Identified Mail) est installé et configuré sur votre serveur 
-Le champ Sender Policy Framework (SPF) est mis en place dans le fichier de zone de votre domaine 
-Le champ MX est mis en place dans le fichier de zone de votre domaine 
-11 - Installation et configuration d'OpenDKIM 
 DKIM est un standard permettant d'associer de manière forte une entité ou une organisation avec un domaine au sein d'un email. On se déclare donc complètement responsable de la transmission du message sur le réseau. DKIM fonctionne par cryptographie asymétrique, le MTA (Mail Transfer Agent, dans notre cas il s'agit de Postfix) se charge de signer numériquement tous les emails envoyés avec une clé privée contenue sur le serveur. Le destinataire peut alors vérifier l'intégrité du corps ainsi que les en-têtes du message grâce à la clé publique fournie par le domainkey, qui est un champ TXT contenu dans les fichiers de zone de vos DNS. DKIM est un standard permettant d'associer de manière forte une entité ou une organisation avec un domaine au sein d'un email. On se déclare donc complètement responsable de la transmission du message sur le réseau. DKIM fonctionne par cryptographie asymétrique, le MTA (Mail Transfer Agent, dans notre cas il s'agit de Postfix) se charge de signer numériquement tous les emails envoyés avec une clé privée contenue sur le serveur. Le destinataire peut alors vérifier l'intégrité du corps ainsi que les en-têtes du message grâce à la clé publique fournie par le domainkey, qui est un champ TXT contenu dans les fichiers de zone de vos DNS.
  
 On commence par installer OpenDKIM : On commence par installer OpenDKIM :
 +  apt-get install opendkim opendkim-tools
  
-apt-get install opendkim opendkim-tools 
 Editez le fichier de configuration opendkim.conf avec le contenu suivant : Editez le fichier de configuration opendkim.conf avec le contenu suivant :
 +  # vim /etc/opendkim.conf
 +  
 +  AutoRestart             Yes
 +  AutoRestartRate         10/1h
 +  UMask                   002
 +  Syslog                  Yes
 +  SyslogSuccess           Yes
 +  LogWhy                  Yes
 +  
 +  OversignHeaders         From
 +  AlwaysAddARHeader       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
 +  SignatureAlgorithm      rsa-sha256
 +  
 +  UserID                  opendkim:opendkim
 +  
 +  Socket                  local:/var/spool/postfix/opendkim/opendkim.sock
  
-# vim /etc/opendkim.conf 
- 
-AutoRestart             Yes 
-AutoRestartRate         10/1h 
-UMask                   002 
-Syslog                  Yes 
-SyslogSuccess           Yes 
-LogWhy                  Yes 
- 
-OversignHeaders         From 
-AlwaysAddARHeader       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 
-SignatureAlgorithm      rsa-sha256 
- 
-UserID                  opendkim:opendkim 
- 
-Socket                  local:/var/spool/postfix/opendkim/opendkim.sock 
 Pour que Postfix puisse communiquer avec OpenDKIM, on va utiliser un socket, il faut créer le répertoire /var/spool/postfix/opendkim Pour que Postfix puisse communiquer avec OpenDKIM, on va utiliser un socket, il faut créer le répertoire /var/spool/postfix/opendkim
 +  mkdir /var/spool/postfix/opendkim
 +  chown opendkim: /var/spool/postfix/opendkim
 +  usermod -aG opendkim postfix
  
-mkdir /var/spool/postfix/opendkim 
-chown opendkim: /var/spool/postfix/opendkim 
-usermod -aG opendkim postfix 
 Ensuite on doit indiquer à Postfix comment s'interfacer avec OpenDKIM. Pour cela, editer le fichier main.cf et ajouter les lignes suivantes à fin du fichier de configuration : Ensuite on doit indiquer à Postfix comment s'interfacer avec OpenDKIM. Pour cela, editer le fichier main.cf et ajouter les lignes suivantes à fin du fichier de configuration :
 +  # vim /etc/postfix/main.cf
 +  
 +  milter_protocol = 6
 +  milter_default_action = accept
 +  smtpd_milters = unix:/opendkim/opendkim.sock
 +  non_smtpd_milters = unix:/opendkim/opendkim.sock
  
-# vim /etc/postfix/main.cf 
- 
-milter_protocol = 6 
-milter_default_action = accept 
-smtpd_milters = unix:/opendkim/opendkim.sock 
-non_smtpd_milters = unix:/opendkim/opendkim.sock 
 Créér le répertoire suivant : Créér le répertoire suivant :
 +  mkdir -p /etc/opendkim/keys
  
-mkdir -p /etc/opendkim/keys 
 Ajoutez le fichier TrustedHosts avec le contenu suivant : Ajoutez le fichier TrustedHosts avec le contenu suivant :
 +  # vim /etc/opendkim/TrustedHosts
 +  
 +  127.0.0.1
 +  localhost
 +  ::1
 +  *.kenny.ovh
  
-# vim /etc/opendkim/TrustedHosts +N'oubliez pas de modifier **kenny.ovh** par votre nom de domaine.
- +
-127.0.0.1 +
-localhost +
-::1 +
-*.dams.ovh +
-N'oubliez pas de modifier dams.ovh par votre nom de domaine.+
  
 Ajoutez le fichier KeyTable avec le contenu suivant. Dans cet exemple, nous utiliserons un sélecteur nommé mail. Vous pouvez le nommer comme vous le souhaitez. Ajoutez le fichier KeyTable avec le contenu suivant. Dans cet exemple, nous utiliserons un sélecteur nommé mail. Vous pouvez le nommer comme vous le souhaitez.
 +  # vim /etc/opendkim/KeyTable
 +  
 +  mail._domainkey.kenny.ovh kenny.ovh:mail:/etc/opendkim/keys/kenny.ovh/mail.private
  
-# vim /etc/opendkim/KeyTable 
- 
-mail._domainkey.dams.ovh dams.ovh:mail:/etc/opendkim/keys/dams.ovh/mail.private 
 Ajoutez le fichier SigningTable avec le contenu suivant : Ajoutez le fichier SigningTable avec le contenu suivant :
 +  # vim /etc/opendkim/SigningTable
 +  
 +  *@kenny.ovh mail._domainkey.kenny.ovh
  
-# vim /etc/opendkim/SigningTable 
- 
-*@dams.ovh mail._domainkey.dams.ovh 
 Création de la clé publique et privée Création de la clé publique et privée
  
 Création du répertoire qui contiendra les clés : Création du répertoire qui contiendra les clés :
 +  cd /etc/opendkim/keys
 +  mkdir kenny.ovh && cd kenny.ovh
  
-cd /etc/opendkim/keys 
-mkdir dams.ovh && cd dams.ovh 
 Génération des clés de chiffrement : Génération des clés de chiffrement :
 +  # Paramètres : -s [sélecteur] -d [nom de domaine] -b [taille de la clé]
 +
 +  opendkim-genkey -s mail -d kenny.ovh -b 1024
  
-# Paramètres : -s [sélecteur] -d [nom de domaine] -b [taille de la clé] 
-opendkim-genkey -s mail -d dams.ovh -b 1024 
 Certains registrars n'acceptent pas les clés > 1024 bits donc pensez à changer le paramètre au-dessus si besoin. Certains registrars n'acceptent pas les clés > 1024 bits donc pensez à changer le paramètre au-dessus si besoin.
  
 Modification des permissions de la clé privée : Modification des permissions de la clé privée :
 +  chown opendkim:opendkim mail.private
  
-chown opendkim:opendkim mail.private 
 Les permissions doivent être les suivantes (chmod 400) : Les permissions doivent être les suivantes (chmod 400) :
 +  ls -lX /etc/opendkim/keys/kenny.ovh/
 +  
 +  -rw------- 1 opendkim opendkim 887 août  16 11:28 mail.private
 +  -rw------- 1 root     root     305 août  16 11:28 mail.txt
  
-ls -lX /etc/opendkim/keys/dams.ovh/ 
- 
--rw------- 1 opendkim opendkim 887 août  16 11:28 mail.private 
--rw------- 1 root     root     305 août  16 11:28 mail.txt 
 Modification des DNS : Ajout de la clé publique Modification des DNS : Ajout de la clé publique
  
 Copiez le contenu du fichier mail.txt (la clé publique) : Copiez le contenu du fichier mail.txt (la clé publique) :
 +  cat mail.txt
  
-cat mail.txt 
 Le format de l'enregistrement DKIM est comme ceci : Le format de l'enregistrement DKIM est comme ceci :
 +  mail._domainkey IN TXT "v=DKIM1; k=rsa; p=VOTRE CLE PUBLIQUE"
  
-mail._domainkey IN TXT "v=DKIM1; k=rsa; p=VOTRE CLE PUBLIQUE" 
 Et pour finir, on redémarre tous les services : Et pour finir, on redémarre tous les services :
 +  service postfix  restart
 +  service dovecot  restart
 +  service opendkim restart
  
-service postfix  restart 
-service dovecot  restart 
-service opendkim restart 
 Vous pouvez exécuter les commandes suivantes pour que les services démarrent automatiquement lors du boot : Vous pouvez exécuter les commandes suivantes pour que les services démarrent automatiquement lors du boot :
 +  update-rc.d postfix  defaults
 +  update-rc.d dovecot  defaults
 +  update-rc.d opendkim defaults
  
-update-rc.d postfix  defaults 
-update-rc.d dovecot  defaults 
-update-rc.d opendkim defaults 
 ou (suivant votre version de Debian) ou (suivant votre version de Debian)
 +  systemctl enable postfix.service
 +  systemctl enable dovecot.service
 +  systemctl enable opendkim.service
  
-systemctl enable postfix.service 
-systemctl enable dovecot.service 
-systemctl enable opendkim.service 
 Attendez quelques minutes la propagation des DNS. Vous pouvez vérifier que le champ domainkey est bien visible en exécutant la commande suivante à partir de votre pc : Attendez quelques minutes la propagation des DNS. Vous pouvez vérifier que le champ domainkey est bien visible en exécutant la commande suivante à partir de votre pc :
 +  host -t TXT mail._domainkey.kenny.ovh
  
-host -t TXT mail._domainkey.dams.ovh 
 Si elle retourne ce message : Si elle retourne ce message :
 +  Host mail._domainkey.kenny.ovh not found: (NXDOMAIN)
  
-Host mail._domainkey.dams.ovh not found: (NXDOMAIN) 
 C'est que vos DNS ne se sont pas encore propagés sur les serveurs de votre FAI, patientez encore un peu. C'est que vos DNS ne se sont pas encore propagés sur les serveurs de votre FAI, patientez encore un peu.
  
-Pour tester le bon fonctionnement d'OpenDKIM, utilisez le site que l'on a vu tout à l'heure : http://www.mail-tester.com/+Pour tester le bon fonctionnement d'OpenDKIM, utilisez le site que l'on a vu tout à l'heure : [[http://www.mail-tester.com/]] 
 + 
 +==== 12 - Ajouter un enregistrement SPF (Sender Policy Framework) ==== 
 +  Wikipédia : 
 +  Sender Policy Framework (SPF) est une norme de vérification du nom de domaine de l'expéditeur d'un courrier  
 +  électronique, normalisé dans la RFC 7208. L'adoption de cette norme est de nature à réduire le spam.
  
-12 - Ajouter un enregistrement SPF (Sender Policy Framework) 
-Wikipédia : 
-Sender Policy Framework (SPF) est une norme de vérification du nom de domaine de l'expéditeur d'un courrier  
-électronique, normalisé dans la RFC 7208. L'adoption de cette norme est de nature à réduire le spam. 
 Ajoutez cette ligne dans le fichier de zone de votre nom de domaine : Ajoutez cette ligne dans le fichier de zone de votre nom de domaine :
 +  @        IN      TXT     "v=spf1 a mx ip4:ADRESSE IP DE VOTRE SERVEUR ~all"
  
-@        IN      TXT     "v=spf1 a mx ip4:ADRESSE IP DE VOTRE SERVEUR ~all" +Vous pouvez maintenant refaire un test sur ce site : [[http://www.mail-tester.com/]]
-Vous pouvez maintenant refaire un test sur ce site : http://www.mail-tester.com/+
  
 Si tout est bon, vous devriez avoir 10/10 : Si tout est bon, vous devriez avoir 10/10 :
  
 +{{:mail3.jpg?400|}}
  
 +==== 13 - DMARC (Domain-based Message Authentication, Reporting & Conformance) ====
  
-13 - DMARC (Domain-based Message Authentication, Reporting & Conformance) +DMARC est une spécification technique assez récente (2011), qui est toujours en draft par l'IETF [[https://datatracker.ietf.org/doc/rfc7489/]], les contributeurs initiaux sont un consortium de plusieurs géants d'internet comme AOL, Yahoo, Google, Microsoft, Paypal, Facebook...etc. Cette spécification permet de réduire l'usage abusif des e-mails, tels que le spam, le phishing en ajoutant une couche supplémentaire dans le processus d'authentification des mails.
-DMARC est une spécification technique assez récente (2011), qui est toujours en draft par l'IETF https://datatracker.ietf.org/doc/rfc7489/, les contributeurs initiaux sont un consortium de plusieurs géants d'internet comme AOL, Yahoo, Google, Microsoft, Paypal, Facebooketc. Cette spécification permet de réduire l'usage abusif des e-mails, tels que le spam, le phishing en ajoutant une couche supplémentaire dans le processus d'authentification des mails.+
  
 En fait ce mécanisme utilise DKIM et SPF et permet d'informer les autres fournisseurs de mail des actions à entreprendre lorsqu'ils reçoivent un mail provenant de notre domaine. C'est peut-être pas très clair dit comme ça, mais c'est pas compliqué, prenons un exemple : En fait ce mécanisme utilise DKIM et SPF et permet d'informer les autres fournisseurs de mail des actions à entreprendre lorsqu'ils reçoivent un mail provenant de notre domaine. C'est peut-être pas très clair dit comme ça, mais c'est pas compliqué, prenons un exemple :
  
-Vous envoyez un mail à partir de votre adresse @dams.ovh à un amis qui est chez Gmail. Google vas donc utiliser DMARC et demander à votre serveur ce qu'il doit faire lorsqu'il reçoit un mail appartenant à votre domaine. Votre serveur répond qu'il doit vérifier la validité de DKIM et SPF, si tout est valide le mail est envoyé au destinataire sinon il est soit mis en quarantaine (dossier spam), soit il n'est pas du tout envoyé (blocké au niveau de la couche smtp).+Vous envoyez un mail à partir de votre adresse @kenny.ovh à un amis qui est chez Gmail. Google vas donc utiliser DMARC et demander à votre serveur ce qu'il doit faire lorsqu'il reçoit un mail appartenant à votre domaine. Votre serveur répond qu'il doit vérifier la validité de DKIM et SPF, si tout est valide le mail est envoyé au destinataire sinon il est soit mis en quarantaine (dossier spam), soit il n'est pas du tout envoyé (blocké au niveau de la couche smtp).
  
 Voici un ptit schéma : Voici un ptit schéma :
  
 +{{ :mail_server4.jpg?direct&600 |}}
  
 Les règles de DMARC sont stockés dans un enregistrement de type TXT dans le fichier de zone de votre nom de domaine, exemple : Les règles de DMARC sont stockés dans un enregistrement de type TXT dans le fichier de zone de votre nom de domaine, exemple :
  
-NE PAS METTRE L'ENREGISTREMENT DMARC SI VOUS N'ÊTES PAS CERTAIN DU FONCTIONNEMENT DE SPF ET DKIM. SINON LES FOURNISSEURS DE MAILS QUI RESPECTENT LES IDENTIFICATEURS D'ALIGNEMENT DMARC (GMAIL, MICROSOFT ENTRE AUTRE) VONT BLOQUER VOTRE DOMAINE PAR PRÉCAUTION. SI VOUS NE COMPRENEZ PAS À QUOI ÇA SERT, NE LE METTEZ PAS !+''NE PAS METTRE L'ENREGISTREMENT DMARC SI VOUS N'ÊTES PAS CERTAIN DU FONCTIONNEMENT DE SPF ET DKIM. SINON LES FOURNISSEURS DE MAILS QUI RESPECTENT LES IDENTIFICATEURS D'ALIGNEMENT DMARC (GMAIL, MICROSOFT ENTRE AUTRE) VONT BLOQUER VOTRE DOMAINE PAR PRÉCAUTION. SI VOUS NE COMPRENEZ PAS À QUOI ÇA SERT, NE LE METTEZ PAS !'' 
 +  _dmarc  IN  TXT " 
 +    v=DMARC1;  
 +    p=reject;  
 +    rua=mailto:postmaster@kenny.ovh;  
 +    ruf=mailto:admin@kenny.ovh;  
 +    adkim=s; 
 +    aspf=s;  
 +    pct=100;  
 +    rf=afrf;  
 +    sp=reject 
 +  "
  
-_dmarc  IN  TXT " +Pour plus de clarté, j'ai sauté une ligne après chaque paramètre, mettez tout sur une ligne dans votre fichier de zone. 
-  v=DMARC1 +Bon quelques explications s'imposent par rapport aux paramètres non ?  
-  p=reject + 
-  rua=mailto:postmaster@dams.ovh;  +  * dmarc : L'enregistrement contenant votre politique vis à vis de DMARC se nomme dmarc, donc il correspond au sous domaine : _dmarc.kenny.ovh.tld 
-  ruf=mailto:admin@dams.ovh;  +  v=DMARC1 : Version du protocole 
-  adkim=s; +  p=reject : Bloquer les mails qui ne respectent pas les identificateurs d'alignement 
-  aspf=s +  rua=mailto : Aggregate reports - Adresse mail qui recevra les rapports des autres providers (gmail, outlook...etc) concernant DMARC comme les résultats d'authentification, les actions nécessaires à entreprendre pour corriger les soucis avec votre domaine...etc 
-  pct=100 +  ruf=mailto : Failure report ou Forensic reports - Adresse mail qui recevra les alertes concernant DMARC (échec d'authentification....etc) 
-  rf=afrf +  adkim=s : Identificateur d'alignement DKIM, s = strict ( Organizational Domain configuré au sein de DKIM doit être strictement égal au "From Domain" ) 
-  sp=reject +  aspf=s : Identificateur d'alignement SFP, s = strict ( Organizational Domain configuré au sein de SPF doit être strictement égal au "From Domain" ) 
-+  pct=100 : Pourcentage des messages sujet au filtrage DMARC 
-Pour plus de clarté, j'ai sauté une ligne après chaque paramètre, mettez tout sur une ligne dans votre fichier de zone. Bon quelques explications s'imposent par rapport aux paramètres non ?+  rf=afrf : Authentication Failure Reporting Format - Format du rapport d'erreur 
 +  sp=reject : Politique concernant les sous-domaines (voir p=reject plus haut)
  
-dmarc : L'enregistrement contenant votre politique vis à vis de DMARC se nomme dmarc, donc il correspond au sous domaine : _dmarc.dams.ovh.tld 
-v=DMARC1 : Version du protocole 
-p=reject : Bloquer les mails qui ne respectent pas les identificateurs d'alignement 
-rua=mailto : Aggregate reports - Adresse mail qui recevra les rapports des autres providers (gmail, outlook…etc) concernant DMARC comme les résultats d'authentification, les actions nécessaires à entreprendre pour corriger les soucis avec votre domaine…etc 
-ruf=mailto : Failure report ou Forensic reports - Adresse mail qui recevra les alertes concernant DMARC (échec d'authentification….etc) 
-adkim=s : Identificateur d'alignement DKIM, s = strict ( Organizational Domain configuré au sein de DKIM doit être strictement égal au “From Domain” ) 
-aspf=s : Identificateur d'alignement SFP, s = strict ( Organizational Domain configuré au sein de SPF doit être strictement égal au “From Domain” ) 
-pct=100 : Pourcentage des messages sujet au filtrage DMARC 
-rf=afrf : Authentication Failure Reporting Format - Format du rapport d'erreur 
-sp=reject : Politique concernant les sous-domaines (voir p=reject plus haut) 
 L'implémentation côté serveur est sensiblement similaire à OpenDKIM. L'implémentation côté serveur est sensiblement similaire à OpenDKIM.
 +  apt-get install opendmarc
  
-apt-get install opendmarc 
 Editer le fichier de configuration opendmarc.conf avec le contenu suivant : Editer le fichier de configuration opendmarc.conf avec le contenu suivant :
 +  # vim /etc/opendmarc.conf
 +  
 +  AutoRestart             Yes
 +  AutoRestartRate         10/1h
 +  UMask                   0002
 +  Syslog                  true
 +  
 +  AuthservID              "smtp.kenny.ovh"
 +  TrustedAuthservIDs      "smtp.kenny.ovh"
 +  IgnoreHosts             /etc/opendkim/TrustedHosts
 +  IgnoreMailFrom          "kenny.ovh"
 +  RejectFailures          false
 +  
 +  UserID                  opendmarc:opendmarc
 +  PidFile                 /var/run/opendmarc/opendmarc.pid
 +  Socket                  local:/var/spool/postfix/opendmarc/opendmarc.sock
  
-# vim /etc/opendmarc.conf 
- 
-AutoRestart             Yes 
-AutoRestartRate         10/1h 
-UMask                   0002 
-Syslog                  true 
- 
-AuthservID              "smtp.dams.ovh" 
-TrustedAuthservIDs      "smtp.dams.ovh" 
-IgnoreHosts             /etc/opendkim/TrustedHosts 
-IgnoreMailFrom          "dams.ovh" 
-RejectFailures          false 
- 
-UserID                  opendmarc:opendmarc 
-PidFile                 /var/run/opendmarc/opendmarc.pid 
-Socket                  local:/var/spool/postfix/opendmarc/opendmarc.sock 
 Pour que Postfix puisse communiquer avec Opendmarc, on va utiliser un socket, il faut créer le répertoire /var/spool/postfix/opendmarc Pour que Postfix puisse communiquer avec Opendmarc, on va utiliser un socket, il faut créer le répertoire /var/spool/postfix/opendmarc
 +  mkdir /var/spool/postfix/opendmarc
 +  chown opendmarc: /var/spool/postfix/opendmarc
 +  usermod -aG opendmarc postfix
  
-mkdir /var/spool/postfix/opendmarc 
-chown opendmarc: /var/spool/postfix/opendmarc 
-usermod -aG opendmarc postfix 
 Ensuite dans le fichier /etc/postfix/main.cf, editer cette ligne : Ensuite dans le fichier /etc/postfix/main.cf, editer cette ligne :
 +  smtpd_milters = unix:/opendkim/opendkim.sock, unix:/opendmarc/opendmarc.sock
  
-smtpd_milters = unix:/opendkim/opendkim.sock, unix:/opendmarc/opendmarc.sock 
 Démarrage auto au boot de la VM Démarrage auto au boot de la VM
 +  systemctl enable opendmarc.service
  
-systemctl enable opendmarc.service 
 Puis on redémarre les services : Puis on redémarre les services :
 +  systemctl restart opendmarc
 +  systemctl restart postfix
  
-systemctl restart opendmarc 
-systemctl restart postfix 
  
 ---- ----
Ligne 818: Ligne 846:
 Dans ce mini tutoriel, nous allons voir ensemble comment procéder à la génération d’un certificat et à son installation sur le serveur mail fonctionnant à l’aide du duo Postfix/Dovecot. Dans ce mini tutoriel, nous allons voir ensemble comment procéder à la génération d’un certificat et à son installation sur le serveur mail fonctionnant à l’aide du duo Postfix/Dovecot.
  
-===== Génération du certificat =====+==== Génération du certificat ====
  
-  certbot certonly -d smtp.dams.ovh --email damien@dams.ovh --agree-tos+  certbot certonly -d smtp.kenny.ovh --email kenny@kenny.ovh --agree-tos
  
-===== Renouvellement =====+==== Renouvellement ====
  
   ouvrir le port 80   ouvrir le port 80
Ligne 828: Ligne 856:
   lancer la commande letsencrypt renew   lancer la commande letsencrypt renew
  
-===== Installation dans Postfix =====+==== Installation dans Postfix ====
  
 Pour que votre serveur smtp prenne en charge le certificat précédemment généré, il vous faut modifier le fichier de configuration principal de Postfix. Pour que votre serveur smtp prenne en charge le certificat précédemment généré, il vous faut modifier le fichier de configuration principal de Postfix.
Ligne 838: Ligne 866:
 Localisez et modifiez ces trois lignes: Localisez et modifiez ces trois lignes:
  
-  smtp_tls_CAfile = /etc/letsencrypt/live/smtp.dams.ovh/chain.pem +  smtp_tls_CAfile = /etc/letsencrypt/live/smtp.kenny.ovh/chain.pem 
-  smtpd_tls_cert_file = /etc/letsencrypt/live/smtp.dams.ovh/cert.pem +  smtpd_tls_cert_file = /etc/letsencrypt/live/smtp.kenny.ovh/cert.pem 
-  smtpd_tls_key_file = /etc/letsencrypt/live/smtp.dams.ovh/privkey.pem+  smtpd_tls_key_file = /etc/letsencrypt/live/smtp.kenny.ovh/privkey.pem
  
-===== Installation dans Dovecot =====+==== Installation dans Dovecot ====
  
   vi /etc/dovecot/conf.d/10-ssl.conf   vi /etc/dovecot/conf.d/10-ssl.conf
Ligne 848: Ligne 876:
 Localisez et modifiez les lignes suivantes : Localisez et modifiez les lignes suivantes :
  
-  ssl_cert = /etc/letsencrypt/live/smtp.dams.ovh/fullchain.pem +  ssl_cert = /etc/letsencrypt/live/smtp.kenny.ovh/fullchain.pem 
-  ssl_key = /etc/letsencrypt/live/smtp.dams.ovh/privkey.pem+  ssl_key = /etc/letsencrypt/live/smtp.kenny.ovh/privkey.pem
  
-===== Pour finir =====+==== Pour finir ====
  
 Il ne reste plus qu’à redémarrer Postfix et Dovecot pour qu’ils prennent en charge la nouvelle configuration. Il ne reste plus qu’à redémarrer Postfix et Dovecot pour qu’ils prennent en charge la nouvelle configuration.
serveur_mail.1734006558.txt.gz · Dernière modification : 2024/12/12 13:29 de huracan

DokuWiki Appliance - Powered by TurnKey Linux