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
comment_configurer_sa_distribution_de_courriels_systemes_mta [Le 24/08/2020, 15:11]
sefran Correction expression
comment_configurer_sa_distribution_de_courriels_systemes_mta [Le 06/10/2022, 00:56] (Version actuelle)
sefran Mise en page
Ligne 1: Ligne 1:
-{{tag>​messagerie ​BROUILLON}}+{{tag>​messagerie ​courriel postfix MTA serveur}}
  
 ====== Comment configurer sa distribution de courriels systèmes MTA avec Postfix ? ====== ====== Comment configurer sa distribution de courriels systèmes MTA avec Postfix ? ======
-Paramétrer ​un serveur de messagerie ​est un processus complexe mettant en œuvre de nombreux programmes (MTA, MDA, MUA et des filtrages), qui ont chacun besoin ​d'être correctement configurés. Voir l'​explication pédagogique ​[[:comment_fonctionne_le_courriel_sous_linux|Comment fonctionne le courriel ​sous Linux ?]] pour vous aider sur la compréhension de ce qu'est la messagerie. +Pour comprendre comment configurer ​un serveur de messagerie MTA lire d'abord [[:comment_configurer_un_serveur_de_messagerie_mta|Configurer un serveur de messagerie MTA sous Ubuntu]]
- +
-La meilleure approche est d'​installer et configurer chaque composant individuellement,​ et s'​assurer que chacun fonctionne. Ceci va permettre de construire son serveur de messagerie progressivement.+
  
 Ici nous allons étudier le serveur de messageries **Postfix** porté par IBM qui est le serveur par défaut d'​Ubuntu. Il est le successeur de Sendmail avec pour but d'en résoudre les problèmes de sécurité, et d'​offrir une administration beaucoup plus souple et modulaire que ce dernier. Ici nous allons étudier le serveur de messageries **Postfix** porté par IBM qui est le serveur par défaut d'​Ubuntu. Il est le successeur de Sendmail avec pour but d'en résoudre les problèmes de sécurité, et d'​offrir une administration beaucoup plus souple et modulaire que ce dernier.
 <note important>​D'​autres serveurs de messagerie MTA existent comme : [[:​exim4-satellite|Exim]],​ [[:​ssmtp|ssmtp]],​ [[:​msmtp|msmtp]] avec le [[:​tutoriel:​comment envoyer un mail par smtp en ligne de commande|tutoriel]],​ Qmail, [[http://​www.xmailserver.org/​|XMail]],​ [[https://​chezmanu.eu.org/​opensmtpd_dovecot.htm|OpenSMTPD]],​ Lotus Notes, Exchange, etc.</​note>​ <note important>​D'​autres serveurs de messagerie MTA existent comme : [[:​exim4-satellite|Exim]],​ [[:​ssmtp|ssmtp]],​ [[:​msmtp|msmtp]] avec le [[:​tutoriel:​comment envoyer un mail par smtp en ligne de commande|tutoriel]],​ Qmail, [[http://​www.xmailserver.org/​|XMail]],​ [[https://​chezmanu.eu.org/​opensmtpd_dovecot.htm|OpenSMTPD]],​ Lotus Notes, Exchange, etc.</​note>​
- 
 ===== Le serveur de messagerie ===== ===== Le serveur de messagerie =====
 **Postfix** est ce que l'on appelle en anglais un **MTA** (Mail Transfer Agent). Le MTA, le Centre de Distribution des Courriels, est un serveur de messagerie qui : **Postfix** est ce que l'on appelle en anglais un **MTA** (Mail Transfer Agent). Le MTA, le Centre de Distribution des Courriels, est un serveur de messagerie qui :
Ligne 30: Ligne 27:
  
 Modifiez alors les variables de ce fichier comme ci-dessous : Modifiez alors les variables de ce fichier comme ci-dessous :
-  * Pour ne relayer que la supervision de la messagerie : +  * Pour ne relayer que la supervision de la messagerie :
 <​file>​postmasteur:​ votre_compte_linux # pour relayer par l'​utilisateur votre_compte_linux,​ avec la messagerie, la supervision de la messagerie.</​file>​ <​file>​postmasteur:​ votre_compte_linux # pour relayer par l'​utilisateur votre_compte_linux,​ avec la messagerie, la supervision de la messagerie.</​file>​
   * Si l'​administrateur du serveur est le même que celui de la messagerie :   * Si l'​administrateur du serveur est le même que celui de la messagerie :
Ligne 87: Ligne 84:
 Exemple : Exemple :
 <​file>​home_mailbox = Mailbox/ # Les boites aux lettres des utilisateurs se trouvent dans /​home/​«utilisateur»/​Mailbox/​ et sont au format Maildir. <​file>​home_mailbox = Mailbox/ # Les boites aux lettres des utilisateurs se trouvent dans /​home/​«utilisateur»/​Mailbox/​ et sont au format Maildir.
-home_mailbox = .local/​share/​local-mail/​inbox/​ # Les boites aux lettres des utilisateurs se trouvent dans /​home/​«utilisateur»/​.local/​share/​local-mail/​inbox/ ​+home_mailbox = .local/​share/​local-mail/​inbox/​ # Les boites aux lettres des utilisateurs se trouvent dans /​home/​«utilisateur»/​.local/​share/​local-mail/​inbox/​
 home_mailbox = .local/​share/​akonadi_maildir_ressource_0/​inbox/​ # La boite aux lettres des utilisateurs kmail</​file>​ home_mailbox = .local/​share/​akonadi_maildir_ressource_0/​inbox/​ # La boite aux lettres des utilisateurs kmail</​file>​
 <note tip> Pour avoir une boite aux lettres au format **Mailbox** (tout dans un fichier) il faut une syntaxe du genre **répertoire/​chemin/​fichier_boite_aux_lettres** . Pour le format **Maildir** (avec des répertoires) il faudra l'​écrire comme un répertoire **répertoire/​chemin/​répertoire_boite_aux_lettres/​** .</​note>​ <note tip> Pour avoir une boite aux lettres au format **Mailbox** (tout dans un fichier) il faut une syntaxe du genre **répertoire/​chemin/​fichier_boite_aux_lettres** . Pour le format **Maildir** (avec des répertoires) il faudra l'​écrire comme un répertoire **répertoire/​chemin/​répertoire_boite_aux_lettres/​** .</​note>​
Ligne 101: Ligne 98:
 La variable **myorigin** est alors utilisée par **Postfix** pour spécifier le nom de votre serveur de courriels comme centre de distribution des messages. La variable **myorigin** est alors utilisée par **Postfix** pour spécifier le nom de votre serveur de courriels comme centre de distribution des messages.
  
-Exemples : +Exemples :
 <​file>​myorigin = $myhostname #​ envoie le courriel comme «utilisateur@valeur_de_myhostname» <​file>​myorigin = $myhostname #​ envoie le courriel comme «utilisateur@valeur_de_myhostname»
 myorigin = $mydomain # envoie le courriel comme «utilisateur@valeur_de_mydomain» (a privilégier pour respecter le principe d'​adresse de centre de distribution des messages) myorigin = $mydomain # envoie le courriel comme «utilisateur@valeur_de_mydomain» (a privilégier pour respecter le principe d'​adresse de centre de distribution des messages)
Ligne 167: Ligne 164:
  
 ==== Comment sécuriser le SMTP ==== ==== Comment sécuriser le SMTP ====
- 
 === Bloquer le port SMTP standard === === Bloquer le port SMTP standard ===
- 
-Pour lutter contre le SPAM engendré par les machines zombies (machines infectées par des virus servant de relais aux spammeurs), la plupart des FAI ont décidé de bloquer le port 25 en sortie (dans le sens "​Abonné -> Internet"​),​ utilisé par défaut par le protocole SMTP. Dans ce cas, le port 25 n'est ouvert que pour le serveur SMTP de votre FAI ( du type smtp.monprovider.com). 
-Ceci empêche la mise en place d'un serveur SMTP chez soi (en tous cas pour l'​envoi vers Internet sans passer par le relais SMTP du provider). 
-Ceci empêche également l'​envoi depuis votre ligne ADSL vers votre serveur hébergé sur Internet (de type Dedibox, OVH, etc.) 
- 
-Si vous êtes abonné Free avec une Freebox, vous pouvez débloquer l'​envoi par le port 25 dans l'​interface de gestion : 
-//​Fonctionnalités optionnelles de la Freebox → Autres fonctions → Blocage SMTP sortant//. 
- 
-Chez Neuf, ce filtrage est aussi actif. Pour changer les paramètres,​ allez dans l'​interface de gestion de votre Neuf Box, Puis dans //Réseau → Filtrage//, décochez la case //Autoriser l'​envoi de courriels uniquement par l'​intermédiaire des serveurs mail du groupe SFR//. 
- 
-D'une manière générale, regardez les options de votre Box pour désactiver ce filtrage. Chez certains fournisseurs d'​accès à internet, la fonctionnalité n'est pas « débridable ». Une solution autre que de passer par le smtp de votre fournisseur d'​accès,​ est de ne pas passer par le port 25 pour contourner le filtrage mais ceci vous oblige donc a passer par un relais sous votre contrôle… 
- 
 Pour modifier le port d'​Émission de votre serveur, dans /​etc/​postfix/​main.cf,​ modifier RELAYHOST comme ceci: Pour modifier le port d'​Émission de votre serveur, dans /​etc/​postfix/​main.cf,​ modifier RELAYHOST comme ceci:
 ''​relayhost = [serveursmtp]:​port'' ​ ''​relayhost = [serveursmtp]:​port'' ​
 ( EX : ''​relayhost = [smtp.orange-business.com]:​587''​) ( EX : ''​relayhost = [smtp.orange-business.com]:​587''​)
  
-Il est également possible d'​utiliser le port 587 en lieu et place du port 25, pour cela, éditer le fichier /​etc/​postfix/​master.cf et ajoutez ​+Il est également possible d'​utiliser le port 587 en lieu et place du port 25, pour cela, éditer le fichier /​etc/​postfix/​master.cf et ajouter
  
   587     ​inet ​   n       ​- ​      ​y ​      ​- ​      ​- ​      smtpd   587     ​inet ​   n       ​- ​      ​y ​      ​- ​      ​- ​      smtpd
Ligne 197: Ligne 181:
         -o content_filter=dksign:​[127.0.0.1]:​12028         -o content_filter=dksign:​[127.0.0.1]:​12028
  
-=== Authentifier ​les connections au serveur SMTP === +=== Crypter ​les connections au serveur SMTP ===
- +
-Postfix doit être utilisé avec SASL, cela va assurer l'​authentification SMTP (pour éviter que des spammeurs utilisent votre serveur pour envoyer du spam), ainsi qu'un chiffrement via SSL/TLS. +
-===== Installation du serveur de messagerie Postfix ===== +
-[[:​tutoriel:​comment_installer_un_paquet|Installez les paquets du serveur de messagerie]] **[[apt>​postfix|postfix]]** et le client de messagerie MUA [[mutt|Mutt]] **[[apt>​mutt|mutt]]** (les clients MUA de mailutils et de bsd-mailx ne supportent que le format mbox pour la gestion locale).  +
- +
-Choisir «pas de configuration» pour postfix ou si vous avez fait [[:​comment_configurer_sa_distribution_de_courriels_systemes_mta#​definir_le_gestionnaire_de_messagerie|Définir le gestionnaire de messagerie]] vous pouvez choisir le type d'​installation du serveur pour continuer. +
- +
- +
-[[:​tutoriel:​comment_installer_un_paquet|Pour la partie sécurité du serveur installez les paquets]] **[[apt>​postfix,​mailutils,​sasl2-bin,​libdb5.1|libsasl2-modules libsasl2-modules-sql libgsasl7 libauthen-sasl-cyrus-perl sasl2-bin libpam-mysql]]**. +
-===== Définir le gestionnaire de messagerie ===== +
-**Vous devez définir qui va avoir la supervision de la messagerie**. Donc si l'​utilisateur root est le superviseur de la messagerie, ou si c'est un utilisateur du système (serveur ou desktop Linux). Le fichier **/​etc/​aliases** (''​kate /​etc/​aliases''​) est à paramétrer comme suit. +
- +
-Avec l'​utilisateur directement gestionnaire de messagerie : +
-<​file>​postmaster: ​   utilisateur</​file>​ +
- +
-Avec l'​utilisateur gestionnaire de la machine Linux (relais postmater à l'​utilisateur root) : +
-<​file>​postmaster: ​   root +
-root:    utilisateur</​file>​ +
- +
-Valider dans Postfix la configuration : +
-<code bash>​sudo postalias /​etc/​aliases</​code>​ +
- +
-<note warning>​Par défaut, lors de la configuration du serveur de messagerie, celui-ci sera positionné avec l'​utilisateur root</​note>​ +
- +
-===== Un serveur de messagerie local au serveur ou au poste de travail ===== +
-Pour une correspondance entre vos utilisateurs et avec vos applications locales. +
- +
-==== Configurer le serveur de messagerie à l'​installation ==== +
-Vous pouvez maintenant configurer le serveur de messagerie Postfix.  +
- +
-Si votre application est déjà installée, tapez : +
-<code bash>​sudo dpkg-reconfigure postfix</​code>​ +
- +
- +
-Entrez les détails suivants +
-{{ :​doc:​01_ecrandemarage.png?​nolink |}} +
-Touche tabulation pour basculer sur OK, et touche Entrée pour valider le message d'​information. +
- +
- +
-{{ :​doc:​02_localuniquement2.png?​nolink |}} +
-Choisissez le type de configuration automatique Postfix de serveur de messagerie que vous voulez faire. Ici c'est **Local Uniquement** +
- +
- +
-{{ :​doc:​03_nomducourriel_local.png?​nolink |}} +
-Ici on va fixer le non de domaine de messagerie (par exemple @local.fr). Donc **saisissez le nom du domaine de messagerie que vous voulez pour vos courriels locaux** des utilisateurs de la machine. +
- +
-La variable du fichier Ubuntu **/​etc/​mailname** et le paramètre Postfix **myorigin** sont donc paramétrés ici. +
- +
- +
-{{ :​doc:​04_adminserveur_local.png?​nolink |}} +
-Ici on fixe le gestionnaire de messagerie.  +
-<note warning>​Si vous n'avez pas précisé en amont de cette configuration le gestionnaire de messagerie, le configurateur du serveur de messagerie remplacera le nom d'​utilisateur que vous avez saisie par root dans le fichier /​etc/​aliases (''​postmaster:​ root''​)</​note>​ +
- +
- +
-{{ :​doc:​05_domainesmessagerie_locale.png?​nolink |}} +
-Ici on fixe les domaines de messagerie à accepter comme courriels au départ. +
- +
-C'est la variable **mydestination** du fichier /​etc/​postfix/​main.cf qui est modifiée. +
- +
- +
-{{ :​doc:​06_synchrofileattente.png?​nolink |}} +
- +
- +
-{{ :​doc:​07_reseauxdistribution_aucun.png?​nolink |}} +
-Définit sur quel réseau distribuer les courriels. +
- +
-C'est la variable **mynetworks** du fichier /​etc/​postfix/​main.cf qui est modifiée. +
- +
- +
-{{ :​doc:​08_taillebal.png?​nolink |}} +
-Fixe un taille limite pour les boites aux lettres des comptes utilisateur du système. +
- +
-C'est la variable **mailbox_size_limit** du fichier /​etc/​postfix/​main.cf qui est modifiée. +
- +
- +
-{{ :​doc:​09_extadresse.png?​nolink |}} +
-Définit une extension pour des sous domaines de messagerie. +
- +
-C'est la variable **recipient_delimiter** du fichier /​etc/​postfix/​main.cf qui est modifiée. +
- +
- +
-{{ :​doc:​10_protocoles.png?​nolink |}} +
-Définit les protocoles du réseaux de transport qui doivent être utiliser. +
- +
-C'est la variable **inet_protocols** du fichier /​etc/​postfix/​main.cf qui est modifiée. +
- +
-==== Configurations complémentaires ==== +
-=== Emplacement des boîtes aux lettres des utilisateurs du système === +
-Nous remarquons que le «configurateur» de Postfix ne demande pas de préciser où les boîtes aux lettres des utilisateurs sont situées.  +
- +
-Si on passe la commande : +
-<code bash>​postconf home_mailbox</​code>​ +
-Nous avons : +
-<​code>​home_mailbox =</​code>​ +
-Nous voyons alors que les boîtes aux lettres des utilisateurs se situent dans /​var/​mail/​utilisateur ce qui est une configuration boîte postale. +
- +
-Il nous faudra donc éditer le fichier /​etc/​postfix/​main.cf (''​kate /​etc/​postfix/​main.cf''​) et ajouter la variable **home_mailbox** pour vos utilisateurs. +
- +
-Par exemple : +
-<​file>​home_mailbox = .local/​share/​courriels/​arrivées/​ # au format maildir</​file>​ +
-afin que le courriel soit directement distribué dans la boîte aux lettres locale de l'​utilisateur. +
- +
-Pour valider la configuration de postfix, tapez : +
-<code bash>​systemctl restart postfix</​code>​ +
- +
-== 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 <​code>​q</​code>​ pour quitter Mutt. +
- +
-Éditez le fichier .muttrc dans votre dossier /​home/​utilisateur (''​kate ~/​.muttrc''​) +
-Et ajoutez ou modifiez 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>​ +
- +
-=== Configurer une distribution SMTP locale sécurisée === +
-== Bloquer le port 25 SMTP standard == +
-Déjà testons que le port 25 est ouvert. +
-Pour cela tapez la commande : +
-<code bash>​telnet localhost 25</​code>​ +
- +
-Ce qui affiche +
-<​code>​Trying 127.0.0.1... +
-Connected to localhost. +
-Escape character is '​^]'​. +
-220 HP-ProBook-6450b ESMTP Postfix (Ubuntu)</​code>​ +
- +
-Tapez : +
-<​code>​HELO HP-ProBook-6450b</​code>​ +
-retourne +
-<​code>​250 HP-ProBook-6450b</​code>​ +
- +
-Puis saisissez l'​identifiant d'un compte local : +
-<​code>​MAIL FROM: utilisateur</​code>​ +
-retourne +
-<​code>​250 2.1.0 Ok</​code>​ +
- +
-Saisissez le destinataire : +
-<​code>​RCPT TO: utilisateur@localhost</​code>​ +
-retourne +
-<​code>​250 2.1.5 Ok</​code>​ +
- +
-Saisissez : +
-<​code>​DATA</​code>​ +
-retourne +
-<​code>​354 End data with <​CR><​LF>​.<​CR><​LF></​code>​ +
- +
-Et enfin vous pouvez saisir votre courriel : +
-<​code>​From:​ utilisateur +
-To: franc +
-Subject: Test de message sur port 25 +
-Ceci est un test d'​envoie sur port 25 +
-Merci de votre coopération +
-.</​code>​ +
-retourne +
-<​code>​250 2.0.0 Ok: queued as 9E77AA02321</​code>​ +
- +
-Pour quitter tapez : +
-<​code>​QUIT</​code>​ +
-retourne +
-<​code>​221 2.0.0 Bye +
-Connection closed by foreign host.</​code>​ +
- +
-== Blocage du port == +
-Modifier le fichier master.cf (''​kate /​etc/​postfix/​master.cf''​) +
- +
-Changer <​file>​smtp ​     inet  n       ​- ​      ​y ​      ​- ​      ​- ​      ​smtpd</​file>​ +
- +
-en +
-<​file>​587 ​    ​inet ​   n       ​- ​      ​y ​      ​- ​      ​- ​      ​smtpd +
-      -o content_filter=dksign:​[127.0.0.1]:​12028</​file>​ +
- +
-Redémarrage de Postfix pour valider les changements : +
-<code bash>​systemctl restart postfix</​code>​ +
- +
-Test du verrouillage du port 25 : +
-<code bash>​telnet localhost 25</​code>​ +
-retourne +
-<​code>​Trying 127.0.0.1... +
-telnet: Unable to connect to remote host: Connection refused</​code>​ +
- +
-Test de l'​accès sur le port 587 : +
-<code bash>​telnet localhost 587</​code>​ +
-retourne +
-<​code>​Trying 127.0.0.1... +
-Connected to localhost. +
-Escape character is '​^]'​. +
-220 HP-ProBook-6450b ESMTP Postfix (Ubuntu)</​code>​ +
- +
-Tapez pour quitter : +
-<​code>​QUIT</​code>​ +
-retourne +
-<​code>​221 2.0.0 Bye +
-Connection closed by foreign host.</​code>​ +
- +
-Vous pouvez ajouter la directive <​file>​smtpd_banner = $myhostname ESMTP (Messagerie)</​file>​ dans le fichier main.cf si vous voulez plus de sécurité. cela retournera lors de la connexion telnet sur le port 587 : +
-<​code>​Trying 127.0.0.1... +
-Connected to localhost. +
-Escape character is '​^]'​. +
-220 HP-ProBook-6450b ESMTP (Messagerie)</​code>​ +
- +
-== Mettre en place l'​authentification TLS SASL == +
-**Validation du transport TLS** +
-Pour valider le transport TLS il faut modifier le fichier main.cf (''​kate /​etc/​postfix/​main.cf''​) comme suit : +
-<​file>#​ TLS pour le serveur smtpd de Postfix +
-tls_random_source = dev:/​dev/​urandom +
-smtpd_use_tls = yes +
-smtpd_tls_auth_only = no +
-smtpd_tls_security_level = may +
-smtpd_tls_cert_file = /​etc/​ssl/​certs/​ssl-cert-snakeoil.pem +
-smtpd_tls_key_file = /​etc/​ssl/​certs/​ssl-cert-snakeoil.key +
-#​smtpd_tls_CAfile = /​etc/​ssl/​certs/​… +
-smtpd_relay_restrictions = permit_sasl_authenticated permit_mynetworks defer_unauth_destination +
- +
-# TLS pour le client +
-smtp_use_tls = yes +
-smtp_tls_CApath = /​etc/​ssl/​certs +
-smtp_tls_security_level = may +
-smtp_tls_session_cache_database = btree:​${data_directory}/​smtp_scache</​file>​ +
- +
-**Postfix doit être membre du groupe sasl** +
-<code bash>​getent group sasl</​code>​ +
-doit retourner +
-<​code>​sasl:​x:​45:​postfix</​code>​ +
- +
-Pour ajouter l'​utilisateur postfix au groupe sasl, tapez dans un [[terminal]] : +
-<code bash>​sudo adduser postfix sasl</​code>​ +
- +
-**Voir quelles sont les types d'​authentifications acceptées par Postfix** +
-Pour le serveur smtpd de Postfix : +
-<code bash>​postconf -a</​code>​ +
-retourne +
-<​code>​cyrus +
-dovecot</​code>​ +
- +
-Pour le client smtp de Posfix : +
-<code bash>​postconf -A</​code>​ +
-retourne +
-<​code>​cyrus</​code>​ +
- +
-**Configurons le serveur smtpd de postfix pour accepter l'​authentification TLS par SASL** +
-Afin de permettre l'​authentification SASL par Postfix, il va être nécessaire de modifier la configuration générale. Nous allons ajouter les options suivantes à main.cf afin de n'​autoriser l'​accès au SMTP qu'aux utilisateurs identifiés (par un login qui est leur adresse e-mail, et le mot de passe de ce compte e-mail). +
- +
-Éditer le fichier main.cf (kate /​etc/​postfix/​main.cf) et modifiez/​ajoutez les lignes suivantes : +
-<​file>#​ Paramétrages SASL du serveur smtpd de Postfix +
-smtpd_sasl_local_domain = $myhostname # Domaine d'​authentification SASL, n'​autoriser l'​accès au SMTP qu'aux utilisateurs identifiés. +
-smtpd_sasl_auth_enable = yes # Active l'​authentification SASL pour le serveur smtpd de Postfix +
-smtpd_sasl_security_options = noanonymous # Interdit les méthodes qui autorisent l'​authentification anonyme. +
-broken_sasl_auth_clients = no # Active l’interopérabilité avec les clients SMTP qui implémentent une version obsolète de la commande AUTH (RFC 2554). MicroSoft Outlook Express version 4 et Exchange version 5.0 sont des exemples de tels clients. +
-smtpd_recipient_restrictions = permit_sasl_authenticated,​permit_mynetworks,​reject_unauth_destination # Restrictions d'​accès que le serveur smtpd de Postfix applique dans le contexte d'une commande RCPT TO. La première restriction qui correspond gagne. +
-# Donc autorise les connections authentifiées SASL, si ce n'est pas le cas les réseaux de mynetworks, et enfin rejette les connections non authentifiés</​file>​ +
- +
-**Sécuriser le transport SMTP** +
-Pour cela il faut modifier le fichier master.cf (''​kate /​etc/​postfix/​master.cf''​) comme ci-dessous : +
-<​file>​submission inet n       ​- ​      ​n ​      ​- ​      ​- ​      ​smtpd +
-  -o syslog_name=postfix/​submission +
-  -o smtpd_tls_security_level=encrypt +
-  -o smtpd_sasl_auth_enable=yes +
-  -o smtpd_tls_auth_only=yes +
-  -o smtpd_reject_unlisted_recipient=no +
-#  -o smtpd_client_restrictions=$mua_client_restrictions +
-#  -o smtpd_helo_restrictions=$mua_helo_restrictions +
-#  -o smtpd_sender_restrictions=$mua_sender_restrictions +
-  -o smtpd_recipient_restrictions= +
-  -o smtpd_relay_restrictions=permit_sasl_authenticated,​reject +
-  -o milter_macro_daemon_name=ORIGINATING</​file>​ +
- +
-Pour valider la configuration de postfix, tapez : +
-<code bash>​systemctl restart postfix</​code>​ +
- +
- +
-== Configurer le client mail MUA système pour l'​authentification SASL == +
-Le client Mutt devrait fonctionner de façon transparente en local. +
- +
-Pour vérifier l’authentification au serveur SMTP en TLS SASL. +
-Créer un Hash (code crypté de connexion) pour votre identifiant local et de son mot de passe. +
- +
-<code bash>​python3 -c '​import sys; from base64 import b64encode; print(b64encode(bytes(f"​mon_compte_local@localhost:​mdp_de_utilisateur",​ encoding="​ascii"​)).decode("​ascii"​))'</​code>​ +
-ou en perl: +
-<code bash>​perl -MMIME::​Base64 -le 'print encode_base64("​mon_compte_local\@localhost:​mdp_de_utilisateur"​);'</​code>​ +
-Ce qui donne en sortie : +
-<​code>​dXRpbGlzYXRldXJAbG9jYWxob3N0Om1kcF9kZV91dGlsaXNhdGV1cg==</​code>​ +
- +
-Pour vérifier qu'il n'y a pas d'​erreurs : +
-<code bash>​python3 -c '​import sys; from base64 import b64decode; print(b64decode("​dXRpbGlzYXRldXJAbG9jYWxob3N0Om1kcF9kZV91dGlsaXNhdGV1cg=="​).decode("​ascii"​))'</​code>​ +
-ou en perl +
-<code bash>​perl -MMIME::​Base64 -le 'print decode_base64("​dXRpbGlzYXRldXJAbG9jYWxob3N0Om1kcF9kZV91dGlsaXNhdGV1cg=="​);'</​code>​ +
- +
-Pour vous connecter avec cet identifiant crypté : +
-<code bash>​openssl s_client -starttls smtp -connect localhost:​587</​code>​ +
- +
-Puis saisissez : +
-<​code>​ehlo domain +
-250-localpart.domain.part +
-250-PIPELINING +
-250-SIZE 31457280 +
-250-VRFY +
-250-ETRN +
-250-AUTH DIGEST-MD5 NTLM CRAM-MD5 PLAIN LOGIN +
-250-ENHANCEDSTATUSCODES +
-250-8BITMIME +
-250-DSN +
-250-SMTPUTF8 +
-250 CHUNKING</​code>​ +
- +
-Maintenant c'est le code de Hash de l'​identifiant mot de passe applicatif Google qu'il faut saisir : +
-<​code>​AUTH LOGIN dXRpbGlzYXRldXJAbG9jYWxob3N0Om1kcF9kZV91dGlsaXNhdGV1cg==</​code>​ +
- +
-Vérifiez alors que vous avez une ligne avec un résultat crypté : +
-<​code>​334 UGFzc3dvcmQ6</​code>​ +
- +
-Si l'​identifiant crypté n'est pas bon vous aurez : +
-<​code>​535 5.7.8 Error: authentication failed: another step is needed in authentication</​code>​ +
-Si le protocole de connexion n'est pas bon vous aurez: +
-<​code>​535 5.7.8 Error: authentication failed: bad protocol / cancel</​code>​ +
- +
-=== Centraliser les messages sur des boites aux lettres postales pour éviter les failles de sécurités des utilisateurs locaux peux respectueux des consignes de sécurités === +
-Pour un poste de travail multi-utilisateurs chez soit, ce genre de configuration de boîtes aux lettres par utilisateurs peut-être intéressante pour la messagerie système et entre utilisateurs locaux. +
-   +
-Dans un environnement professionnel où le serveur de messagerie est sur un réseau local, il est préférable d'​avoir des boites aux lettres postales (/​var/​mail/​utilisateur). Cela permet d'​avoir plusieurs niveaux de contrôles de sécurités. Le premier aux niveau du serveur de messagerie MTA (filtrages SPAM et antivirus). Le deuxième au niveau du MDA (Mail Delivery Agent aussi avec des outils anti-SPAMs et anti-virus) qu'il faudra installer. Un troisième niveau peut-être mis en place au niveau du client de messagerie MUA sur le poste de travail avec un serveur local sur le modèle ci-dessus complété par [[comment_configurer_sa_distribution_de_courriels_systemes_mta#​un_serveur_local_avec_un_serveur_relaie_internet|relaie vers le serveur de messagerie du réseau]]. +
-Pour cela il faut supprimer la directive <​file>​home_mailbox= ...</​file>​ du fichier de configuration main.cf de Postfix. Et modifier le client MUA Mutt avec <​file>​set spoolfile=/​var/​mail/​$USER</​file>​ dans le fichier .muttrc du répertoire home de l'​utilisateur. +
-===== Le serveur de messagerie est distant sur internet ===== +
-Pour communiquer directement avec un serveur de messagerie internet. C'est la configuration «système satellite». +
- +
-Pour configurer postfix, tapez : +
-<code bash>​sudo dpkg-reconfigure postfix</​code>​ +
- +
-{{ :​doc:​02_systemesatellite.png?​nolink&​600 |}} +
-Saisissez Système satellite +
- +
-{{ :​doc:​03_nomducourriel_perso-fr.png?​nolink&​600 |}} +
-Remplacez perso.fr par votre nom de domaine de machine +
- +
-{{ :​doc:​12_reseauxrelais_smtp-fai-fr.png?​nolink&​600 |}} +
-Indiquez ici le nom du serveur de relaie smtp (ici cas avec Gmail) +
- +
-{{ :​doc:​04_adminserveur_internet.png?​nolink&​600 |}} +
-Le compte de messagerie internet de l'​administrateur de la machine que vous avez défini ([[:​comment_configurer_sa_distribution_de_courriels_systemes_mta#​definir_le_gestionnaire_de_messagerie|ne pas oublier d'​avoir fait la configuration du gestionnaire avant]]) doit être saisie ici. +
- +
-{{ :​doc:​05_domainesmessagerie_defaut.png?​nolink&​600 |}} +
-Laissez ce champ vide +
- +
-{{ :​doc:​06_synchrofileattente.png?​nolink&​600 |}} +
- +
-{{ :​doc:​07_reseauxdistribution_local.png?​nolink&​600 |}} +
- +
-{{ :​doc:​08_taillebal.png?​nolink&​600 |}} +
- +
-{{ :​doc:​09_extadresse.png?​nolink&​600 |}} +
- +
-{{ :​doc:​10_protocoles.png?​nolink&​600 |}} +
- +
-==== Cas Gmail ==== +
-Pour configurer Gmail en relaie SMTP +
-=== Création du mot de passe applicatif === +
-{{ :​doc:​1_accesconfigcompte.png?​nolink |}} +
- +
-Cliquez sur {{:​doc:​2_gerercomptegoogle.png?​nolink|}} +
- +
-{{ :​doc:​3_menuinformationscompte.png?​nolink |}} +
- +
-Cliquez sur {{:​doc:​4_securite.png?​nolink|}} +
- +
-{{ :​doc:​5_connexionagoogle.png?​nolink |}} +
- +
-Cliquez sur {{:​doc:​6_motdepasseapplications.png?​nolink|}} +
- +
-{{ :​doc:​7_fenetremotdepasseapplications.png?​nolink |}} +
- +
-Cliquez sur **Sélectionnez un application** pour afficher le menu  {{:​doc:​8_selectionapplication.png?​nolink|}} +
- +
-Saisissez le nom Postfix de votre serveur de messagerie pour Google {{:​doc:​9_saisienomserveurpostfix.png?​nolink|}} +
- +
-Cliquez sur {{:​doc:​10_generer.png?​nolink|}} +
- +
-Notez le mot de passe générez {{:​doc:​11_motdepasseapplication.png?​nolink|}} +
- +
-{{ :​doc:​12_resultat.png?​nolink |}} +
-Vous avez créé votre mot de passe sécurité Google pour votre application Postfix. +
- +
-=== Configuration Postfix === +
-É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>​ +
-Exemple : +
-<​file>​[smtp.gmail.com]:​587 ​   utilisateur@gmail.com:​ygvpyhldoiqujhth</​file>​ +
- +
-Passez la commande pour valider le mot de passe avec Postfix : +
-<code bash>​sudo postmap /​etc/​postfix/​sasl_passwd</​code>​ +
- +
-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. +
-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). +
-relayhost = [smtp.gmail.com]:​587 +
-# Gmail +
-# Active l'​authentification SASL +
-smtp_sasl_auth_enable = yes +
-# Désactive l'​authentification anonyme +
-smtp_sasl_security_options = noanonymous +
-# Pour corriger des erreurs d'​authentification SASL avec GMAIL +
-smtp_sasl_mechanism_filter = plain +
-# Location de l'​indentifiant SASL +
-smtp_sasl_password_maps = hash:/​etc/​postfix/​sasl/​sasl_passwd +
-# Active le crytage STARTTLS +
-smtp_tls_security_level = encrypt +
-# Location du certificat CA +
-smtp_tls_CAfile = /​etc/​ssl/​certs/​ca-certificates.crt +
-</​file>​ +
- +
-Redémarrer Postfix : +
-<code bash>​systemctl restart postfix</​code>​ +
- +
-=== Débogage en cas de problèmes === +
- +
-== Vérifier l'​accès TLS == +
-Pour vérifier que la connexion TLS de Gmail fonctionne tapez : +
-<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 : +
-<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>​ +
-===== Un serveur local avec un serveur relaie internet ===== +
-Pour fusionner les deux fonctionnements précédents +
- +
-postfix doit être membre du groupe sasl. Pour ajouter l'​utilisateur postfix au groupe sasl, tapez dans un [[terminal]] : +
- +
-<code bash>​sudo adduser postfix sasl</​code>​ +
- +
-Pour configurer postfix, tapez : +
- +
-<code bash>​sudo dpkg-reconfigure postfix</​code>​ +
- +
-Lorsqu'​on vous les demande, entrez les détails suivants  +
-{{ :​doc:​01_ecrandemarage.png?​nolink |}} +
- +
- +
-{{ :​doc:​02_systemesatellite.png?​nolink |}} +
- +
- +
-{{ :​doc:​03_nomducourriel_perso-fr.png?​nolink |}} +
- +
- +
-{{ :​doc:​04_adminserveur_local.png?​nolink |}} +
- +
- +
-{{ :​doc:​05_domainesmessagerie_serveur.png?​nolink |}} +
- +
- +
-{{ :​doc:​06_synchrofileattente.png?​nolink |}} +
- +
- +
-{{ :​doc:​07_reseauxdistribution_serveur.png?​nolink |}} +
- +
- +
-{{ :​doc:​08_taillebal.png?​nolink |}} +
- +
- +
-{{ :​doc:​09_extadresse.png?​nolink |}} +
- +
- +
-{{ :​doc:​10_protocoles.png?​nolink |}} +
- +
- +
-{{ :​doc:​12_reseauxrelais_smtp-fai-fr.png?​nolink |}} +
- +
- +
-==== Configurations complémentaires ==== +
-Il faut éditer le fichier /​etc/​postfix/​main.cf (''​kate /​etc/​postfix/​main.cf''​) et ajouter la variable **home_mailbox** pour vos boites aux lettres utilisateurs. +
- +
-Par exemple : +
-<​file>​home_mailbox = .local/​share/​courriels/​arrivées/​ # au format maildir</​file>​ +
-afin que le courriel soit directement distribué dans la boite aux lettres locale de l'​utilisateur. +
- +
-Vous pouvez aussi configurer à l'​identique de [[:​comment_configurer_sa_distribution_de_courriels_systemes_mta#​cas_gmail|ci-dessus]] le relais Gmail. +
-===== Un serveur de messagerie pour internet ===== +
-Pour vous connecter à distance par internet sur votre messagerie locale +
- +
- +
  
 +Pour crypter les connections au serveur SMTP on peut utiliser un tunnel SSH, c'est le protocole SMTPS, ou mieux le protocole TLS qui fait la même chose mais corrige des failles de sécurité des anciennes versions de SSH.
  
 +=== Authentifier de façon sécurisée les connections au serveur SMTP ===
  
 +Postfix doit être utilisé avec SASL, cela va assurer l'​authentification SMTP (pour éviter que des spammeurs utilisent votre serveur pour envoyer du spam), ainsi qu'un chiffrement via SSL/TLS.
  
 +==== Filtrer les courriels indésirables ====
 +[[https://​guide.ubuntu-fr.org/​server/​mail-filtering.html|Pour configurer un système de filtrages/​marquages dans le MTA Postfix]]
 +===== Installer et configurer Postfix =====
 +  * [[:​installer_postfix_en_local_pour_un_poste_de_travail|Installer Postfix en local pour un poste de travail]]
 +  * [[:​installer_postfix_avec_le_serveur_de_messagerie_sur_internet|Installer Postfix pour l'​envoie des courriels vers un serveur de messagerie du réseau local ou d'​internet]]
 +  * [[Postfix en serveur local avec un serveur de messagerie relaie sur internet|Postfix en serveur local avec distribution des courriels vers un serveur de messagerie relaie]]
 +  * [[:​postfix|Postfix comme serveur de messagerie Internet]]
  
 +===== Autres articles =====
 +général:
 +  * [[:​postfix]] - Configuration de Postfix.
 +  * [[postfix_systeme_satellite|Configurer Postfix en site satellite]] - Renvoyer les courriels du système vers un serveur SMTP, par exemple pour recevoir les logs par courriel.
 +  * [[:​tutoriel:​Comment soumettre un problème Postfix sur le forum]] ? - Les informations à transmettre lorsque vous soumettez un problème Postfix sur le forum.
 +  * [[wpfr>​Lutte_anti-spam|filtrage du spam]] -  - Installer et configurer un filtre antipourriel,​ [[https://​spamassassin.apache.org/​|Spamassassin]]
  
 +Avancé :
 +  * [[:Postfix + MySQL + TLS + SASL]] - Configurer Postfix avec le support de MySQL pour une utilisation multi-domaine/​multi-utilisateurs.
  
  
  • comment_configurer_sa_distribution_de_courriels_systemes_mta.1598274685.txt.gz
  • Dernière modification: Le 24/08/2020, 15:11
  • par sefran