Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| serveur_mail [2024/12/12 12:15] – huracan | serveur_mail [2024/12/12 15:04] (Version actuelle) – huracan | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | |||
| ---- | ---- | ||
| - | 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? | + | ==== Pré-requis :==== |
| - | Configuration du nom d' | + | * Un nom de domaine (avec un accès aux DNS et fichiers de zone) |
| + | * Nginx | ||
| + | * PHP | ||
| + | * OpenSSL | ||
| + | * MySQL | ||
| + | |||
| + | ==== Schéma : ==== | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | ==== Configuration du nom d' | ||
| 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' | ||
| + | * FQDN : **smtp.kenny.ovh** | ||
| + | * MX : **smtp.kenny.ovh** | ||
| - | Nom de domaine principal : kenny.ovh | + | Pour modifier le nom d' |
| - | Nom d' | + | echo **mail** > / |
| - | FQDN : smtp.dams.ovh | + | |
| - | MX : smtp.dams.ovh | + | |
| - | Pour modifier le nom d' | + | |
| - | echo **mail** > / | + | Pour modifier le FQDN, il faut editer le fichier |
| - | Pour modifier le FQDN, il faut editer le fichier /etc/hosts : | + | # vi / |
| + | |||
| + | 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' | Redémarrez le serveur pour prendre en compte le changement de nom d' | ||
| Le plus important dans cette partie, c'est de faire pointer le FQDN ET le MX vers l' | Le plus important dans cette partie, c'est de faire pointer le FQDN ET le MX vers l' | ||
| - | 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' |
| - | Lors de l' | + | 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 ' | + | CREATE USER ' |
| - | GRANT ALL PRIVILEGES ON `postfix`.* TO ' | + | GRANT ALL PRIVILEGES ON `postfix`.* TO ' |
| - | 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' | Il faut dans un premier temps télécharger l' | ||
| + | cd /var/www | ||
| + | wget http:// | ||
| + | tar -xzf postfixadmin-3.2.tar.gz | ||
| + | mv postfixadmin-3.2 postfixadmin | ||
| + | rm -rf postfixadmin-3.2.tar.gz | ||
| + | chown -R www-data: | ||
| + | apt-get install php5-imap | ||
| - | cd /var/www | ||
| - | wget http:// | ||
| - | tar -xzf postfixadmin-3.2.tar.gz | ||
| - | mv postfixadmin-3.2 postfixadmin | ||
| - | rm -rf postfixadmin-3.2.tar.gz | ||
| - | chown -R www-data: | ||
| - | 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 / | ||
| + | $CONF[' | ||
| + | $CONF[' | ||
| + | $CONF[' | ||
| + | $CONF[' | ||
| + | $CONF[' | ||
| + | $CONF[' | ||
| + | $CONF[' | ||
| + | $CONF[' | ||
| + | $CONF[' | ||
| + | $CONF[' | ||
| + | $CONF[' | ||
| - | # vim / | ||
| - | $CONF[' | ||
| - | $CONF[' | ||
| - | $CONF[' | ||
| - | $CONF[' | ||
| - | $CONF[' | ||
| - | $CONF[' | ||
| - | $CONF[' | ||
| - | $CONF[' | ||
| - | $CONF[' | ||
| - | $CONF[' | ||
| - | $CONF[' | ||
| Ajouter un nouveau virtual host Nginx (à adapter selon votre configuration) : | Ajouter un nouveau virtual host Nginx (à adapter selon votre configuration) : | ||
| + | # vim / | ||
| - | # vim / | + | |
| - | server { | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | + | | |
| - | | + | try_files $uri $uri/ index.php; |
| - | try_files $uri $uri/ index.php; | + | } |
| - | | + | |
| + | | ||
| + | include | ||
| + | fastcgi_pass | ||
| + | fastcgi_index index.php; | ||
| + | fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; | ||
| + | } | ||
| + | | ||
| - | | ||
| - | include | ||
| - | fastcgi_pass | ||
| - | 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' | Lancez l' | ||
| + | http:// | ||
| - | http:// | + | 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' |
| - | 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' | + | |
| Il ne vous reste plus qu'à mettre le hash généré par l' | Il ne vous reste plus qu'à mettre le hash généré par l' | ||
| + | # vim / | ||
| + | |||
| + | $CONF[' | ||
| - | # vim / | ||
| - | $CONF[' | ||
| Vous pouvez maintenant vous connecter via le formulaire de connexion : | Vous pouvez maintenant vous connecter via le formulaire de connexion : | ||
| + | http:// | ||
| - | http:// | + | 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? |
| + | Et une adresse email, exemple kenny@kenny.ovh : | ||
| + | {{ : | ||
| 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' | Maintenant nous allons devoir configurer Postfix pour qu'il prenne en charge correctement les connexions SMTP et l' | ||
| Faites une sauvegarde du fichier de conf de Postfix : | Faites une sauvegarde du fichier de conf de Postfix : | ||
| - | cp / | + | cp / |
| + | 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' | ||
| 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' | 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' | ||
| + | # vim / | ||
| - | # vim / | + | |
| - | # 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 = | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| + | # Règles sur l' | ||
| + | # reject_invalid_helo_hostname : Refuser les échanges HELO invalides | ||
| + | # reject_non_fqdn_helo_hostname : Refuser les noms d' | ||
| + | # reject_unknown_helo_hostname : Refuser les noms d' | ||
| + | smtpd_helo_restrictions = | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | # 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 = | ||
| + | | ||
| + | | ||
| + | | ||
| + | # 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 = | ||
| + | | ||
| + | | ||
| + | | ||
| - | # Règles sur l' | ||
| - | # reject_invalid_helo_hostname : Refuser les échanges HELO invalides | ||
| - | # reject_non_fqdn_helo_hostname : Refuser les noms d' | ||
| - | # reject_unknown_helo_hostname : Refuser les noms d' | ||
| - | smtpd_helo_restrictions = | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | # 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 = | ||
| - | | ||
| - | | ||
| - | | ||
| - | # 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 = | ||
| - | | ||
| - | | ||
| - | | ||
| 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 | ||
| + | smtp_tls_security_level | ||
| + | smtp_tls_CAfile | ||
| + | smtp_tls_protocols | ||
| + | smtp_tls_mandatory_protocols = !SSLv2, !SSLv3 | ||
| + | smtp_tls_mandatory_ciphers | ||
| + | smtp_tls_exclude_ciphers | ||
| + | smtp_tls_note_starttls_offer = yes | ||
| + | | ||
| + | # --------------------------------------------------------------------------------------------------- | ||
| + | | ||
| + | # Smtpd ( INCOMING / Server ) | ||
| + | smtpd_tls_loglevel | ||
| + | smtpd_tls_auth_only | ||
| + | smtpd_tls_security_level | ||
| + | smtpd_tls_received_header | ||
| + | smtpd_tls_protocols | ||
| + | smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3 | ||
| + | smtpd_tls_mandatory_ciphers | ||
| + | | ||
| + | # Infos (voir : postconf -d) | ||
| + | # Medium cipherlist = aNULL: | ||
| + | # High cipherlist | ||
| + | | ||
| + | # smtpd_tls_exclude_ciphers | ||
| + | # avec les autres serveurs de mail afin d' | ||
| + | # " | ||
| + | # | ||
| + | # smtpd_tls_cipherlist | ||
| + | | ||
| + | smtpd_tls_CAfile | ||
| + | smtpd_tls_cert_file | ||
| + | smtpd_tls_key_file | ||
| + | smtpd_tls_dh1024_param_file | ||
| + | smtpd_tls_dh512_param_file | ||
| + | | ||
| + | tls_preempt_cipherlist = yes | ||
| + | tls_random_source | ||
| + | | ||
| + | smtp_tls_session_cache_database | ||
| + | smtpd_tls_session_cache_database = btree: | ||
| + | lmtp_tls_session_cache_database | ||
| - | # Smtp ( OUTGOING / Client ) | ||
| - | smtp_tls_loglevel | ||
| - | smtp_tls_security_level | ||
| - | smtp_tls_CAfile | ||
| - | smtp_tls_protocols | ||
| - | smtp_tls_mandatory_protocols = !SSLv2, !SSLv3 | ||
| - | smtp_tls_mandatory_ciphers | ||
| - | smtp_tls_exclude_ciphers | ||
| - | smtp_tls_note_starttls_offer = yes | ||
| - | |||
| - | # --------------------------------------------------------------------------------------------------- | ||
| - | |||
| - | # Smtpd ( INCOMING / Server ) | ||
| - | smtpd_tls_loglevel | ||
| - | smtpd_tls_auth_only | ||
| - | smtpd_tls_security_level | ||
| - | smtpd_tls_received_header | ||
| - | smtpd_tls_protocols | ||
| - | smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3 | ||
| - | smtpd_tls_mandatory_ciphers | ||
| - | |||
| - | # Infos (voir : postconf -d) | ||
| - | # Medium cipherlist = aNULL: | ||
| - | # High cipherlist | ||
| - | |||
| - | # smtpd_tls_exclude_ciphers | ||
| - | # avec les autres serveurs de mail afin d' | ||
| - | # " | ||
| - | # | ||
| - | # smtpd_tls_cipherlist | ||
| - | |||
| - | smtpd_tls_CAfile | ||
| - | smtpd_tls_cert_file | ||
| - | smtpd_tls_key_file | ||
| - | smtpd_tls_dh1024_param_file | ||
| - | smtpd_tls_dh512_param_file | ||
| - | |||
| - | tls_preempt_cipherlist = yes | ||
| - | tls_random_source | ||
| - | |||
| - | smtp_tls_session_cache_database | ||
| - | smtpd_tls_session_cache_database = btree: | ||
| - | lmtp_tls_session_cache_database | ||
| Si vous n'avez pas de certificat SSL, exécutez les commandes suivantes pour en générer un (attention il s' | Si vous n'avez pas de certificat SSL, exécutez les commandes suivantes pour en générer un (attention il s' | ||
| + | cd /etc/ssl/ | ||
| - | 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 |
| - | 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]: | ||
| + | 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]: | + | 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 | + | |
| - | Organizational Unit Name (eg, section) []: Certificate Authority | + | State or Province Name (full name) [Some-State]: |
| - | 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 | + | |
| - | State or Province Name (full name) [Some-State]: | + | |
| - | 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 / | ||
| + | openssl dhparam -out / | ||
| - | openssl dhparam -out / | ||
| - | openssl dhparam -out / | ||
| 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' | ||
| + | smtpd_sasl_auth_enable | ||
| + | smtpd_sasl_type | ||
| + | smtpd_sasl_path | ||
| + | smtpd_sasl_security_options | ||
| + | smtpd_sasl_tls_security_options = $smtpd_sasl_security_options | ||
| + | smtpd_sasl_local_domain | ||
| + | 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' | ||
| - | smtpd_sasl_auth_enable | ||
| - | smtpd_sasl_type | ||
| - | smtpd_sasl_path | ||
| - | smtpd_sasl_security_options | ||
| - | smtpd_sasl_tls_security_options = $smtpd_sasl_security_options | ||
| - | smtpd_sasl_local_domain | ||
| - | smtpd_sasl_authenticated_header = yes | ||
| - | |||
| - | broken_sasl_auth_clients = yes | ||
| Maintenant on va s' | Maintenant on va s' | ||
| + | virtual_uid_maps | ||
| + | virtual_gid_maps | ||
| + | virtual_minimum_uid | ||
| + | virtual_mailbox_base | ||
| - | virtual_uid_maps | ||
| - | virtual_gid_maps | ||
| - | virtual_minimum_uid | ||
| - | virtual_mailbox_base | ||
| 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:/ | ||
| + | virtual_mailbox_maps | ||
| + | virtual_alias_maps | ||
| + | | ||
| + | smtpd_sender_login_maps | ||
| - | virtual_mailbox_domains = mysql:/ | ||
| - | virtual_mailbox_maps | ||
| - | virtual_alias_maps | ||
| - | |||
| - | smtpd_sender_login_maps | ||
| 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' | 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' | ||
| + | virtual_transport = lmtp: | ||
| - | virtual_transport = lmtp: | ||
| Il ne reste plus qu'à definir les paramètres généraux. N' | Il ne reste plus qu'à definir les paramètres généraux. N' | ||
| + | smtpd_banner | ||
| + | biff = no | ||
| + | append_dot_mydomain | ||
| + | readme_directory | ||
| + | delay_warning_time | ||
| + | mailbox_command | ||
| + | recipient_delimiter | ||
| + | disable_vrfy_command = yes | ||
| + | message_size_limit | ||
| + | mailbox_size_limit | ||
| + | | ||
| + | inet_interfaces = all | ||
| + | inet_protocols = ipv4 | ||
| + | | ||
| + | myhostname | ||
| + | myorigin | ||
| + | mydestination = localhost localhost.$mydomain | ||
| + | mynetworks | ||
| + | relayhost | ||
| + | | ||
| + | alias_maps | ||
| + | alias_database = hash:/ | ||
| - | smtpd_banner | + | C'est terminé pour le fichier de configuration principale, je vous l' |
| - | biff = no | + | |
| - | append_dot_mydomain | + | |
| - | readme_directory | + | |
| - | delay_warning_time | + | |
| - | mailbox_command | + | |
| - | recipient_delimiter | + | |
| - | disable_vrfy_command = yes | + | |
| - | message_size_limit | + | |
| - | mailbox_size_limit | + | |
| - | inet_interfaces | + | === Configuration de Postfix pour MySQL === |
| - | inet_protocols | + | |
| - | myhostname | ||
| - | myorigin | ||
| - | mydestination = localhost localhost.$mydomain | ||
| - | mynetworks | ||
| - | relayhost | ||
| - | |||
| - | alias_maps | ||
| - | alias_database = hash:/ | ||
| - | C'est terminé pour le fichier de configuration principale, je vous l' | ||
| - | |||
| - | 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 / | ||
| + | | ||
| + | hosts = 127.0.0.1 | ||
| + | user = postfix | ||
| + | password = MOT DE PASSE | ||
| + | dbname = postfix | ||
| + | | ||
| + | query = SELECT domain FROM domain WHERE domain=' | ||
| - | # vim / | + | |
| + | |||
| + | hosts = 127.0.0.1 | ||
| + | user = postfix | ||
| + | password = MOT DE PASSE | ||
| + | dbname = postfix | ||
| + | |||
| + | query = SELECT maildir FROM mailbox WHERE username=' | ||
| - | hosts = 127.0.0.1 | + | # vim / |
| - | user = postfix | + | |
| - | password = MOT DE PASSE | + | |
| - | dbname = postfix | + | user = postfix |
| + | password = MOT DE PASSE | ||
| + | dbname = postfix | ||
| + | |||
| + | query = SELECT goto FROM alias WHERE address=' | ||
| - | query = SELECT domain FROM domain WHERE domain=' | + | |
| - | # vim / | + | |
| + | hosts = 127.0.0.1 | ||
| + | user = postfix | ||
| + | password = MOT DE PASSE | ||
| + | dbname = postfix | ||
| + | |||
| + | query = SELECT username FROM mailbox WHERE username=' | ||
| - | hosts = 127.0.0.1 | + | Si vous voulez activer le port 587 pour vous connecter de manière sécurisé par SMTPS avec n' |
| - | user = postfix | + | |
| - | password | + | -o syslog_name=postfix/submission |
| - | dbname | + | -o smtpd_tls_dh1024_param_file=${config_directory}/ |
| + | -o smtpd_tls_security_level=encrypt | ||
| + | -o smtpd_sasl_auth_enable=yes | ||
| + | -o smtpd_client_restrictions=permit_sasl_authenticated, | ||
| - | query = SELECT maildir FROM mailbox WHERE username=' | ||
| - | # vim / | ||
| - | |||
| - | hosts = 127.0.0.1 | ||
| - | user = postfix | ||
| - | password = MOT DE PASSE | ||
| - | dbname = postfix | ||
| - | |||
| - | query = SELECT goto FROM alias WHERE address=' | ||
| - | # vim / | ||
| - | |||
| - | hosts = 127.0.0.1 | ||
| - | user = postfix | ||
| - | password = MOT DE PASSE | ||
| - | dbname = postfix | ||
| - | |||
| - | query = SELECT username FROM mailbox WHERE username=' | ||
| - | Si vous voulez activer le port 587 pour vous connecter de manière sécurisé par SMTPS avec n' | ||
| - | |||
| - | submission inet n | ||
| - | -o syslog_name=postfix/ | ||
| - | -o smtpd_tls_dh1024_param_file=${config_directory}/ | ||
| - | -o smtpd_tls_security_level=encrypt | ||
| - | -o smtpd_sasl_auth_enable=yes | ||
| - | -o smtpd_client_restrictions=permit_sasl_authenticated, | ||
| Et n' | Et n' | ||
| + | smtp inet n | ||
| - | smtp inet n | + | ==== 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' | + | |
| - | # vim /etc/dovecot/ | + | ==== 6 - Configuration de dovecot |
| - | !include_try / | + | Ajoutez la liste des protocoles activés après l' |
| - | protocols = imap lmtp | + | # vim / |
| - | listen = * | + | |
| + | | ||
| + | protocols = imap lmtp | ||
| + | listen = * | ||
| + | |||
| + | # Assurez-vous que cette ligne est bien décommentée : | ||
| + | !include conf.d/ | ||
| - | # Assurez-vous que cette ligne est bien décommentée : | ||
| - | !include conf.d/ | ||
| 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 / | ||
| + | | ||
| + | # Le contenur local est organisé de cette manière : | ||
| + | # / | ||
| + | mail_location = maildir:/ | ||
| + | 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 / | ||
| - | |||
| - | # Le contenur local est organisé de cette manière : | ||
| - | # / | ||
| - | mail_location = maildir:/ | ||
| - | 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 / | ||
| - | mkdir -p / | ||
| 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 / | ||
| + | | ||
| + | disable_plaintext_auth = yes | ||
| + | auth_mechanisms = plain login | ||
| + | #!include auth-system.conf.ext # Commenter cette ligne | ||
| + | !include auth-sql.conf.ext | ||
| - | # vim / | ||
| - | |||
| - | disable_plaintext_auth = yes | ||
| - | auth_mechanisms = plain login | ||
| - | #!include auth-system.conf.ext # Commenter cette ligne | ||
| - | !include 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 : | 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 / | ||
| + | | ||
| + | # Le mot de passe est obtenu à partir de la base de donnée | ||
| + | passdb { | ||
| + | driver = sql | ||
| + | args = / | ||
| + | } | ||
| + | | ||
| + | # Par contre le nom d' | ||
| + | # %d = kenny.ovh | ||
| + | # %n = utilisateur | ||
| + | userdb { | ||
| + | driver = static | ||
| + | args = uid=vmail gid=vmail home=/ | ||
| + | } | ||
| - | # vim / | ||
| - | |||
| - | # Le mot de passe est obtenu à partir de la base de donnée | ||
| - | passdb { | ||
| - | driver = sql | ||
| - | args = / | ||
| - | } | ||
| - | |||
| - | # Par contre le nom d' | ||
| - | # %d = dams.ovh | ||
| - | # %n = utilisateur | ||
| - | userdb { | ||
| - | driver = static | ||
| - | args = uid=vmail gid=vmail home=/ | ||
| - | } | ||
| 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 / | ||
| + | | ||
| + | # 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' | ||
| + | # Pour plus d' | ||
| + | # /!\ ATTENTION : ne pas oublier de modifier le paramètre $CONF[' | ||
| + | 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 = ' | ||
| - | # vim / | ||
| - | |||
| - | # 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' | ||
| - | # Pour plus d' | ||
| - | # /!\ ATTENTION : ne pas oublier de modifier le paramètre $CONF[' | ||
| - | 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 = ' | ||
| Modifiez les permissions sur le répertoire / | Modifiez les permissions sur le répertoire / | ||
| + | chown -R vmail: | ||
| + | chmod -R o-rwx / | ||
| - | chown -R vmail: | ||
| - | chmod -R o-rwx / | ||
| Editer le fichier 10-master.conf avec le contenu suivant : | Editer le fichier 10-master.conf avec le contenu suivant : | ||
| - | + | | |
| - | # vim / | + | |
| - | + | service imap-login { | |
| - | service imap-login { | + | |
| - | + | | |
| - | inet_listener imap { | + | port = 143 |
| - | port = 143 | + | } |
| + | |||
| + | inet_listener imaps { | ||
| + | port = 993 | ||
| + | ssl = yes | ||
| + | } | ||
| + | |||
| + | service_count = 0 | ||
| + | | ||
| } | } | ||
| - | + | | |
| - | | + | |
| - | port = 993 | + | |
| - | ssl = yes | + | |
| } | } | ||
| - | + | | |
| - | | + | service lmtp { |
| - | + | ||
| - | } | + | # On autorise Postfix à transférer les emails dans le spooler de Dovecot via LMTP |
| - | + | unix_listener / | |
| - | 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 / | + | |
| - | mode = 0600 | + | |
| - | user = postfix | + | |
| - | group = postfix | + | |
| } | } | ||
| - | + | | |
| - | } | + | service auth { |
| - | + | | |
| - | service auth { | + | |
| - | + | unix_listener / | |
| - | # On autorise Postfix à se connecter à Dovecot via LMTP | + | mode = 0666 |
| - | unix_listener / | + | 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 | ||
| + | | ||
| } | } | ||
| - | + | | |
| - | | + | |
| - | unix_listener | + | |
| - | 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 / | ||
| + | | ||
| + | ssl = required | ||
| + | ssl_cert = </ | ||
| + | ssl_key = </ | ||
| + | ssl_protocols = !SSLv3 | ||
| + | ssl_cipher_list = ALL: | ||
| + | ssl_prefer_server_ciphers = yes # Dovecot > 2.2.x | ||
| + | ssl_dh_parameters_length = 2048 # Dovecot > 2.2.x | ||
| - | # vim / | ||
| - | |||
| - | ssl = required | ||
| - | ssl_cert = </ | ||
| - | ssl_key = </ | ||
| - | ssl_protocols = !SSLv3 | ||
| - | ssl_cipher_list = ALL: | ||
| - | 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, | Si un jour vous oubliez le mot de passe du compte administrateur, | ||
| + | # On génère le hash correspondant au mot de passe | ||
| + | doveadm pw -s MD5-CRYPT -p MOT_DE_PASSE | sed ' | ||
| + | | ||
| + | mysql -u root -p | ||
| + | | ||
| + | mysql> connect postfix | ||
| + | mysql> UPDATE admin SET password = ' | ||
| + | | ||
| + | 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 ' | + | |
| - | + | ||
| - | mysql -u root -p | + | |
| - | + | ||
| - | mysql> connect postfix | + | |
| - | mysql> UPDATE admin SET password | + | |
| - | + | ||
| - | 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' | Puis on vérifie que les ports 25 (SMTP), 587 (SMTPS) et 993 (IMAPS) sont bien en écoute sur 0.0.0.0. N' | ||
| + | netstat -ptna | ||
| + | [...] | ||
| + | tcp 0 0 0.0.0.0:25 0.0.0.0: LISTEN 4995/ | ||
| + | tcp 0 0 0.0.0.0:587 0.0.0.0: LISTEN 4995/ | ||
| + | | ||
| + | tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 5030/ | ||
| + | [...] | ||
| - | netstat -ptna | ||
| - | [...] | ||
| - | tcp 0 0 0.0.0.0:25 0.0.0.0: LISTEN 4995/ | ||
| - | tcp 0 0 0.0.0.0:587 0.0.0.0: LISTEN 4995/ | ||
| - | |||
| - | tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 5030/ | ||
| - | [...] | ||
| 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, | Si vous voyez 250-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' | ||
| - | serveur de reception IMAP : smtp.dams.ovh | le port est 993 chiffrement SSL/TLS | + | ==== 9 - Tests de fonctionnement |
| - | serveur d' | + | |
| - | 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 | + | __Premier |
| 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 / | ||
| - | tail -f / | ||
| 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): | ||
| + | Aug 16 19:37:11 hostname dovecot: imap-login: Login: user=< | ||
| + | CLIENT, lip=ADRESSE IP SERVEUR, mpid=xxx, TLS, session=< | ||
| - | Aug 16 19:37:11 hostname dovecot: auth-worker(xxx): | + | __Deuxième |
| - | Aug 16 19:37:11 hostname dovecot: imap-login: Login: user=< | + | |
| - | CLIENT, lip=ADRESSE IP SERVEUR, mpid=xxx, TLS, session=< | + | |
| - | Deuxième | + | |
| Si vous avez les lignes suivantes dans le fichiers mail.log, c'est que la connexion SASL et l' | Si vous avez les lignes suivantes dans le fichiers mail.log, c'est que la connexion SASL et l' | ||
| + | Aug 16 19:54:13 hostname postfix/ | ||
| + | Aug 16 19:54:14 hostname dovecot: auth-worker(xxx): | ||
| + | Aug 16 19:54:14 hostname postfix/ | ||
| + | sasl_username=kenny.kenny@gmail.com | ||
| + | Aug 16 19:54:15 hostname postfix/ | ||
| - | Aug 16 19:54:13 hostname postfix/ | + | __Troisième |
| - | Aug 16 19:54:14 hostname dovecot: auth-worker(xxx): | + | |
| - | Aug 16 19:54:14 hostname postfix/ | + | |
| - | sasl_username=damien.cel@gmail.com | + | |
| - | Aug 16 19:54:15 hostname postfix/ | + | |
| - | Troisième | + | |
| Si vous avez les lignes suivantes dans le fichiers mail.log, c'est que la réception par IMAP et le transfert de l' | Si vous avez les lignes suivantes dans le fichiers mail.log, c'est que la réception par IMAP et le transfert de l' | ||
| + | Aug 16 20:04:58 hostname postfix/ | ||
| + | cipher ECDHE-RSA-RC4-SHA (128/128 bits) | ||
| + | Aug 16 20:05:00 hostname postfix/ | ||
| + | Aug 16 20:05:01 hostname dovecot: lmtp(xxx, kenny.kenny@gmail.com): | ||
| + | Aug 16 20:05:01 hostname postfix/ | ||
| + | relay=smtp.kenny.ovh[private/ | ||
| - | Aug 16 20:04:58 hostname postfix/ | + | ==== 10 - Test d' |
| - | cipher ECDHE-RSA-RC4-SHA (128/128 bits) | + | |
| - | Aug 16 20:05:00 hostname postfix/ | + | |
| - | Aug 16 20:05:01 hostname dovecot: lmtp(xxx, damien.cel@gmail.com): | + | |
| - | Aug 16 20:05:01 hostname postfix/ | + | |
| - | relay=smtp.dams.ovh[private/ | + | |
| - | 10 - Test d' | + | |
| - | Allez sur ce site : http:// | + | |
| + | Allez sur ce site : [[http:// | ||
| 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' | ||
| - | 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' | ||
| DKIM est un standard permettant d' | DKIM est un standard permettant d' | ||
| 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 / | ||
| + | | ||
| + | AutoRestart | ||
| + | AutoRestartRate | ||
| + | UMask 002 | ||
| + | Syslog | ||
| + | SyslogSuccess | ||
| + | LogWhy | ||
| + | | ||
| + | OversignHeaders | ||
| + | AlwaysAddARHeader | ||
| + | Canonicalization | ||
| + | | ||
| + | ExternalIgnoreList | ||
| + | InternalHosts | ||
| + | KeyTable | ||
| + | SigningTable | ||
| + | | ||
| + | Mode sv | ||
| + | PidFile | ||
| + | SignatureAlgorithm | ||
| + | | ||
| + | UserID | ||
| + | | ||
| + | Socket | ||
| - | # vim / | ||
| - | |||
| - | AutoRestart | ||
| - | AutoRestartRate | ||
| - | UMask 002 | ||
| - | Syslog | ||
| - | SyslogSuccess | ||
| - | LogWhy | ||
| - | |||
| - | OversignHeaders | ||
| - | AlwaysAddARHeader | ||
| - | Canonicalization | ||
| - | |||
| - | ExternalIgnoreList | ||
| - | InternalHosts | ||
| - | KeyTable | ||
| - | SigningTable | ||
| - | |||
| - | Mode sv | ||
| - | PidFile | ||
| - | SignatureAlgorithm | ||
| - | |||
| - | UserID | ||
| - | |||
| - | Socket | ||
| Pour que Postfix puisse communiquer avec OpenDKIM, on va utiliser un socket, il faut créer le répertoire / | Pour que Postfix puisse communiquer avec OpenDKIM, on va utiliser un socket, il faut créer le répertoire / | ||
| + | mkdir / | ||
| + | chown opendkim: / | ||
| + | usermod -aG opendkim postfix | ||
| - | mkdir / | ||
| - | chown opendkim: / | ||
| - | usermod -aG opendkim postfix | ||
| Ensuite on doit indiquer à Postfix comment s' | Ensuite on doit indiquer à Postfix comment s' | ||
| + | # vim / | ||
| + | | ||
| + | milter_protocol = 6 | ||
| + | milter_default_action = accept | ||
| + | smtpd_milters = unix:/ | ||
| + | non_smtpd_milters = unix:/ | ||
| - | # vim / | ||
| - | |||
| - | milter_protocol = 6 | ||
| - | milter_default_action = accept | ||
| - | smtpd_milters = unix:/ | ||
| - | non_smtpd_milters = unix:/ | ||
| Créér le répertoire suivant : | Créér le répertoire suivant : | ||
| + | mkdir -p / | ||
| - | mkdir -p / | ||
| Ajoutez le fichier TrustedHosts avec le contenu suivant : | Ajoutez le fichier TrustedHosts avec le contenu suivant : | ||
| + | # vim / | ||
| + | | ||
| + | 127.0.0.1 | ||
| + | localhost | ||
| + | ::1 | ||
| + | *.kenny.ovh | ||
| - | # vim / | + | N' |
| - | + | ||
| - | 127.0.0.1 | + | |
| - | localhost | + | |
| - | ::1 | + | |
| - | *.dams.ovh | + | |
| - | N' | + | |
| 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 / | ||
| + | | ||
| + | mail._domainkey.kenny.ovh kenny.ovh: | ||
| - | # vim / | ||
| - | |||
| - | mail._domainkey.dams.ovh dams.ovh: | ||
| Ajoutez le fichier SigningTable avec le contenu suivant : | Ajoutez le fichier SigningTable avec le contenu suivant : | ||
| + | # vim / | ||
| + | | ||
| + | *@kenny.ovh mail._domainkey.kenny.ovh | ||
| - | # vim / | ||
| - | |||
| - | *@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 / | ||
| + | mkdir kenny.ovh && cd kenny.ovh | ||
| - | cd / | ||
| - | 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' | Certains registrars n' | ||
| Modification des permissions de la clé privée : | Modification des permissions de la clé privée : | ||
| + | chown opendkim: | ||
| - | chown opendkim: | ||
| Les permissions doivent être les suivantes (chmod 400) : | Les permissions doivent être les suivantes (chmod 400) : | ||
| + | ls -lX / | ||
| + | | ||
| + | -rw------- 1 opendkim opendkim 887 août 16 11:28 mail.private | ||
| + | -rw------- 1 root | ||
| - | ls -lX / | ||
| - | |||
| - | -rw------- 1 opendkim opendkim 887 août 16 11:28 mail.private | ||
| - | -rw------- 1 root | ||
| 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' | Le format de l' | ||
| + | mail._domainkey IN TXT " | ||
| - | mail._domainkey IN TXT " | ||
| Et pour finir, on redémarre tous les services : | Et pour finir, on redémarre tous les services : | ||
| + | service postfix | ||
| + | service dovecot | ||
| + | service opendkim restart | ||
| - | service postfix | ||
| - | service dovecot | ||
| - | 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 | ||
| + | update-rc.d dovecot | ||
| + | update-rc.d opendkim defaults | ||
| - | update-rc.d postfix | ||
| - | update-rc.d dovecot | ||
| - | 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' | + | Pour tester le bon fonctionnement d' |
| + | |||
| + | ==== 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' | ||
| + | électronique, | ||
| - | 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' | ||
| - | électronique, | ||
| 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 " | ||
| - | @ IN TXT " | + | Vous pouvez maintenant refaire un test sur ce site : [[http:// |
| - | Vous pouvez maintenant refaire un test sur ce site : http:// | + | |
| Si tout est bon, vous devriez avoir 10/10 : | Si tout est bon, vous devriez avoir 10/10 : | ||
| + | {{: | ||
| + | ==== 13 - DMARC (Domain-based Message Authentication, | ||
| - | 13 - DMARC (Domain-based Message Authentication, | + | DMARC est une spécification technique assez récente (2011), qui est toujours en draft par l' |
| - | DMARC est une spécification technique assez récente (2011), qui est toujours en draft par l'IETF https:// | + | |
| En fait ce mécanisme utilise DKIM et SPF et permet d' | En fait ce mécanisme utilise DKIM et SPF et permet d' | ||
| - | 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' | + | 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' |
| Voici un ptit schéma : | 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 : | 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' | + | '' |
| + | _dmarc | ||
| + | v=DMARC1; | ||
| + | p=reject; | ||
| + | rua=mailto: | ||
| + | ruf=mailto: | ||
| + | adkim=s; | ||
| + | aspf=s; | ||
| + | pct=100; | ||
| + | rf=afrf; | ||
| + | sp=reject | ||
| + | " | ||
| - | _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. |
| - | v=DMARC1; | + | Bon quelques explications s' |
| - | p=reject; | + | |
| - | rua=mailto:postmaster@dams.ovh; | + | * dmarc : L' |
| - | ruf=mailto:admin@dams.ovh; | + | |
| - | 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' | + | |
| + | | ||
| - | dmarc : L' | ||
| - | v=DMARC1 : Version du protocole | ||
| - | p=reject : Bloquer les mails qui ne respectent pas les identificateurs d' | ||
| - | rua=mailto : Aggregate reports - Adresse mail qui recevra les rapports des autres providers (gmail, outlook…etc) concernant DMARC comme les résultats d' | ||
| - | ruf=mailto : Failure report ou Forensic reports - Adresse mail qui recevra les alertes concernant DMARC (échec d' | ||
| - | adkim=s : Identificateur d' | ||
| - | aspf=s : Identificateur d' | ||
| - | pct=100 : Pourcentage des messages sujet au filtrage DMARC | ||
| - | rf=afrf : Authentication Failure Reporting Format - Format du rapport d' | ||
| - | sp=reject : Politique concernant les sous-domaines (voir p=reject plus haut) | ||
| L' | L' | ||
| + | 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 / | ||
| + | | ||
| + | AutoRestart | ||
| + | AutoRestartRate | ||
| + | UMask 0002 | ||
| + | Syslog | ||
| + | | ||
| + | AuthservID | ||
| + | TrustedAuthservIDs | ||
| + | IgnoreHosts | ||
| + | IgnoreMailFrom | ||
| + | RejectFailures | ||
| + | | ||
| + | UserID | ||
| + | PidFile | ||
| + | Socket | ||
| - | # vim / | ||
| - | |||
| - | AutoRestart | ||
| - | AutoRestartRate | ||
| - | UMask 0002 | ||
| - | Syslog | ||
| - | |||
| - | AuthservID | ||
| - | TrustedAuthservIDs | ||
| - | IgnoreHosts | ||
| - | IgnoreMailFrom | ||
| - | RejectFailures | ||
| - | |||
| - | UserID | ||
| - | PidFile | ||
| - | Socket | ||
| Pour que Postfix puisse communiquer avec Opendmarc, on va utiliser un socket, il faut créer le répertoire / | Pour que Postfix puisse communiquer avec Opendmarc, on va utiliser un socket, il faut créer le répertoire / | ||
| + | mkdir / | ||
| + | chown opendmarc: / | ||
| + | usermod -aG opendmarc postfix | ||
| - | mkdir / | ||
| - | chown opendmarc: / | ||
| - | usermod -aG opendmarc postfix | ||
| Ensuite dans le fichier / | Ensuite dans le fichier / | ||
| + | smtpd_milters = unix:/ | ||
| - | smtpd_milters = unix:/ | ||
| 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 819: | 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/ | 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/ | ||
| - | ===== Génération du certificat ===== | + | ==== Génération du certificat ==== |
| - | certbot certonly -d smtp.dams.ovh --email | + | |
| + | certbot certonly -d smtp.kenny.ovh --email | ||
| + | |||
| + | ==== Renouvellement ==== | ||
| - | ===== Renouvellement ===== | ||
| ouvrir le port 80 | ouvrir le port 80 | ||
| arreter le service nginx | arreter le service nginx | ||
| 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. | ||
| Pour cela, tapez la commande suivante : | Pour cela, tapez la commande suivante : | ||
| + | |||
| vi / | vi / | ||
| Localisez et modifiez ces trois lignes: | Localisez et modifiez ces trois lignes: | ||
| - | smtp_tls_CAfile = / | ||
| - | smtpd_tls_cert_file = / | ||
| - | smtpd_tls_key_file = / | ||
| - | ===== Installation dans Dovecot ===== | + | smtp_tls_CAfile |
| + | smtpd_tls_cert_file = / | ||
| + | smtpd_tls_key_file = / | ||
| + | |||
| + | ==== Installation dans Dovecot ==== | ||
| vi / | vi / | ||
| Localisez et modifiez les lignes suivantes : | Localisez et modifiez les lignes suivantes : | ||
| - | ssl_cert = / | ||
| - | ssl_key = / | ||
| - | ===== Pour finir ===== | + | ssl_cert |
| + | ssl_key = / | ||
| + | |||
| + | ==== 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. | ||