Différences

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

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
installer_postfix_avec_le_serveur_de_messagerie_sur_internet [Le 27/08/2020, 13:40]
sefran Correction expression
installer_postfix_avec_le_serveur_de_messagerie_sur_internet [Le 11/09/2022, 11:34] (Version actuelle)
moths-art Suppression des espaces en fin de ligne (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892)
Ligne 1: Ligne 1:
-{{tag>​messagerie courriel postfix MTA serveur ​BROUILLON}}+{{tag>​messagerie courriel postfix MTA serveur}}
  
-====== Installer Postfix ​avec le serveur de messagerie du réseau local ou sur internet ====== +====== Installer Postfix ​pour l'​envoie des courriels vers un serveur de messagerie du réseau local ou d'internet ====== 
-Pour communiquer ​directement ​avec un serveur de messagerie internet ou du [[https://​fr.wikipedia.org/​wiki/​R%C3%A9seau_local|LAN]]. C'est la configuration «système satellite».+Pour expédier ​directement ​sur un serveur de messagerie internet ou du [[https://​fr.wikipedia.org/​wiki/​R%C3%A9seau_local|LAN]] ​vos courriels. C'est la configuration «système satellite», ou ce que l'on appelle dans le cas que nous allons voir ici, un client Postfix sans rôle avec un relaie internet.
  
 Pour plus d'​informations sur la messagerie lire [[:​comment_fonctionne_le_courriel_sous_linux|Comment fonctionne le courriel sous Linux ?]], et sur les principes du serveur Postfix lire [[:​comment_configurer_sa_distribution_de_courriels_systemes_mta|Comment configurer sa distribution de courriels systèmes MTA avec Postfix ?]] Pour plus d'​informations sur la messagerie lire [[:​comment_fonctionne_le_courriel_sous_linux|Comment fonctionne le courriel sous Linux ?]], et sur les principes du serveur Postfix lire [[:​comment_configurer_sa_distribution_de_courriels_systemes_mta|Comment configurer sa distribution de courriels systèmes MTA avec Postfix ?]]
Ligne 13: Ligne 13:
  
 Pour la partie sécurité du serveur [[:​tutoriel:​comment_installer_un_paquet|installez les paquets]] **[[apt>​libsasl2-modules,​libauthen-sasl-cyrus-perl,​ |libsasl2-modules libauthen-sasl-cyrus-perl]]**. Pour la partie sécurité du serveur [[:​tutoriel:​comment_installer_un_paquet|installez les paquets]] **[[apt>​libsasl2-modules,​libauthen-sasl-cyrus-perl,​ |libsasl2-modules libauthen-sasl-cyrus-perl]]**.
- 
-Installer le client [[mutt|Mutt]] de messagerie MUA **[[apt>​mutt|mutt]]** (les clients MUA de mailutils et de bsd-mailx ne supportent que le format mbox pour la gestion locale, vous pouvez aussi utiliser [[https://​neomutt.org|Neomutt]] avec plus de fonctionnalités en remplacement de Mutt **[[apt>​neomutt|Neomutt]]**). 
- 
- 
- 
  
 ===== Définir le gestionnaire de messagerie ===== ===== Définir le gestionnaire de messagerie =====
Ligne 64: Ligne 59:
 {{ :​doc:​10_protocoles.png?​nolink&​600 |}} {{ :​doc:​10_protocoles.png?​nolink&​600 |}}
  
-===== Configurer le client mail MUA système ===== 
-Testez la lecture de la boîte aux lettres : 
-<code bash>​mutt</​code>​ 
- 
-Si vous avez un message du genre : 
-<​code>/​home/​utidisateur/​Mail n'​existe pas. Le créer ? ([oui]/​non):</​code>​ 
-C'est que votre client mail est mal configuré. 
- 
-Tapez : <​code>​n</​code>​ puis pour quitter Mutt <​code>​q</​code>​ 
- 
-==== Configuration du client de courriels ==== 
- 
-Éditer le fichier .muttrc dans votre dossier /​home/​utilisateur (''​kate ~/​.muttrc''​) 
-Et ajouter ou modifier ces lignes : 
-<​file>#​ Configuration de base 
-set realname="​{Prénom NOM}" 
-set header_cache=~/​.mutt/​cache/​headers 
-set certificate_file=~/​.mutt/​certificates 
-set message_cachedir=~/​.mutt/​cache/​bodies 
-set beep 
-set use_from = yes 
- 
-# Boite de réception 
-set spoolfile=~/​.local/​share/​courriels/​arrivées/​ 
-# Boite aux lettres de Mutt 
-set folder=~/​.local/​share/​courriels 
- 
-# Autres dossiers 
-set postponed=+brouillons 
-set record=+envoyés 
- 
-# Encodage à utiliser 
-set charset=utf-8 
-set send_charset=utf-8 
-# Format de la date à afficher avant les citations lors d'une réponse 
-set date_format="​%A %d %B %Y à %I:​%M:​%S%p"​ 
-set index_format="​%4C %Z %{%b %d} %-15.15F (%4l) %s" 
-set fast_reply 
-set include=yes 
- 
-# Configuration SMTP 
-set sendmail="/​usr/​sbin/​sendmail"​ 
-</​file>​ 
  
 ===== Emplacement des boîtes aux lettres des utilisateurs du système ===== ===== Emplacement des boîtes aux lettres des utilisateurs du système =====
-Nous remarquons que le «configurateur» de Postfix n'a pas demandé de préciser où les boîtes aux lettres des utilisateurs sont situées. ​+Nous remarquons que le «configurateur» de Postfix n'a pas demandé de préciser où les boîtes aux lettres des utilisateurs sont situées.
  
 La commande de la file d'​attente : La commande de la file d'​attente :
Ligne 266: Ligne 218:
 Tester la connexion telnet : Tester la connexion telnet :
 <code bash>​telnet localhost 587</​code>​ <code bash>​telnet localhost 587</​code>​
-retourne ​                               +retourne
 <​code>​Trying 127.0.0.1... <​code>​Trying 127.0.0.1...
 Connected to localhost. Connected to localhost.
Ligne 336: Ligne 288:
 <​code>​221 2.0.0 Bye <​code>​221 2.0.0 Bye
 Connection closed by foreign host.</​code>​ Connection closed by foreign host.</​code>​
-Vos échanges de courriels sont maintenant cryptés lors du transport en SMTP. +Vos échanges de courriels sont maintenant cryptés lors du transport en SMTP.
 ===== Mettre en place l'​authentification SASL ===== ===== Mettre en place l'​authentification SASL =====
- +Pour vous connecter sur votre serveur distant relaie avec SASL il vous faut disposer d'un compte et d'un mot de passe. 
-Pour valider la configuration dans Postfix, tapez : +=== Exemple ​de mot de passe SASL Gmail === 
-<code bash>​systemctl restart postfix</​code>​ +Pour un identifiant SASL avec Gmail
- +
-=== Exemple ​avec Gmail === +
-Pour configurer ​Gmail en relaie SMTP+
 == Création du mot de passe applicatif == == Création du mot de passe applicatif ==
 {{ :​doc:​1_accesconfigcompte.png?​nolink |}} {{ :​doc:​1_accesconfigcompte.png?​nolink |}}
Ligne 369: Ligne 318:
 {{ :​doc:​12_resultat.png?​nolink |}} {{ :​doc:​12_resultat.png?​nolink |}}
 Vous avez créé votre mot de passe sécurité Google pour votre application Postfix. Vous avez créé votre mot de passe sécurité Google pour votre application Postfix.
- +==== Configuration ​de l'​identifiant ​du serveur ​de messagerie ​====
-==== Configuration ​des identifiants ​du serveur ====+
 Éditez le fichier /​etc/​postfix/​sasl/​sasl_passwd (''​kate /​etc/​postfix/​sasl/​sasl_passwd''​) : Éditez le fichier /​etc/​postfix/​sasl/​sasl_passwd (''​kate /​etc/​postfix/​sasl/​sasl_passwd''​) :
-<​file>​[smtp.gmail.com]:587    ​mon_compte_gmail:mdp_applicatif_google</​file>​+<​file>​[smtp.fm.fr]:587    ​mon_compte_messagerie:mdp_messagerie</​file>​
  
 Passez la commande pour valider le mot de passe avec Postfix : Passez la commande pour valider le mot de passe avec Postfix :
Ligne 380: Ligne 328:
 <​file>​[smtp.gmail.com]:​587 ​   utilisateur@gmail.com:​ygvpyhldoiqujhth</​file>​ <​file>​[smtp.gmail.com]:​587 ​   utilisateur@gmail.com:​ygvpyhldoiqujhth</​file>​
  
-==== Configuration de Postfix ====+==== Configuration ​du client SASL de Postfix ====
 Modifiez /​etc/​postfix/​main.cf (''​kate /​etc/​postfix/​main.cf''​):​ Modifiez /​etc/​postfix/​main.cf (''​kate /​etc/​postfix/​main.cf''​):​
 <​file>#​ Les interfaces réseau par lesquelles le système de messagerie reçoit les messages. <​file>#​ Les interfaces réseau par lesquelles le système de messagerie reçoit les messages.
 inet_interfaces = loopback-only inet_interfaces = loopback-only
 # La machine par défaut où livrer le courrier au départ lorsqu'​il n'y a aucune destination locale d'​arrivée (mydestination). # La machine par défaut où livrer le courrier au départ lorsqu'​il n'y a aucune destination locale d'​arrivée (mydestination).
-relayhost = [smtp.gmail.com]:587 +relayhost = [smtp.fm.fr]:587
-# Gmail+
 # Active l'​authentification SASL # Active l'​authentification SASL
 smtp_sasl_auth_enable = yes smtp_sasl_auth_enable = yes
 # Désactive l'​authentification anonyme # Désactive l'​authentification anonyme
 smtp_sasl_security_options = noanonymous smtp_sasl_security_options = noanonymous
 +# Location de l'​indentifiant SASL
 +smtp_sasl_password_maps = hash:/​etc/​postfix/​sasl/​sasl_passwd</​file>​
 +
 +=== Exemple avec Gmail ===
 +Modifier en plus de la configuration ci-dessus :
 +<​file>#​ La machine par défaut où livrer le courrier au départ lorsqu'​il n'y a aucune destination locale d'​arrivée (mydestination).
 +relayhost = [smtp.gmail.com]:​587
 +
 +# Modifications pour SASL
 # Pour corriger des erreurs d'​authentification SASL avec GMAIL # Pour corriger des erreurs d'​authentification SASL avec GMAIL
 smtp_sasl_mechanism_filter = plain smtp_sasl_mechanism_filter = plain
-Location de l'​indentifiant SASL + 
-smtp_sasl_password_maps = hash:/​etc/​postfix/​sasl/​sasl_passwd +Modifications pour TLS 
-Active le crytage STARTTLS+Niveau de sécurité dans la négociation du protocole
 smtp_tls_security_level = encrypt smtp_tls_security_level = encrypt
 # Location du certificat CA # Location du certificat CA
-smtp_tls_CAfile = /​etc/​ssl/​certs/​ca-certificates.crt +smtp_tls_CAfile = /​etc/​ssl/​certs/​ca-certificates.crt</​file>​
-</​file>​+
  
-À ce stade, si on redémarre le service Postfix, l'​envoie de messages fonctionnent. Mais nous allons obtenir un message d'​erreur sur l'​expéditeur dans notre client de messagerie MUA à la réception du message. +Pour valider ​la configuration ​dans Postfix, tapez :
-{{ ::​adresseexpincorrecte.png?​nolink&​600 |}} +
- +
-Il faut, pour éviter cela, substituer le nom d'​expéditeur avec le nom de l'​adresse de messagerie du serveur de messagerie pour lequel on envoie le courriel. +
- +
-Éditez le fichier generic (''​kate /​etc/​postfix/​generic''​) et modifiez le comme suivant : +
-<​file>​utilisateur@mon_nom_machine ​            ​username@gmail.com +
-utilisateur@localhost ​                  ​username@gmail.com +
-utilisateur@mondomainemessagerie.fr ​    ​username@gmail.com  +
-root@mondomainemessagerie.fr ​           username@gmail.com +
-sudoer@mondomainemessagerie.fr ​         username@gmail.com</​file>​ +
- +
-Validez pour Postfix les substitutions : +
-<code bash>​sudo postmap /​etc/​postfix/​generic</​code>​ +
- +
-Ajoutez ​dans main.cf (''​kate /​etc/​postfix/​main.cf''​) : +
-<​file>​smtp_generic_maps = hash:/​etc/​postfix/​generic</​file>​ +
- +
-Redémarrer ​Postfix :+
 <code bash>​systemctl restart postfix</​code>​ <code bash>​systemctl restart postfix</​code>​
  
-==== Débogage en cas de problèmes ​====+=== Vérifier l’authentification au serveur SMTP === 
 +Créer un Hash (code crypté de connexion) pour votre identifiant et votre mot de passe messagerie. 
 +<code bash>​python3 -c '​import sys; from base64 import b64encode; print(b64encode(bytes(f"​\000mon_compte_courriel\000mdp_applicatif",​ encoding="​ascii"​)).decode("​ascii"​))'</​code>​
  
-=== Vérifier l'​accès TLS === +ou en perl
-Pour vérifier que la connexion TLS de Gmail fonctionne tapez +<code bash>perl -MMIME::​Base64 ​-le 'print encode_base64("​\000mon_compte_courriel\000mdp_applicatif"​);'​</​code>​
-<code bash>openssl s_client ​-starttls smtp -connect smtp.gmail.com:​587</​code>​ +
-Qui doit donner en sortie: +
-<code bash>​CONNECTED(00000003) +
-depth=2 OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign +
-verify return:1 +
-depth=1 C = US, O = Google Trust Services, CN = GTS CA 1O1 +
-verify return:1 +
-depth=0 C = US, ST = California, L = Mountain View, O = Google LLC, CN = smtp.gmail.com +
-verify return:1 +
---- +
-Certificate chain +
- 0 s:C = US, ST = California, L = Mountain View, O = Google LLC, CN = smtp.gmail.com +
-   i:C = US, O = Google Trust Services, CN = GTS CA 1O1 +
- 1 s:C = US, O = Google Trust Services, CN = GTS CA 1O1 +
-   i:OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign +
---- +
-Server certificate +
------BEGIN CERTIFICATE----- +
-… +
------END CERTIFICATE----- +
-subject=C = US, ST = California, L = Mountain View, O = Google LLC, CN = smtp.gmail.com+
  
-issuer=C = US, O = Google Trust Services, CN = GTS CA 1O1 
- 
---- 
-No client certificate CA names sent 
-Peer signing digest: SHA256 
-Peer signature type: ECDSA 
-Server Temp Key: X25519, 253 bits 
---- 
-SSL handshake has read 2893 bytes and written 429 bytes 
-Verification:​ OK 
---- 
-New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384 
-Server public key is 256 bit 
-Secure Renegotiation IS NOT supported 
-Compression:​ NONE 
-Expansion: NONE 
-No ALPN negotiated 
-Early data was not sent 
-Verify return code: 0 (ok) 
---- 
-250 SMTPUTF8 
-</​code>​ 
- 
-Tapez **quit** pour finir la session : 
-<code bash>​quit</​code>​ 
- 
-Ce qui donne comme résultat : 
-<code bash>--- 
-Post-Handshake New Session Ticket arrived: 
-SSL-Session:​ 
-    Protocol ​ : TLSv1.3 
-    Cipher ​   : TLS_AES_256_GCM_SHA384 
-    Session-ID: … 
-    Session-ID-ctx: ​ 
-    Resumption PSK: … 
-    PSK identity: None 
-    PSK identity hint: None 
-    SRP username: None 
-    TLS session ticket lifetime hint: 172800 (seconds) 
-    TLS session ticket: 
-    … 
- 
-    Start Time: 1597667889 
-    Timeout ​  : 7200 (sec) 
-    Verify return code: 0 (ok) 
-    Extended master secret: no 
-    Max Early Data: 0 
---- 
-read R BLOCK 
---- 
-Post-Handshake New Session Ticket arrived: 
-SSL-Session:​ 
-    Protocol ​ : TLSv1.3 
-    Cipher ​   : TLS_AES_256_GCM_SHA384 
-    Session-ID: … 
-    Session-ID-ctx: ​ 
-    Resumption PSK: … 
-    PSK identity: None 
-    PSK identity hint: None 
-    SRP username: None 
-    TLS session ticket lifetime hint: 172800 (seconds) 
-    TLS session ticket: 
-    … 
-    Start Time: 1597667889 
-    Timeout ​  : 7200 (sec) 
-    Verify return code: 0 (ok) 
-    Extended master secret: no 
-    Max Early Data: 0 
---- 
-read R BLOCK 
-221 2.0.0 closing connection 68sm31076964wra.39 - gsmtp 
-read:​errno=0</​code>​ 
- 
-=== Vérifier l'​autentification au serveur SMTP de Gmail === 
-Creer un Hash (code crypté de connexion) pour votre identifiant Gmail et votre mot de passe applicatif. 
-<code bash>​python3 -c '​import sys; from base64 import b64encode; print(b64encode(bytes(f"​mon_compte_gmail:​mdp_applicatif_google",​ encoding="​ascii"​)).decode("​ascii"​))'</​code>​ 
 Soit pour notre exemple : Soit pour notre exemple :
-<code bash>​python3 -c '​import sys; from base64 import b64encode; print(b64encode(bytes(f"​utilisateur@gmail.com:​ygvpyhldoiqujhth", encoding="​ascii"​)).decode("​ascii"​))'</​code>​ +<code bash>​python3 -c '​import sys; from base64 import b64encode; print(b64encode(bytes(f"​\000utilisateur@gmail.com\000ygvpyhldoiqujhth", encoding="​ascii"​)).decode("​ascii"​))'</​code>​
- +
-ou en perl: +
-<code bash>​perl -MMIME::​Base64 -le 'print encode_base64("​utilisateur\@gmail.com:​ygvpyhldoiqujhth"​);​'</​code>​+
  
 Ce qui donne en sortie : Ce qui donne en sortie :
-<​code>​dXPpbGlzYXRldXJAZ21haWwuY29tOnlndnB5aGxkb2lxdWpodGg=</​code>​+<​code>​AHV0aWxpc2F0ZXVyQGdtYWlsLmNvbQB5Z3ZweWhsZG9pcXVqaHRo</​code>​
  
 Pour vérifier qu'il n'y a pas d'​erreurs : Pour vérifier qu'il n'y a pas d'​erreurs :
-<code bash>​python3 -c '​import sys; from base64 import b64decode; print(b64decode("​dXPpbGlzYXRldXJAZ21haWwuY29tOnlndnB5aGxkb2lxdWpodGg="​).decode("​ascii"​))'</​code>​+<code bash>​python3 -c '​import sys; from base64 import b64decode; print(b64decode("​AHV0aWxpc2F0ZXVyQGdtYWlsLmNvbQB5Z3ZweWhsZG9pcXVqaHRo"​).decode("​ascii"​))'</​code>​
  
-ou en perl +ou en perl : 
-<code bash>​perl -MMIME::​Base64 -le 'print decode_base64("​dXPpbGlzYXRldXJAZ21haWwuY29tOnlndnB5aGxkb2lxdWpodGg="​);'</​code>​+<code bash>​perl -MMIME::​Base64 -le 'print decode_base64("​AHV0aWxpc2F0ZXVyQGdtYWlsLmNvbQB5Z3ZweWhsZG9pcXVqaHRo"​);'</​code>​
  
 Pour vous connecter avec cet identifiant crypté : Pour vous connecter avec cet identifiant crypté :
 <code bash>​openssl s_client -starttls smtp -connect smtp.gmail.com:​587</​code>​ <code bash>​openssl s_client -starttls smtp -connect smtp.gmail.com:​587</​code>​
  
-Puis saisissez : +Puis saisissez :
 <​code>​ehlo domain <​code>​ehlo domain
 250-localpart.domain.part 250-localpart.domain.part
Ligne 555: Ligne 394:
  
 Maintenant c'est le code de Hash de l'​identifiant mot de passe applicatif Google qu'il faut saisir : Maintenant c'est le code de Hash de l'​identifiant mot de passe applicatif Google qu'il faut saisir :
-<​code>​AUTH PLAIN dXPpbGlzYXRldXJAZ21haWwuY29tOnlndnB5aGxkb2lxdWpodGg=</​code>​+<​code>​AUTH PLAIN AHV0aWxpc2F0ZXVyQGdtYWlsLmNvbQB5Z3ZweWhsZG9pcXVqaHRo</​code>​
  
 Vérifiez alors que vous avez la ligne : Vérifiez alors que vous avez la ligne :
-<​code>​235 2.7.0 Authentication successful</​code>​+<​code>​235 2.7.0 Accepted</​code>​ 
 +==== Correction sur l'​expéditeur ==== 
 +À ce stade, si on redémarre le service Postfix, l'​envoie de messages fonctionnent. 
 + 
 +Mais nous allons obtenir un message d'​erreur sur l'​expéditeur dans notre client de messagerie MUA à la réception du message. 
 + 
 +Par exemple dans Gmail : 
 +{{ ::​adresseexpincorrecte.png?​nolink&​600 |}} 
 + 
 +Il faut, pour éviter cela, substituer le nom d'​expéditeur avec le nom de l'​adresse de messagerie du serveur de messagerie pour lequel on envoie le courriel. 
 + 
 +=== Substitution des comptes locaux avec les adresses du fournisseur de messagerie === 
 +Éditez le fichier generic (''​kate /​etc/​postfix/​generic''​) et modifiez le comme suivant : 
 +<​file>​utilisateur@mon_nom_machine ​            ​username@mon_fm.fr 
 +utilisateur@mondomainemessagerie.fr ​    ​username@mon_fm.fr 
 +root@mondomainemessagerie.fr ​           admin@mon_fm.fr 
 +sudoer@mondomainemessagerie.fr ​         admin@mon_fm.fr</​file>​ 
 + 
 +== Exemple avec Gmail == 
 +<​file>​utilisateur@mon_nom_machine ​            ​username@gmail.com 
 +utilisateur@localhost ​                  ​username@gmail.com 
 +utilisateur@mondomainemessagerie.fr ​    ​username@gmail.com 
 +root@mondomainemessagerie.fr ​           username@gmail.com 
 +sudoer@mondomainemessagerie.fr ​         username@gmail.com</​file>​ 
 + 
 +=== Validez pour Postfix les substitutions === 
 +<code bash>​sudo postmap /​etc/​postfix/​generic</​code>​ 
 + 
 +Ajoutez dans main.cf (''​kate /​etc/​postfix/​main.cf''​) : 
 +<​file>​smtp_generic_maps = hash:/​etc/​postfix/​generic</​file>​ 
 + 
 +Redémarrer Postfix : 
 +<code bash>​systemctl restart postfix</​code>​
  
 +Vous pouvez maintenant envoyer vos messages vers votre serveur distant. Mais pour les lire il vous faudra [[:​comment_configurer_sa_distribution_de_courriels_locale_MDA|installer un MDA local]], ou vous connecter sur le MDA de votre serveur de messagerie distant pour les rapatrier dans votre client local de messagerie MUA (Mutt).
  • installer_postfix_avec_le_serveur_de_messagerie_sur_internet.1598528449.txt.gz
  • Dernière modification: Le 27/08/2020, 13:40
  • par sefran