| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
| installer_postfix_avec_le_serveur_de_messagerie_sur_internet [Le 27/08/2020, 14:17] – Correction expression sefran | installer_postfix_avec_le_serveur_de_messagerie_sur_internet [Le 06/06/2024, 15:14] (Version actuelle) – [Installer Postfix pour l'envoie des courriels vers un serveur de messagerie du réseau local ou d'internet] 62.160.154.17 |
|---|
| {{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 ?]] |
| |
| 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 ===== |
| {{ :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 : |
| 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. |
| <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. |
| {{ :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.fm.fr]: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 : |
| <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. |
| <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 |
| <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 |}} |
| |
| É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> |
| <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> |
| <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> | |