Différences
Ci-dessous, les différences entre deux révisions de la page.
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, 14:09] sefran Correction expression |
installer_postfix_avec_le_serveur_de_messagerie_sur_internet [Le 06/06/2024, 15:14] (Version actuelle) 62.160.154.17 [Installer Postfix pour l'envoie des courriels vers un serveur de messagerie du réseau local ou d'internet] |
||
---|---|---|---|
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 relai 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 vous connecter sur votre serveur distant relaie avec SASL il vous faut disposer d'un compte et d'un mot de passe. | ||
Ligne 366: | 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 des identifiants du serveur ==== | + | ==== Configuration de l'identifiant du serveur de messagerie ==== |
É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 376: | 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.fai.fr]:587 | + | relayhost = [smtp.fm.fr]:587 |
# Active l'authentification SASL | # Active l'authentification SASL | ||
smtp_sasl_auth_enable = yes | smtp_sasl_auth_enable = yes | ||
Ligne 390: | Ligne 342: | ||
=== Exemple avec Gmail === | === 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). | <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 | 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 | ||
+ | |||
+ | # Modifications pour TLS | ||
# Niveau de sécurité dans la négociation du protocole | # Niveau de sécurité dans la négociation du protocole | ||
smtp_tls_security_level = encrypt | smtp_tls_security_level = encrypt | ||
Ligne 402: | Ligne 359: | ||
<code bash>systemctl restart postfix</code> | <code bash>systemctl restart postfix</code> | ||
+ | === 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> | ||
+ | |||
+ | ou en perl: | ||
+ | <code bash>perl -MMIME::Base64 -le 'print encode_base64("\000mon_compte_courriel\000mdp_applicatif");'</code> | ||
+ | |||
+ | Soit pour notre exemple : | ||
+ | <code bash>python3 -c 'import sys; from base64 import b64encode; print(b64encode(bytes(f"\000utilisateur@gmail.com\000ygvpyhldoiqujhth", encoding="ascii")).decode("ascii"))'</code> | ||
+ | |||
+ | Ce qui donne en sortie : | ||
+ | <code>AHV0aWxpc2F0ZXVyQGdtYWlsLmNvbQB5Z3ZweWhsZG9pcXVqaHRo</code> | ||
+ | |||
+ | Pour vérifier qu'il n'y a pas d'erreurs : | ||
+ | <code bash>python3 -c 'import sys; from base64 import b64decode; print(b64decode("AHV0aWxpc2F0ZXVyQGdtYWlsLmNvbQB5Z3ZweWhsZG9pcXVqaHRo").decode("ascii"))'</code> | ||
+ | |||
+ | ou en perl : | ||
+ | <code bash>perl -MMIME::Base64 -le 'print decode_base64("AHV0aWxpc2F0ZXVyQGdtYWlsLmNvbQB5Z3ZweWhsZG9pcXVqaHRo");'</code> | ||
+ | |||
+ | Pour vous connecter avec cet identifiant crypté : | ||
+ | <code bash>openssl s_client -starttls smtp -connect smtp.gmail.com:587</code> | ||
+ | |||
+ | Puis saisissez : | ||
+ | <code>ehlo domain | ||
+ | 250-localpart.domain.part | ||
+ | 250-PIPELINING | ||
+ | 250-SIZE 31457280 | ||
+ | 250-VRFY | ||
+ | 250-ETRN | ||
+ | 250-AUTH PLAIN LOGIN | ||
+ | 250-ENHANCEDSTATUSCODES | ||
+ | 250-8BITMIME | ||
+ | 250 DSN</code> | ||
+ | |||
+ | Maintenant c'est le code de Hash de l'identifiant mot de passe applicatif Google qu'il faut saisir : | ||
+ | <code>AUTH PLAIN AHV0aWxpc2F0ZXVyQGdtYWlsLmNvbQB5Z3ZweWhsZG9pcXVqaHRo</code> | ||
+ | |||
+ | Vérifiez alors que vous avez la ligne : | ||
+ | <code>235 2.7.0 Accepted</code> | ||
==== Correction sur l'expéditeur ==== | ==== Correction sur l'expéditeur ==== | ||
- | À ce stade, si on redémarre le service Postfix, l'envoie de messages fonctionnent. | + | À 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. | 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 |}} | {{ ::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. | 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 l'adresse du compte de connexion du fournisseur de messagerie === | + | === Substitution des comptes locaux avec les adresses du fournisseur de messagerie === |
Éditez le fichier generic (''kate /etc/postfix/generic'') et modifiez le comme suivant : | Éditez le fichier generic (''kate /etc/postfix/generic'') et modifiez le comme suivant : | ||
<file>utilisateur@mon_nom_machine username@mon_fm.fr | <file>utilisateur@mon_nom_machine username@mon_fm.fr | ||
- | utilisateur@mondomainemessagerie.fr username@mon_fm.fr | + | utilisateur@mondomainemessagerie.fr username@mon_fm.fr |
root@mondomainemessagerie.fr admin@mon_fm.fr | root@mondomainemessagerie.fr admin@mon_fm.fr | ||
sudoer@mondomainemessagerie.fr admin@mon_fm.fr</file> | sudoer@mondomainemessagerie.fr admin@mon_fm.fr</file> | ||
Ligne 420: | Ligne 418: | ||
<file>utilisateur@mon_nom_machine username@gmail.com | <file>utilisateur@mon_nom_machine username@gmail.com | ||
utilisateur@localhost username@gmail.com | utilisateur@localhost username@gmail.com | ||
- | utilisateur@mondomainemessagerie.fr username@gmail.com | + | utilisateur@mondomainemessagerie.fr username@gmail.com |
root@mondomainemessagerie.fr username@gmail.com | root@mondomainemessagerie.fr username@gmail.com | ||
sudoer@mondomainemessagerie.fr username@gmail.com</file> | sudoer@mondomainemessagerie.fr username@gmail.com</file> | ||
Ligne 433: | Ligne 431: | ||
<code bash>systemctl restart postfix</code> | <code bash>systemctl restart postfix</code> | ||
- | ==== Débogage en cas de problèmes ==== | + | 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). |
- | === 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 : | + | |
- | <code bash>python3 -c 'import sys; from base64 import b64encode; print(b64encode(bytes(f"utilisateur@gmail.com:ygvpyhldoiqujhth", 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 : | + | |
- | <code>dXPpbGlzYXRldXJAZ21haWwuY29tOnlndnB5aGxkb2lxdWpodGg=</code> | + | |
- | + | ||
- | 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> | + | |
- | + | ||
- | ou en perl | + | |
- | <code bash>perl -MMIME::Base64 -le 'print decode_base64("dXPpbGlzYXRldXJAZ21haWwuY29tOnlndnB5aGxkb2lxdWpodGg=");'</code> | + | |
- | + | ||
- | Pour vous connecter avec cet identifiant crypté : | + | |
- | <code bash>openssl s_client -starttls smtp -connect smtp.gmail.com:587</code> | + | |
- | + | ||
- | Puis saisissez : | + | |
- | <code>ehlo domain | + | |
- | 250-localpart.domain.part | + | |
- | 250-PIPELINING | + | |
- | 250-SIZE 31457280 | + | |
- | 250-VRFY | + | |
- | 250-ETRN | + | |
- | 250-AUTH PLAIN LOGIN | + | |
- | 250-ENHANCEDSTATUSCODES | + | |
- | 250-8BITMIME | + | |
- | 250 DSN</code> | + | |
- | + | ||
- | Maintenant c'est le code de Hash de l'identifiant mot de passe applicatif Google qu'il faut saisir : | + | |
- | <code>AUTH PLAIN dXPpbGlzYXRldXJAZ21haWwuY29tOnlndnB5aGxkb2lxdWpodGg=</code> | + | |
- | + | ||
- | Vérifiez alors que vous avez la ligne : | + | |
- | <code>235 2.7.0 Authentication successful</code> | + |