Forcer le chiffrement pour SMTP sortant avec Postfix

23

Quelqu'un sait-il comment dire à Postfix de crypter le courrier sortant?

Je l'ai configuré pour utiliser le cryptage à la réception, mais je ne peux pas le faire avec le courrier sortant. Voici mon main.cfdossier:

smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = smtpd
transport_maps = hash:/etc/postfix/transport

# tls config
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.pem
smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.pem
smtpd_tls_CAfile = /etc/postfix/ssl/smtpd.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
Simon
la source

Réponses:

30

smtp_tls_security_level = encrypt ou smtp_enforce_tls = yes

Pour des destinations spécifiques, vous pouvez utiliser smtp_tls_policy_maps

smtp_use_tls = yes et smtp_enforce_tls = yes sont déconseillés. Avec Postfix 2.3 et versions ultérieures, utilisez plutôt smtp_tls_security_level .

N'oubliez pas: l'application du chiffrement TLS peut entraîner des problèmes de remise du courrier pour l'hôte SMTP, qui n'a pas TLS configuré. Si le serveur est utilisé pour livrer des courriers uniquement à votre serveur interne avec TLS configuré, ce n'est pas un problème dans ce cas. Mais si le serveur est utilisé pour distribuer le courrier aux serveurs publics, vous ne pouvez pas supposer que tous les serveurs prennent en charge TLS. Dans ce cas, utilisez smtp_tls_security_level = may

sumar
la source
1
Je pense qu'il veut seulement l'appliquer du client de messagerie du logiciel au serveur de messagerie d'envoi. Pas de serveur de messagerie à serveur de messagerie (voir son commentaire posté le 7 mars 10 à 23:26)
Cojones
4

L'idée est de forcer les utilisateurs à configurer leurs clients de messagerie avec un serveur smtp sortant crypté. Avec la conf actuelle, Thunderbird leur laisse la possibilité de communiquer avec le serveur smtp en texte brut ...

Vous ne pouvez pas désactiver l'option dans Thunderbird sans recompiler le code source, mais vous pouvez configurer le démon stmpd de postfix (qui reçoit le courrier de vos clients) pour appliquer le chiffrement. Pour ce faire, utilisez smtpd_tls_security_level = encrypt , ce qui équivaut à des options obsolètes smtpd_use_tls = yes et smtp_enforce_tls = yes . smtpd_tls_security_level = chiffrer et smtp_enforce_tls = oui implique smtpd_tls_auth_only = oui

De la documentation de postfix sur smtpd_tls_security_level = encrypt

Cryptage TLS obligatoire: annoncez la prise en charge STARTTLS aux clients SMTP et exigez que les clients utilisent le cryptage TLS. Selon la RFC 2487, cela NE DOIT PAS être appliqué dans le cas d'un serveur SMTP référencé publiquement. Au lieu de cela, cette option doit être utilisée uniquement sur des serveurs dédiés.

Si vous utilisez un serveur public, vous ne pouvez pas appliquer le cryptage des e-mails sur le port 25 / tcp. La meilleure solution consiste à désactiver la remise du courrier via le port démon smtpd postfix 25 / tcp de vos clients et à activer le démon de soumission postfix (qui est un démon smtpd postfix spécial utilisé uniquement pour recevoir le courrier de vos clients locaux décrit dans la RFC 4409 exécuté sur le port 587 / tcp) . Pour ce faire, définissez smtpd_tls_security_level = may et supprimez permit_sasl_authenticatedde smtpd_recipient_restrictions . En master.cfcommentaire sur le démon de soumission:

submission inet n       -       n       -       -   submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_recipient_resrictions=permit_sasl_authenticated,reject
sumar
la source
1

Juste curieux, comment dites-vous qu'il n'utilise pas TLS? La valeur par défaut de smtp_tls_loglevel (qui est différente de smtpd_tls_loglevel) est 0, donc par défaut, vous ne verrez rien sur la négociation TLS pour le courrier sortant dans les journaux de Postfix.

Si vous définissez smtp_tls_loglevel = 1 ou supérieur, vous devriez voir une ligne comme celle-ci dans le journal lorsqu'un message est envoyé:

7 mars 22:28:10 rack postfix / smtp [27400]: initialisation du moteur TLS côté client

J'avoue que je suis paresseux, mais à part cela (et les notes de ms ci-dessus), la configuration me semble bien en un coup d'œil.

jlupolt
la source
1
J'ai compris que Simon veut imposer le chiffrement de tout le courrier à l'aide de TLS. smtp_use_tls = yes autorise l'utilisation postfixe de TLS, si le serveur distant le prend en charge (smtp_use_tls = yes est équivalent à smtp_tls_security_level = may). Le message approprié doit être placé dans maillog, si le courrier sortant a été chiffré à l'aide de TLS. Vous avez raison de dire que les options smtp_ * sont pour un démon postfix différent de smtpd_ * (smtpd_ * est destiné à recevoir des e-mails de serveurs distants, smtp_ * est destiné à envoyer des e-mails à des serveurs distants).
sumar
En fait, je pense que la question pourrait être un peu ambiguë. Au moins, je ne peux pas dire si Simon veut que Postfix nécessite TLS ou l'utilise simplement si le serveur du destinataire le prend en charge.
jlupolt
1
Merci pour vos paroles, je ne m’ai probablement pas bien expliqué. L'idée est de forcer les utilisateurs à configurer leurs clients de messagerie avec un serveur smtp sortant crypté. Avec la conf actuelle, Thunderbird leur laisse la possibilité de communiquer avec le serveur smtp en texte brut ... est-il possible d'éviter cela? Merci d'avance, Simon.
Simon
Un moyen facile d'identifier si TLS est actif est de regarder le message brut du côté de la réception et de rechercher les résultats d'authentification: domainkeys = neutral (no sig); Ce qui indique qu'il n'utilise pas TLS
Scott Stensland