19/10/2016 : Ce tutoriel date de 2014 et n'est aujourd'hui plus maintenu faute de temps. Si quelqu'un est intéressé pour le reprendre, faites moi signe par MP. Par contre, je continuerai de faire évoluer et de maintenir l'image Docker https://github.com/hardware/mailserver

Installation sécurisée d'un serveur de mail avec Postfix, Dovecot et Rainloop

Bonjour,

Voici un petit tutoriel pour vous aider à installer un serveur mail sous GNU/Linux. Ce tutoriel a été réalisé sous Debian 7 "wheezy" mais la plupart des commandes peuvent être adaptées pour être utilisées sur d'autres distributions. Cette aide n'est volontairement pas exhaustive car le sujet traité peut-être assez complexe quand on le traite de manière plus approfondi et ainsi garder un tuto plus accessible (et beaucoup moins long...). Bien sur, ce tutoriel s'adresse à des personnes qui ont déjà une bonne expérience en administration système sous Linux car il est très important de comprendre ce que l'on fait afin de mieux réagir en cas de disfonctionnement (surtout dans le cas où l'on se sert tous les jours de son serveur pour envoyer/reçevoir des mails).

A la fin de ce tutoriel, vous devriez normalement être capable d'envoyer et de reçevoir des emails à partir du client web Rainloop ou avec n'importe quel client mail desktop (Thunderbird, outlook, Claws Mail, Evolution...etc) ainsi qu'avec un nombre quasi illimité d'adresses email virtuelles.

Le'ts Go !

Ce tutoriel est compatible avec Debian 7 “wheezy” et Debian 8 “jessie”

Pré-requis :

  • Un nom de domaine (avec un accès aux DNS et fichiers de zone)

  • Nginx

  • PHP

  • OpenSSL

  • MySQL

ATTENTION : Pour suivre ce tuto, il est impératif que vous sachiez comment configurer votre nom de domaine. Connaitre le fonctionnement des DNS (Domain Name System) serait un gros plus. Si ce n'est pas le cas, vous ne pourrez pas suivre ce tutoriel correctement. Allez voir le cours suivant pour apprendre à configurer votre nom de domaine : http://fr.openclassrooms.com/informatique/cours/gerer-son-nom-de-domaine

ATTENTION : Il vous faut un serveur LEMP (Linux, Nginx, MySQL, PHP) fonctionnel avant de continuer. Si ce n'est pas le cas, allez voir un de ces articles. Vous pouvez choisir un serveur web différent de celui utilisé dans ce tutoriel (Nginx) mais ça sera à vous de le configurer correctement.

Pensez aussi à mettre à jour votre système avant de commencer :

apt-get update && apt-get dist-upgrade

Changelog :

Un changelog est disponible sur Github pour que vous puissiez suivre les évolutions du tutoriel facilement.

>> CHANGELOG <<

Script d'auto-installation :

Un script d'installation automatique est disponible dans ce topic : http://mondedie.fr/d/5793/1

Ce script n'est plus maintenu, voir en dessous pour une solution automatisée via Docker.

Image docker :

https://github.com/hardware/mailserver

Schéma :

Voici un schéma représentant l'organisation du serveur mail :

Un petit conseil : à chaque fois que vous vous apprêtez à installer un ensemble de logiciels sur votre serveur, essayez de dessiner le schéma correspondant, d'une part ça va vous faciliter la tâche pour imbriquer les différentes couches logicielles et d'autre part vous aurez une vision plus concrète de ce que vous allez faire.

Configuration du nom d'hôte, du FQDN et du champ MX :

Le nom d'hôte, le FQDN (Fully Qualified Domain Name), et l'enregistrement MX de votre serveur doivent être configurés côté serveur mais aussi au niveau des DNS de votre nom de domaine, si c'est déjà le cas, vous pouvez directement aller à la partie 1, sinon suivez les instructions ci-dessous :

Le nom d'hôte (hostname) est un surnom que vous donnez à un équipement réseau (comme un serveur, un poste de travail, une imprimante...etc) permettant de l'identifier de manière unique au sein d'un réseau local et d'y accéder sans connaître par coeur l'adresse ip associée.
Le FQDN permet de rendre un équipement réseau accessible partout sur internet et de l'identifier aussi de manière unique.

Dans la suite de ce tutoriel, nous allons utiliser les caractéristiques suivantes (à adapter selon votre configuration) :

- Nom de domaine principal : domain.tld
- Nom d'hôte : hostname
- FQDN : hostname.domain.tld
- MX : mail.domain.tld

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 "hostname" > /etc/hostname

Pour modifier le FQDN, il faut editer le fichier /etc/hosts :

# vim /etc/hosts

127.0.0.1 localhost.localdomain localhost
IP DU SERVEUR hostname.domain.tld hostname

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 ou sinon directement avec BIND si votre serveur fait office de serveur DNS.

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 intérroger cette entrée pour savoir où transmettre le message. Donc si cette entrée est pas ou mal définie, vous ne reçevrez jamais d'emails.

A la fin du tutoriel, les enregistrements DNS de votre domaine devront ressembler à ceci :

HOSTNAME            CLASS             RECORD TYPE          VALUE
------------------------------------------------------------------------------------------------
@                   IN                A                    ipv4 du serveur
hostname            IN                A                    ipv4 du serveur
mail                IN                A                    ipv4 du serveur

postfixadmin        IN                CNAME                hostname  
rainloop            IN                CNAME                hostname

@                   IN                MX          10       mail.domain.tld.

; Les enregistrements suivants sont facultatifs :

smtp                IN                CNAME                hostname
imap                IN                CNAME                hostname 

; Les enregistrements suivants sont facultatifs mais permettent de rendre plus crédible
; son serveur mail sur le réseau (aux yeux des autres serveurs de mail comme Gmail, 
; Outlook & co...).

@                   IN                TXT                  "v=spf1 a mx ip4:IPv4 DU SERVEUR ~all"
mail._domainkey     IN                TXT                  "k=rsa; p=CLE PUBLIQUE DKIM"
_dmarc              IN                TXT                  "v=DMARC1; p=reject; rua=mailto:postmaster@domain.tld; ruf=mailto:admin@domain.tld; fo=0; adkim=s; aspf=s; pct=100; rf=afrf; sp=reject"
_domainkey          IN                TXT                  "o=-; r=postmaster@domain.tld"

Rechargez la configuration de BIND en redémarrant le service (ne pas oublier de modifier la valeur du serial pour indiquer que le fichier de zone a été mis à jour !!) :

service bind9 restart

Attendez quelques minutes que les DNS se propagent, vous pouvez suivre l'avancement avec ce site par exemple : https://www.whatsmydns.net/ :

Et pour finir modifiez le reverse depuis l'interface de votre hébergeur, par exemple chez Kimsufi :

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.

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 :

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

# Connexion au serveur MySQL en tant que root
mysql -u root -p

# Création de la base de données "postfix"
mysql> CREATE database postfix;

# Création de l'utilisateur "postfix" et ajout des permissions
mysql> CREATE USER 'postfix'@'localhost' IDENTIFIED BY 'MOT DE PASSE';
mysql> GRANT USAGE ON *.* TO 'postfix'@'localhost';
mysql> GRANT ALL PRIVILEGES ON postfix.* TO 'postfix'@'localhost';

# On quitte la console MySQL
mysql> exit

Vous pouvez aussi passer par phpMyAdmin en créant un nouvel utilisateur nommé postfix qui a tous les privilèges sur la bdd postfix.

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.

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-2.92/postfixadmin-2.92.tar.gz
tar -xzf postfixadmin-2.92.tar.gz
mv postfixadmin-2.92 postfixadmin
rm -rf postfixadmin-2.92.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 :

# 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@domain.tld';
$CONF['domain_path'] = 'YES';
$CONF['domain_in_mailbox'] = 'NO';
$CONF['fetchmail'] = 'NO';

Ajouter un nouveau virtual host Nginx (à adapter selon votre configuration) :

# vim /etc/nginx/sites-enabled/postfixadmin.conf

server {
   listen 80;
   server_name     postfixadmin.domain.tld;
   root            /var/www/postfixadmin;
   index           index.php;
   charset         utf-8;

   location / {
      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;
   }
}

Redémarrez Nginx pour prendre en compte le nouveau vhost :

service nginx restart

Lancez l'assistant d'installation de PostfixAdmin à l'adresse suivante et suivez les indications :

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@domain.tld). C'est à partir de ce compte que vous allez gérer toutes vos adresses emails. Attention: admin@domain.tld 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 :

# vim /var/www/postfixadmin/config.inc.php

$CONF['setup_password'] = 'HASH';

Vous pouvez maintenant vous connecter via le formulaire de connexion :

On va commencer par ajouter un nouveau domaine, dans notre exemple il s'agit de domain.tld :

Et une adresse email, par exemple admin@domain.tld et contact@domain.tld :

Voila, vous avez ajouté votre première adresse email, like a boss, maintenant on va passer aux choses sérieuses

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.

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.

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

# 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   

# 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 :

# 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) :

cd /etc/ssl/

openssl genrsa -out ca.key.pem 4096
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
openssl genrsa -out mailserver.key 4096
openssl req -new -sha256 -key mailserver.key -out mailserver.csr

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) []:Mail server
Common Name (e.g. server FQDN or YOUR name) []: mail.domain.tld
openssl x509 -req -days 1460 -sha256 -in mailserver.csr -CA ca.cert.pem -CAkey ca.key.pem -CAcreateserial -out mailserver.crt

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 :

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 :

# 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 :

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.

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 :

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.

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.tld
myorigin      = hostname.domain.tld
mydestination = localhost localhost.$mydomain
mynetworks    = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
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 :

# 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-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-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

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

Et n'oubliez pas de décommentez cette ligne aussi si ce n'est pas déjà fait :

smtp  inet  n       -       -       -       -       smtpd

5 - Installation de Dovecot

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

!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

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/domain.tld/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).

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

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

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

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 = domaine.tld
# %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 :

# 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 :

chown -R vmail:dovecot /etc/dovecot
chmod -R o-rwx /etc/dovecot 

Editer le fichier 10-master.conf avec le contenu suivant :

# vim /etc/dovecot/conf.d/10-master.conf

service imap-login {

  inet_listener imap {
    port = 143
  }

  inet_listener imaps {
    port = 993
    ssl = yes
  }

  service_count = 0

}

service imap {

}

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 {

  # On autorise Postfix à se connecter à Dovecot via LMTP
  unix_listener /var/spool/postfix/private/auth {
      mode = 0666
      user = postfix
      group = postfix
  }

  # On indique à Dovecot les permissions du conteneur local
  unix_listener auth-userdb {
      mode = 0600
      user = vmail
      group = vmail
  }

  user = dovecot

}

service auth-worker {

  user = vmail

}

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 = !SSLv2 !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 :

# 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

7 - Redémarrage des services et vérification des ports

On redémarre Postfix et Dovecot :

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 :

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 :

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 :

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.

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 :

Les adresses imap.domain.tld et smtp.domain.tld sont arbitraires, vous pouvez très bien mettre à la place le FQDN de votre serveur (exemple: hostname.domain.tld), ça marchera très bien aussi. Le plus important ce sont les ports et les algorithmes de chiffrement/d'authentification (SSL/TLS - 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.

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 :

tail -f /var/log/mail.log

Si vous avez les deux lignes suivantes c'est que la connexion IMAP/TLS est OK (ouf 😛)

tail -f /var/log/mail.log

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=<contact@domain.tld>, method=PLAIN, rip=ADRESSE IP CLIENT, lip=ADRESSE IP SERVEUR, mpid=xxx, TLS, session=<xxxxxxxx>

Deuxième test : envoie par SMTP ( Sarah envoie un email à Bob )

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🙂

tail -f /var/log/mail.log

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=sarah.connor@terminator.net
Aug 16 19:54:15 hostname postfix/smtp[xxx]: to=<bob@nsa.gov>, relay=[ADRESSE IP RELAI]:25, status=sent (250 OK)

Troisième test : réception par IMAP ( Bob envoie un email à Sarah )

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 mail.nsa.gov: TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)
Aug 16 20:05:00 hostname postfix/qmgr[xxx]: from=<bob@nsa.gov>, size=1748, nrcpt=1 (queue active)
Aug 16 20:05:01 hostname dovecot: lmtp(xxx, sarah.connor@terminator.net): saved mail to INBOX
Aug 16 20:05:01 hostname postfix/lmtp[xxx]: to=<sarah.connor@terminator.net>, relay=mail.domain.tld[private/dovecot-lmtp], status=sent (250 2.0.0 <sarah.connor@terminator.net> 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

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

Il existe d'autres outils du même genre :

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.

On commence par installer OpenDKIM :

apt-get install opendkim opendkim-tools

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

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

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

Créér le répertoire suivant :

mkdir -p /etc/opendkim/keys

Ajoutez le fichier TrustedHosts avec le contenu suivant :

# vim /etc/opendkim/TrustedHosts

127.0.0.1
localhost
::1
*.domain.tld

N'oubliez pas de modifier domain.tld 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.

# vim /etc/opendkim/KeyTable

mail._domainkey.domain.tld domain.tld:mail:/etc/opendkim/keys/domain.tld/mail.private

Ajoutez le fichier SigningTable avec le contenu suivant :

# vim /etc/opendkim/SigningTable

*@domain.tld mail._domainkey.domain.tld

Création de la clé publique et privée

Création du répertoire qui contiendra les clés :

cd /etc/opendkim/keys
mkdir domain.tld && cd domain.tld

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 domaine.tld -b 2048

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 :

chown opendkim:opendkim mail.private

Les permissions doivent être les suivantes (chmod 400) :

ls -lX /etc/opendkim/keys/domain.tld/

-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

Copiez le contenu du fichier mail.txt (la clé publique) :

cat mail.txt

Le format de l'enregistrement DKIM est comme ceci :

mail._domainkey IN TXT "v=DKIM1; k=rsa; p=VOTRE CLE PUBLIQUE"

On va prendre exemple avec une clé de 4096 bits :

# cat mail.txt

mail._domainkey	IN	TXT	( "v=DKIM1; k=rsa; "
	  "p=MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA5tSGc+j5pLEuWeR4NIhDRPhwHUZll1/N3ajHF1wSttUVp/igdcpZTKTD7ccFmsY0l+72Q+rlnoCGGdhdw0ImRoPVZwBfSxvC3alw/YLLCEwpy+J/tXx2WOPdHM95TVbt0S/wVWpPxmr3mAIPO24R4NEf0yQdvktnB26UTcLBEMtqAEtEDLqrea/XM5HQMngWXAARy379H6mo1Y"
	  "ee3wUqYZPX+g8ljZZMpIlvaE0pjtVIZ0kV8/kXz0fa1XHanc6rTsF7/XxCLYJRAK6fcfO8u/Ro65uWNM3x8+WN1nkf/ojh8VN/0A5oUrlQVWba4OEXxCkbZTU7V+4okyyhAHV2+/c0qRsKRNj2YuPl3DmJ8/me/UBHbIEeji7kcBuVkgv0cakHolMbKWESBuuw1F5MPThQ3qbUcCI9mY4OtTnElk40DVXMenKwQ1EnqJZlHtj6XOo0/na4"
	  "epqH+rtUOXhan6ewd8XQvJk630Qi1FHzWmO7i4pb8Uo0EDrAQmPvCNsR+AttrIdK7Ry3xgKAUdSyfT2GXmtP3hpr4l2w0Qv0sXAkVzz9xF0OsUjb3pztdAKz9t9pHiIj3C5p0HQZTAr7oVAzjiDu6gntfoMzTB6mY6PKF2TYOBagu0AZAwgwuWb24zrGPXRPS8U01TlY6UVzFJbB+97i0Nim5jQmyf/r38cCAwEAAQ==" )  ; ----- DKIM key mail for domaine.tld

Si vous avez votre propre serveur DNS avec Bind9 par exemple, ce format là est valide, ça passe, pas besoin de modifier.
Si vous êtes chez un registrar comme Gandi, OVH ou autre, vous pouvez essayer :

1 - Soit de rassembler tous les morceaux de la clé en une seule chaîne de caractères, donc la clé au dessus deviendrait :

mail._domainkey IN TXT ( "v=DKIM1; k=rsa; p=MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA5tSGc+j5pLEuWeR4NIhDRPhwHUZll1/N3ajHF1wSttUVp/igdcpZTKTD7ccFmsY0l+72Q+rlnoCGGdhdw0ImRoPVZwBfSxvC3alw/YLLCEwpy+J/tXx2WOPdHM95TVbt0S/wVWpPxmr3mAIPO24R4NEf0yQdvktnB26UTcLBEMtqAEtEDLqrea/XM5HQMngWXAARy379H6mo1Yee3wUqYZPX+g8ljZZMpIlvaE0pjtVIZ0kV8/kXz0fa1XHanc6rTsF7/XxCLYJRAK6fcfO8u/Ro65uWNM3x8+WN1nkf/ojh8VN/0A5oUrlQVWba4OEXxCkbZTU7V+4okyyhAHV2+/c0qRsKRNj2YuPl3DmJ8/me/UBHbIEeji7kcBuVkgv0cakHolMbKWESBuuw1F5MPThQ3qbUcCI9mY4OtTnElk40DVXMenKwQ1EnqJZlHtj6XOo0/na4epqH+rtUOXhan6ewd8XQvJk630Qi1FHzWmO7i4pb8Uo0EDrAQmPvCNsR+AttrIdK7Ry3xgKAUdSyfT2GXmtP3hpr4l2w0Qv0sXAkVzz9xF0OsUjb3pztdAKz9t9pHiIj3C5p0HQZTAr7oVAzjiDu6gntfoMzTB6mY6PKF2TYOBagu0AZAwgwuWb24zrGPXRPS8U01TlY6UVzFJbB+97i0Nim5jQmyf/r38cCAwEAAQ==" )  ; ----- DKIM key mail for domaine.tld

2 - Soit de supprimer les espaces entre les "" mais tout en gardant les "" (pas comme dans le premier exemple) :

mail._domainkey IN TXT ( "v=DKIM1; k=rsa; "p=MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA5tSGc+j5pLEuWeR4NIhDRPhwHUZll1/N3ajHF1wSttUVp/igdcpZTKTD7ccFmsY0l+72Q+rlnoCGGdhdw0ImRoPVZwBfSxvC3alw/YLLCEwpy+J/tXx2WOPdHM95TVbt0S/wVWpPxmr3mAIPO24R4NEf0yQdvktnB26UTcLBEMtqAEtEDLqrea/XM5HQMngWXAARy379H6mo1Y""ee3wUqYZPX+g8ljZZMpIlvaE0pjtVIZ0kV8/kXz0fa1XHanc6rTsF7/XxCLYJRAK6fcfO8u/Ro65uWNM3x8+WN1nkf/ojh8VN/0A5oUrlQVWba4OEXxCkbZTU7V+4okyyhAHV2+/c0qRsKRNj2YuPl3DmJ8/me/UBHbIEeji7kcBuVkgv0cakHolMbKWESBuuw1F5MPThQ3qbUcCI9mY4OtTnElk40DVXMenKwQ1EnqJZlHtj6XOo0/na4""epqH+rtUOXhan6ewd8XQvJk630Qi1FHzWmO7i4pb8Uo0EDrAQmPvCNsR+AttrIdK7Ry3xgKAUdSyfT2GXmtP3hpr4l2w0Qv0sXAkVzz9xF0OsUjb3pztdAKz9t9pHiIj3C5p0HQZTAr7oVAzjiDu6gntfoMzTB6mY6PKF2TYOBagu0AZAwgwuWb24zrGPXRPS8U01TlY6UVzFJbB+97i0Nim5jQmyf/r38cCAwEAAQ==" )  ; ----- DKIM key mail for domaine.tld

Je sais que cette solution fonctionne chez Gandi en tout cas.

3 - Soit de réduire la taille de la clé à 1024 bits, certains registrars n'acceptent tout simplement pas des clés supérieures à cette taille.

Et pour finir, on redémarre tous les services :

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 :

# Debian 7
update-rc.d postfix  defaults
update-rc.d dovecot  defaults
update-rc.d opendkim defaults

# Debian 8
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 :

host -t TXT mail._domainkey.domain.tld

Si elle retourne ce message :

Host mail._domainkey.domain.tld 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.
Pour tester le bon fonctionnement d'OpenDKIM, utilisez le site que l'on a vu tout à l'heure : http://www.mail-tester.com/

7 jours plus tard

12 - Ajouter un enregistrement SPF (Sender Policy Framework)

Wikipédia wrote:

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 :

@        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/
Si tout est bon, vous devriez avoir 10/10 :

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.

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 @domain.tld à 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 :

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 !

_dmarc  IN  TXT "
    v=DMARC1; 
    p=reject; 
    rua=mailto:postmaster@domain.tld; 
    ruf=mailto:admin@domain.tld; 
    adkim=s;
    aspf=s; 
    pct=100; 
    rf=afrf; 
    sp=reject
"

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 ?

- dmarc : L'enregistrement contenant votre politique vis à vis de DMARC se nomme dmarc, donc il correspond au sous domaine : _dmarc.domain.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. Le paquet est disponible à partir de la branche Jessie de Debian, si vous êtes encore sous Debian 6/7, il faudra utiliser les backports.

apt-get install opendmarc

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              "hostname.domain.tld"
TrustedAuthservIDs      "hostname.domain.tld"
IgnoreHosts             /etc/opendkim/TrustedHosts
IgnoreMailFrom          "domain.tld"
RejectFailures          false

UserID                  opendmarc:opendmarc
PidFile                 /var/run/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

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 :

smtpd_milters = unix:/opendkim/opendkim.sock, unix:/opendmarc/opendmarc.sock

Puis on redémarre les services :

systemctl restart opendmarc
systemctl restart postfix

14 - Installation et configuration de Rainloop

Rainloop est un webmail opensource développé en PHP qui se veut complet et simple d'utilisation. Il gère très bien les protocoles IMAP/SMTP et dispose d'une interface moderne (HTML5/CSS3) très érgonomique, c'est plutôt agréable. Du côté des fonctionnalités, on retrouve toutes celles d'un client mail classique, avec en plus un système de plugins.

Rainloop est très simple à mettre en place. Téléchargez le zip depuis le site officiel et décompressez-le dans le dossier /var/www/rainloop :

wget http://repository.rainloop.net/v2/webmail/rainloop-latest.zip
mkdir /var/www/rainloop
unzip rainloop-latest.zip -d /var/www/rainloop
rm -rf rainloop-latest.zip

Modifiez les permissions pour que le serveur web ait accès au répertoire /var/www/rainloop

cd /var/www/rainloop
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
chown -R www-data:www-data .

Ajouter un nouveau virtual host Nginx (à adapter selon votre configuration) :

# vim /etc/nginx/sites-enabled/rainloop.conf

server {
   listen 80;
   server_name     webmail.domain.tld;
   root            /var/www/rainloop;
   index           index.php;
   charset         utf-8;

   location ^~ /data {
      deny all;
   }

   location / {
      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;
   }
}

Redémarrez Nginx pour prendre en compte le nouveau vhost :

service nginx restart

L'installation est maintenant terminée (2 minutes montre en main 😛), nous allons passer à la configuration. Connectez-vous à l'interface d'administration via cette adresse :

Normalement vous devez tomber sur un formulaire de connexion, comme celui-ci :

Par défaut les identifiants sont : admin et 12345

Une fois connecté à l'interface d'administration, vous devez ajouter un nouveau domaine. Dans le menu de gauche cliquez sur Domains puis sur + Add Domain. Une nouvelle fenêtre s'ouvre et vous demande de configurer IMAP et SMTP pour ce domaine. C'est exactement la même chose qu'avec Thunderbird, on utilise tous ce qu'on a fait jusqu'à présent.

Voici un exemple de configuration, adaptez selon vos besoins :

Une fois les champs remplis, cliquez sur le bouton "Test Connection" pour voir si vous n'avez pas fait d'erreur de saisie. N'hésitez pas à lancer en même temps la commande tail si vous avez des problèmes de connexion :

tail -f /var/log/mail.log

Ajoutez tous les utilisateurs autorisés à se connecter dans le White List (bouton en bas), par exemple pour super.admin@domain.tld et contact@domain.tld vous devez mettre (les utilisateurs sont séparés par des espaces) :

super.admin contact

Allez voir les autres sections de l'espace d'administration, il reste encore pleins de choses à personnaliser à votre guise.

Connexion à votre boîte mail

Connectez-vous à votre boîte mail via le formulaire principal :

Saisissez les identifiants que vous avez mis lors de la création de votre adresse email via PostfixAdmin et connectez-vous. Si tout se passe bien, vous arrivez dans votre boîte mail. Rainloop s'occupe de son côté d'aller chercher et d'organiser tous vos emails depuis le serveur avec le protocol IMAP :

L'envoie des emails est le gros point fort de Rainloop car il gère le Drag&Drop, l'auto-complétion et les raccoucis claviers :

15 - Installation et configuration de SpamAssassin

SpamAssassin est un logiciel libre permettant de filtrer les emails afin d'éradiquer au maximum le SPAM. Il fait passer un certain nombre de tests au message et en fonction du résultat de ces tests, il attribue un score qui permettra de savoir si il s'agit d'un email indésirable ou non.

On commence par installer SpamAssassin :

apt-get install spamassassin spamc

Ensuite on modifie le fichier de configuration de Postfix /etc/postfix/master.cf :

smtp      inet  n       -       -       -       -       smtpd
   -o content_filter=spamassassin
submission inet n       -       -       -       -       smtpd
   -o content_filter=spamassassin

Ajoutez aussi ces deux lignes à la fin du fichier :

spamassassin unix -     n       n       -       -       pipe
  user=debian-spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}

Ok maintenant on relance postfix avec la commande suivante :

service postfix reload

Dans le fichier /etc/spamassassin/local.cf, décommenter la ligne suivante :

rewrite_header Subject *****SPAM*****

Les mails considérés comme du SPAM auront un sujet préfixé avec **SPAM**. Ils pourront ainsi être traités comme vous le souhaitez en paramétrant un filtre dans votre client mail.

Ajouter aussi à la fin du fichier local.cf :

report_safe 0
whitelist_auth *@domain.tld

add_header all Report _REPORT_
add_header spam Flag _YESNOCAPS_
add_header all Status _YESNO_, score=_SCORE_ required=_REQD_ tests=_TESTS_ autolearn=_AUTOLEARN_ version=_VERSION_
add_header all Level _STARS(*)_
add_header all Checker-Version SpamAssassin _VERSION_ (_SUBVERSION_) on _HOSTNAME_

Pour avoir un rapport détaillé dans les headers de tous les mails, comme ceci :

X-Spam-Report: 
	* -5.0 RCVD_IN_DNSWL_HI RBL: Sender listed at http://www.dnswl.org/, high
	*      trust
	*      [66.45.63.27 listed in list.dnswl.org]
	* -3.0 RCVD_IN_RP_CERTIFIED RBL: Sender in ReturnPath Certified - Contact
	*      cert-sa@returnpath.net
	*      [Return Path SenderScore Certified {formerly]
	[Bonded Sender} - <http://www.senderscorecertified.com>]
	* -2.0 RCVD_IN_RP_SAFE RBL: Sender in ReturnPath Safe - Contact
	*      safe-sa@returnpath.net
	*      [Return Path SenderScore Safe List (formerly]
	[Habeas Safelist) - <http://www.senderscorecertified.com>]
X-Spam-Status: No, score=-10.0 required=5.0 tests=RCVD_IN_DNSWL_HI,
	RCVD_IN_RP_CERTIFIED,RCVD_IN_RP_SAFE autolearn=ham
	version=3.3.2
X-Spam-Level: 
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on hostname.domain.tld

L'exemple ci-dessus montre un très bon élève (returnpath.net) mais ça sera pas toujours le cas avec les mails que vous recevrez

Dans le fichier /etc/default/spamassassin, modifier ces deux lignes :

ENABLED=1
CRON=1 # Debian <= 7 "Wheezy"
CRON=0 # Debian >= 8 "Jessie"

On active le service lors du boot puis on le démarre :

# Debian 7
update-rc.d spamassassin defaults

# Debian 8
systemctl enable spamassassin.service

service spamassassin start

Pour finir, ajouter au cron ces 3 lignes avec contab :

# crontab -e
# Mise à jour des règles de spamassassin
20 02 * * * /usr/bin/sa-update

# Auto-apprentissage de spam assassin
30 02 * * * /usr/bin/sa-learn --ham /var/mail/vhosts/domain.tld/utilisateur/mail/cur/*
40 02 * * * /usr/bin/sa-learn --spam /var/mail/vhosts/domain.tld/utilisateur/mail/.Junk/cur/*

Spamassassin est très intelligent, il peut apprendre tout seul au fur et à mesure que vous recevez des mails, lorsque vous ajoutez manuellement un mail dans le dossier spam (ce qui veut dire qu'il ne l'avait pas détecté en tant que tel), sa-learn --spam permet de mettre à jour le filtrage bayésien (http://fr.wikipedia.org/wiki/Filtrage_bay%C3%A9sien_du_spam) en analysant les mails contenus dans le dossier spam, donc Spamassassin s'améliore un peu chaque jour en fonction de vous, si c'est pas cool ça

Le contraire est aussi possible avec l'option --ham de la commande sa-learn, si Spamassassin considère un mail en tant que spam alors que ce n'est pas le cas (faux positif), vous pouvez lui indiquer en remettant le mail dans le dossier principal de réception (INBOX).

16 - Filtrer les mails Sieve et Sieve-Manager

Vous connaissez très certainement les filtres côté clients, tout bon client mail possède un système de filtre permettant de trier automatiquement les mails en fonction de différents critères que vous pouvez définir. Sieve c'est exactement la même chose mais côté serveur, il possède un langage de script pour définir soit même l'ensemble des règles.

Pour installer sieve, exécuter la commande suivante :

apt-get install dovecot-sieve dovecot-managesieved

Éditer le fichier principal de configuration de Dovecot et ajouter "sieve" dans la liste des protocoles :

# /etc/dovecot/dovecot.conf

protocols = imap lmtp sieve

Ensuite dans le fichier /etc/dovecot/conf.d/20-lmtp.conf, ajouter le contenu suivant :

protocol lmtp {
  postmaster_address = postmaster@domain.tld
  mail_plugins = $mail_plugins sieve
}

Dans le fichier /etc/dovecot/conf.d/90-sieve.conf, modifier la configuration du plugin :

plugin {

sieve = /var/mail/vhosts/%d/%n/.dovecot.sieve
sieve_default = /var/mail/sieve/default.sieve
sieve_dir = /var/mail/vhosts/%d/%n/sieve
sieve_global_dir = /var/mail/sieve

}

Puis :

mkdir /var/mail/sieve/
touch /var/mail/sieve/default.sieve && chown -R vmail:vmail /var/mail/sieve

Par défaut, vous pouvez mettre toutes les règles dans le fichier default.sieve, elles s'appliqueront à toutes les adresses, les règles spécifiques à une adresse doivent être mises dans le fichier /var/mail/vhosts/domain.tld/adresse/.dovecot.sieve. Attention si ce fichier existe, le fichier par défaut (default.sieve) ne sera pas lu pour l'utilisateur courant.

Pour ce tutoriel, on va ajouter une règle basique mais très utile :

require ["fileinto"];
 
if header :contains "Subject" "*****SPAM*****" {

fileinto "Junk";

}

Je pense que c'est assez explicite pour comprendre le but de cette règle
Et pour finir compiler les règles avec la commande sievec :

sievec /var/mail/sieve/default.sieve

et on redémarre Dovecot :

service dovecot restart

Vous pouvez tester la règle en envoyant un email depuis un autre fournisseur de mail avec le contenu suivant :

XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Si tout fonctionne bien vous devriez recevoir le mail automatiquement dans le dossier Spam (Junk). N'hésitez pas à aller voir la documentation, pour créer d'autres règles. L'avantage de ce système c'est que les règles sont côté serveur donc elles s'appliquent à tous vos clients mail, pas besoin de les refaire lorsque vous changez de client.

Rainloop intègre le support de Sieve directement depuis le webmail, nous allons avoir comment activer cette fonctionnalité. Connectez-vous avec votre compte administrateur à rainloop puis aller dans Domains > cliquez sur votre domaine puis sur Sieve configuration et enfin configurer comme sur l'image suivante :

Cliquer sur le bouton "Test" pour tester la connexion avec SieveManager, si c'est bon, le titre de la section sera vert.
Maintenant il faut se connecter à un compte utilisateur, aller dans les paramètres > Filtres. Vous pouvez dès à présent configurer vos filtres depuis cette interface.

Il existe aussi un plugin similaire pour Thunderbird ici : https://addons.mozilla.org/fr/thunderbird/addon/sieve/

17 - Installation et configuration de ClamAV

ClamAV est un antivirus destiné aux systèmes UNIX principalement. Il est capable de détecter en temps réel des logiciels malveillants et des virus grâce à une base de détection de plus de 3 500 000 signatures. ClamAV est généralement utilisé avec Postfix pour filtrer les emails comportant des virus, malwares...etc

Installer le paquet clamav-milter depuis les dépôts officiels de Debian :

apt-get install clamav-milter

4 autres paquets seront installés en même temps :

- clamav : C'est le paquet principal
- clamav-base : C'est le paquet de base de ClamAV, contient divers outils pour son fonctionnement
- clamav-daemon : Permet de faire tourner ClamAV en tâche de fond
- clamav-freshclam : Outil permettant de mettre à jour la base de signature des virus

Une fois que tous les paquets sont installés, il faut mettre à jour la base de signature avec freshclam :

service clamav-freshclam stop
freshclam

# ClamAV update process started at Sat Sep 13 23:42:44 2014
# main.cvd is up to date (version: 55, sigs: 2424225, f-level: 60, builder: neo)
# daily.cvd is up to date (version: 19360, sigs: 1098967, f-level: 63, builder: dgoddard)
# bytecode.cvd is up to date (version: 242, sigs: 46, f-level: 63, builder: dgoddard)

service clamav-freshclam start

Ensuite on démarre le daemon :

service clamav-daemon start

[ ok ] Starting ClamAV daemon: clamd.

On créer le répertoire qui contiendra le socket UNIX et on définit clamav en tant que propriétaire :

mkdir /var/spool/postfix/clamav
chown clamav /var/spool/postfix/clamav

Exécuter la commande suivante pour configurer clamav-milter :

dpkg-reconfigure clamav-milter

Repondez aux questions avec les réponses ci-dessous :

Handle configuration automatically --> yes
User for daemon --> clamav
Additional groups --> laisser le champ vide
path to socket --> /var/spool/postfix/clamav/clamav-milter.ctl
group owner for the socket --> clamav
permissions (mode) for socket --> 666
remove stale socket --> yes
wait timeout for clamd --> 120
foreground --> no
chroot --> laisser le champ vide
pid file --> /var/run/clamav/clamav-milter.pid
temporary path --> /tmp
clamd socket --> unix:/var/run/clamav/clamd.ctl
hosts excluded for scanning --> laisser le champ vide
mail whitelist --> laisser le champ vide
action for "infected" mail --> reject
action on error --> defer
reason for rejection --> Rejecting harmful e-mail: %v found.
headers -> replace
log file --> /var/log/clamav/clamav-milter.log
disable log file locking --> no
maximum log file size --> 50
log time --> yes
use syslog --> no
log facility (type of syslog message) --> LOG_LOCAL6
verbose logging --> no
log level when infected --> off
log level when no threat --> off
size limit for scanned messages --> 25
support multiple recipients --> no
enable log rotation --> yes

Après la re-configuration, clamav-milter devrait redémarrer pour prendre en compte les modifications :

[ ok ] Stopping Sendmail milter plugin for ClamAV: clamav-milter.
[ ok ] Starting Sendmail milter plugin for ClamAV: clamav-milter.

Par défaut, freshclam récupère les dernières mises à jour depuis le serveur principal database.clamav.net, on peut spécifier d'autres serveurs, plus proches, par exemple : db.fr.clamav.net

Dans le fichier /etc/clamav/freshclam.conf, ajouter la ligne suivante au-dessus des autres serveurs "DatabaseMirror" :

DatabaseMirror db.fr.clamav.net

Sous Debian 7, ajoutez une nouvelle tâche CRON pour mettre à jour la base de signature automatiquement toutes les heures. La mise à jour est effectuée automatiquement sous Debian 8 Jessie, la tâche CRON n'est plus nécessaire.

# crontab -e

15 * * * * /usr/bin/freshclam --quiet

On redémarre le daemon pour prendre en compte les modifications :

service clamav-daemon restart

Il ne reste plus qu'à dire à Postfix où se trouve le socket UNIX de clamav dans le fichier /etc/postfix/main.cf :

smtpd_milters = unix:/opendkim/opendkim.sock, unix:/opendmarc/opendmarc.sock, unix:/clamav/clamav-milter.ctl

Recharger la configuration de Postfix :

service postfix reload

Bonus - Mettre en place un certificat signé et valide avec Let's Encrypt

Téléchargement du client ACME de Let's encrypt :

cd /tmp && git clone https://github.com/letsencrypt/letsencrypt && cd letsencrypt

Génération des certificats:

./letsencrypt-auto certonly --rsa-key-size 4096 -d hostname.domain.tld --email contact@domain.tld --agree-tos

Mise en place des certificats dans Postfix :

# vim /etc/postfix/main.cf

smtp_tls_CAfile     = /etc/letsencrypt/live/hostname.domain.tld/chain.pem
smtpd_tls_cert_file = /etc/letsencrypt/live/hostname.domain.tld/cert.pem
smtpd_tls_key_file  = /etc/letsencrypt/live/hostname.domain.tld/privkey.pem

Mise en place des certificats dans Dovecot :

# vim /etc/dovecot/conf.d/10-ssl.conf

ssl_cert = </etc/letsencrypt/live/hostname.domain.tld/fullchain.pem
ssl_key  = </etc/letsencrypt/live/hostname.domain.tld/privkey.pem

Et pour finir, on redémarre les services :

service postfix restart & service dovecot restart

Tester quand même le bon fonctionnement avec la commande openssl :

openssl s_client -connect hostname.domain.tld:587 -starttls smtp -tlsextdebug # Postfix
openssl s_client -connect hostname.domain.tld:993 -tlsextdebug # Dovecot

Il faut vérifier la chaîne :

Certificate chain
 0 s:/CN=hostname.domain.tld
   i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X1
 1 s:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X1
   i:/O=Digital Signature Trust Co./CN=DST Root CA X3

Dans le cas de IMAP, le serveur devrait répondre :

* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN AUTH=LOGIN] Dovecot ready.

Dans le cas de SMTP via STARTTLS, le serveur devrait répondre :

250 DSN

Bonus - Mise en place de POP3

En bonus, pour ceux qui souhaitent avoir accès à leurs e-mails via le protocole pop3. Dovecot prend en charge ce protocole mais n'est pas du tout optimisé pour, plus d'info : http://wiki2.dovecot.org/POP3Server

1 - Installation du module pop3 de Dovecot

apt-get install dovecot-pop3d

2 - Dans le fichier /etc/dovecot/dovecot.conf, ajouter le protocole pop3 comme ceci :

protocols = imap pop3 ...

3 - Dans /etc/dovecot/conf.d/10-master.conf, mettre ça :

service pop3-login {

  inet_listener pop3 {
    port = 110
  }

  inet_listener pop3s {
    port = 995
    ssl = yes
  }

} 

service pop3 {

} 

4 - Redémarrage de Dovecot

service dovecot restart

5 - Vérifier que les ports sont bien en écoute :

netstat -ptna | grep -i "0.0.0.0:110\|0.0.0.0:995"

Bonus - Cacher les informations sensibles

Certaines informations sensibles sont contenues dans les headers des mails que vous envoyez, comme votre adresse ip LAN/WAN, le User-Agent...etc, pour éviter cela, on va utiliser les regex. Dans le fichier /etc/postfix/header_checks, mettre ceci :

/^Received:.*with ESMTPSA/  IGNORE
/^X-Originating-IP:/        IGNORE
/^X-Mailer:/                IGNORE
/^User-Agent:/              IGNORE

Ensuite modifier la configuration de postfix en rajoutant les deux lignes suivantes dans /etc/postfix/main.cf :

mime_header_checks = regexp:/etc/postfix/header_checks
header_checks = regexp:/etc/postfix/header_checks

Et pour finir, il faut reconstruire la hash table et redémarrer postfix :

postmap /etc/postfix/header_checks
postfix reload

Pour toute demande d'aide par rapport à un problème lié au fonctionnement du serveur de mail, merci d'exécuter le script de debug disponible dans ce topic, et de joindre le rapport dans un nouveau post sur le fil de discussion.

2 ans plus tard

Configuration d'un client mail desktop sous windows

Pour utiliser votre serveur de mail vous pouvez soit utiliser un client mail desktop, soit utiliser un webmail (comme Rainloop ou Rouncube). Dans ce topic, nous allons configurer 3 clients mail bien connus : Outlook (version WinUI sous WIndows 8.1), MailBird et eM Client.

Tous les screens sont en anglais car je n'ai pas de version française de Windows 8.1.

Paramètres de connexion

Tout au long de ce topic, les paramètres de connexion seront toujours les mêmes, à savoir :

- Adresse email : admin@domain.tld (c'est l'adresse email que vous avez ajouté dans PostfixAdmin)
- Nom d'utilisateur IMAP/SMTP : admin@domain.tld
- Mot de passe IMAP/SMTP : Le mot de passe associé à l'adresse email (pareil, ce que vous avez mis dans PostfixAdmin)
- Serveur entrant IMAP : hostname.domain.tld (votre FQDN)
- Serveur sortant SMTP : hostname.domain.tld (votre FQDN)
- Port IMAP : 993
- Port SMTP : 587
- Protocole de chiffrement IMAP : SSL/TLS
- Protocole de chiffrement SMTP : STARTTLS

Configuration d'Outlook

On va tout d'abord ajouter un nouveau compte à Outlook. Cliquez sur Autre compte dans le menu du droite :

Ensuite il vous demande le type de compte, sélectionnez IMAP :

Puis saisissez vos paramètres de connexions :

Un message devrait apparaître, vous disant que le certificat SSL n'a pas été signé par une source de confiance. Dans notre cas c'est parfaitement normal, pendant le tutoriel, nous avons créé un certificat auto-signé avec notre propre requête de certification, donc forcement Outlook ne connait pas cette Authorité de certification.

Si vous voulez ne plus avoir ce message, allez voir le tutoriel de Meister : http://mondedie.fr/d/5378 pour avoir un certificat signé et gratuit. Sinon vous pouvez en acheter un ici : http://www.rapidssl.com/

Cliquez sur Se connecter quand même :

Voila vous pouvez maintenant utiliser votre boîte mail pour envoyer et reçevoir des emails, cool non ?

Configuration de MailBird

Ajoutez un nouveau compte :

Configurez-le (on utilise toujours les mêmes paramètres quel que soit le client mail) :

Acceptez le certificat SSL :

Enjoy !

Configuration de eM Client

Ce qui est vachement bien avec eM Client c'est qu'il détecte automatiquement votre configuration, vous n'avez pas besoin de saisir les paramètres SMTP/IMAP, il trouve tout de lui même, il faut juste cliquer sur Démarrer maintenant :

Toujours le même avertissement par rapport au certificat :

Il vous indique que le serveur a besoin d'une authentification, cliquez sur Oui :

Enjoy !

un an plus tard
3 ans plus tard

Merci d'avoir partagé les trucs incroyables. Une chose à ajouter, du point de vue de la propagation, que whatsmydns.net dispose de 21 serveurs publics disponibles pour vérifier la propagation DNS mondiale. Voici un autre outil similaire https://dnschecker.org/, qui dispose de 27 serveurs publics disponibles pour vérifier les résultats de la propagation. Les moyens donnent des résultats de propagation meilleurs et détaillés. Vous devez également le vérifier.

Répondre…