« LINUX:Postfix-Services à l'écoute » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
Ligne 130 : | Ligne 130 : | ||
---- | ---- | ||
smtp inet n - n - - smtpd | smtp inet n - n - - smtpd | ||
-o smtpd_relay_restrictions=reject | |||
---- | ---- | ||
Le Relay est exclu. | Le Relay est exclu. | ||
Ligne 138 : | Ligne 138 : | ||
---- | ---- | ||
smtp inet n - n - - smtpd | smtp inet n - n - - smtpd | ||
-o smtpd_tls_security_level=may | |||
-o smtpd_relay_restrictions=reject | |||
---- | ---- | ||
Le Relay est exclu. | Le Relay est exclu. | ||
Ligne 145 : | Ligne 145 : | ||
==Service SUBMISSION== | ==Service SUBMISSION== | ||
---- | |||
submission inet n - n - - smtpd | |||
# authentification | |||
-o smtpd_sasl_auth_enable=yes | |||
-o smtpd_sasl_security_options=noanonymous | |||
-o smtpd_sasl_type=dovecot | |||
-o smtpd_sasl_path=private/auth | |||
-o smtpd_client_restrictions=permit_sasl_authenticated,reject | |||
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject | |||
# cryptage | |||
-o smtpd_tls_security_level=may | |||
-o smtpd_tls_auth_only=no | |||
---- | |||
---- | |||
submission inet n - n - - smtpd | |||
# authentification | |||
-o smtpd_sasl_auth_enable=yes | |||
-o smtpd_sasl_security_options=noanonymous | |||
-o smtpd_sasl_type=dovecot | |||
-o smtpd_sasl_path=private/auth | |||
-o smtpd_client_restrictions=permit_sasl_authenticated,reject | |||
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject | |||
# cryptage | |||
-o smtpd_tls_security_level=encrypt | |||
-o smtpd_tls_auth_only=yes | |||
---- | |||
Ligne 151 : | Ligne 185 : | ||
==Service SMTPS (ou SUBMISSIONS)== | ==Service SMTPS (ou SUBMISSIONS)== | ||
Le service SMTPS écoute par défaut sous le port TCP 465. Dans cette configuration, l'authentification est désactivée mais le cryptage est de type SSL/TLS. | |||
---- | |||
smtps inet n - n - - smtpd | |||
-o smtpd_tls_wrappermode=yes | |||
-o smtpd_relay_restrictions=reject | |||
---- | |||
Le Relay est exclu. | |||
Version du 18 décembre 2022 à 23:18
But
Nous abordons les services classiques qui sont à l'écoute et lancés par Postfix. Ils concernent la réception de mails.
Noms et N° de ports TCP
La liaison entre un n° de port TCP à l'écoute et son nom ne se fait pas comme classiquement par référence avec le fichier "/etc/services". Il se fait via l'option "known_tcp_ports" que l'on peut a ajouter au fichier de configuration de Postfix "/etc/postfix/main.cf".
Il possède un contenu par défaut:
known_tcp_ports = lmtp=24, smtp=25, smtps=submissions=465, submission=587
Par exemple, le port TCP 465 sera reconnu sous le nom "smtps" ou "submissions" (seul un des deux peut être utilisé). Ces noms se retrouvent en première colonne dans le fichier "/etc/postfix/master.cf".
Voici un extrait de ce fichier sans les options associées pour ces trois cas:
smtp inet n - n - - smtpd submission inet n - n - - smtpd smtps inet n - n - - smtpd
Dans ce cas, la commande:
netstat -ntlp | grep master
donne:
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 3649547/master tcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN 3649547/master tcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN 3649547/master
Si on veut ajouter un nouveau port TCP 3587 associé à un nouveau nom que l'on nomme "newport", on modifie cette option dans le fichier "main.cf":
known_tcp_ports = smtp=25, smtps=submissions=465, submission=587, newport=3587
et dans le fichier "master.cf", on ajoute
newport inet n - n - - smtpd
La commande "netstat" présentera une nouvelle ligne:
tcp 0 0 0.0.0.0:3587 0.0.0.0:* LISTEN 3649547/master
Note: le service "lmtp" n'a pas été retenu car je ne l'utilise pas en réseau.
Par contre, de la même façon, on peut modifier le nom et/ou le n° de port.
Dans l'exemple, on modifie un nom et un port:
- le nom "smtps" devient "smtpsecure"
- le port "587" devient "2587"
L'option dans le fichier "main.cf" devient:
known_tcp_ports = smtp=25, smtpsecure=465, submission=2587
et l'extrait du fichier "master.cf" devient:
smtp inet n - n - - smtpd submission inet n - n - - smtpd smtpsecure inet n - n - - smtpd
Et la commande 'netstat" donne:
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 3649547/master tcp 0 0 0.0.0.0:2587 0.0.0.0:* LISTEN 3649547/master tcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN 3649547/master
J'ai utilisé cette astuce de modifier un n° de port TCP en production pour être moins facilement visible sur Internet. On peut aussi l'utiliser pour contourner les blocages imposés par notre FAI.
Note: Le n° de process "3649547" est un exemple lié à mon cas.
Options de cryptages et d'authentification de SMTPD
Nous n'allons examiner que certains aspects de base:
- l’absence de cryptage
- le cryptage de type STARTTLS
- le cryptage de type SSL/TLS
- l'absence d'authentification
- l'obligation d'authentification
Tous ces cas de figures peuvent être mélangés à volonté.
Ces options se trouvent dans le fichier "/etc/postfix/master.cf" sous la ligne du service concerné en décalage (quelques espaces en début de ligne) et commencent par "-o " comme option. Il est important de noter que derrière l'espace de "-o", il ne peut n'y avoir aucun espace.
Nous utilisons les fonctionnalités Cyrus SASL. Il nous faut installer certains modules:
dnf install cyrus-sasl dnf install cyrus-sasl-plain
Le second implémente les authentifications "PLAIN" et "LOGIN". D'autres, en fonction des fonctionnalités désirées, peuvent être ajoutées.
Nous n'aborderons pas la nécessité à spécifier dans le fichier "/etc/postfix/main.cf", les clé privée et certificats publiques. Ceci se fait de façon similaires que pour les services Dovecot et Apache. Elles sont reprises au minimum dans les options "smtpd_tls_key_file" et "smtpd_tls_cert_file".
Cryptage
Il peut y avoir cryptage de type STARTTLS, SSL/TLS ou non.
Voici les options retenues:
- smtpd_tls_security_level=none : Il n'y a pas de cryptage (défaut)
- smtpd_tls_security_level=may : Elle spécifie que le cryptage n'est pas exigé.
- smtpd_tls_security_level=encrypt : Elle spécifie que le cryptage est exigé.
- smtpd_tls_wrappermode=yes : Elle exige le cryptage et qu'il soit de type SSL/TLS. L'option "smtpd_tls_security_level=encrypt" est imposée. Sinon l'absence ou le cryptage de type STARTTLS sont acceptés. (défaut: no)
Authentification
Voici les options concernant l'authentification:
- smtpd_sasl_auth_enable=yes : L'authentification est activée. (défaut: no)
- smtpd_sasl_security_options=noanonymous : Les authentifications anonymes sont refusées.
- smtpd_sasl_type=dovecot : La tâche de vérification du couple "utilisateur:mot de passe" est transférée au service Dovecot.
- smtpd_sasl_path=private/auth : Canal de transfert entre SMTPD et SASL.
- smtpd_tls_auth_only=yes : Dans le cas, du cryptage de type STARTTLS, le cryptage des données d'authentification sont effectuées. Dans le cas du cryptage de type SSL/TLS ce n'est pas nécessaire. Dans le cas de l'absence de cryptage, cette option peut être mise à "yes" mais certains clients sont incompatibles avec ce cas; il est donc conseillé de le laisser à "no" dans ce cas. (défaut: no)
- smtpd_client_restrictions=permit_sasl_authenticated,reject : Elle spécifie que l'utilisateur doit s'authentifier pour pouvoir envoyer un mail.
Relay
La fonctionnalité de Relay n'est pas à prendre à la légère. Il faut laisser cette fonction aux FAIs. Si vous laissez cette porte ouverte, vous serez une plateforme pour la diffusion des SPAMs et des malwares. Et au final, vous vous retrouverez sur une des listes noires des serveurs de messagerie et plus aucun autre serveur de messagerie n'acceptera vos mails.
- smtpd_relay_restrictions=reject: La fonction de Relay est désactivée.
- smtpd_relay_restrictions=permit_sasl_authenticated,reject : Elle spécifie que la fonctionnalité de Relay n'est acceptée que pour les utilisateur authentifiés. Cette fonction permet qu'un mail arrivant sur le serveur qui n'est pas destiné à une boîte postale locale, peut être envoyé à un autre serveur de messagerie.
Configuration spécifique de ces services
Le fichier "/etc/postfix/main.cf" applique sa configuration à tous les services SMTPD. Mais il est plus judicieux de spécifier certaines options au service concerné. Nous nous concentrerons sur les services de réception de mails usuels: SMTP, SUBMISSION et SMTPS qui utilisent un même démon: "smtpd".
Les exemples qui suivent présentent différents scenarios. Ils ont pour but de démontrer que ces différentes options sont des blocs que l'on agence comme on veut hors des conventions.
Service SMTP
Le service SMTP écoute par défaut sous le port TCP 25. C'est le premier service qui est apparu en messagerie électronique; il est encore utilisé classiquement entre serveurs de messagerie. Mais il est de plus en plus désactivé auprès des clients de messagerie au profit des services SUBMISSION ou SUBMISSIONS avec authentification.
Voici une première configuration classique sans authentification ni cryptage:
smtp inet n - n - - smtpd -o smtpd_relay_restrictions=reject
Le Relay est exclu.
La seconde configuration est toujours sans authentification mais ici, le cryptage de type STARTTLS ou son absence sont acceptés:
smtp inet n - n - - smtpd -o smtpd_tls_security_level=may -o smtpd_relay_restrictions=reject
Le Relay est exclu.
Service SUBMISSION
submission inet n - n - - smtpd # authentification -o smtpd_sasl_auth_enable=yes -o smtpd_sasl_security_options=noanonymous -o smtpd_sasl_type=dovecot -o smtpd_sasl_path=private/auth -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o smtpd_relay_restrictions=permit_sasl_authenticated,reject # cryptage -o smtpd_tls_security_level=may -o smtpd_tls_auth_only=no
submission inet n - n - - smtpd # authentification -o smtpd_sasl_auth_enable=yes -o smtpd_sasl_security_options=noanonymous -o smtpd_sasl_type=dovecot -o smtpd_sasl_path=private/auth -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o smtpd_relay_restrictions=permit_sasl_authenticated,reject # cryptage -o smtpd_tls_security_level=encrypt -o smtpd_tls_auth_only=yes
Service SMTPS (ou SUBMISSIONS)
Le service SMTPS écoute par défaut sous le port TCP 465. Dans cette configuration, l'authentification est désactivée mais le cryptage est de type SSL/TLS.
smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_relay_restrictions=reject
Le Relay est exclu.