Opciones de Postfix smtp frente a smtpd -o

Opciones de Postfix smtp frente a smtpd -o

La siguiente tabla muestra qué protocolos/puertos se pueden utilizar en cada paso de la transferencia de correo electrónico. La tabla también indica qué protocolos/puertos quiero usar en postfixla configuración de mi servidor marcándolos con ✘ o ✔.

norte operación remitente receptor posibles protocolos/puertos
1 "envío de correo" MUA MSA (✘) SMTP 25
(✘) SMTP 25y STARTTLS
(✘) SMTP 587y STARTTLS
(✔) SMTPS 465y TLS implícito
2 "servidor interno" MSA MTA /
3... "retransmisión de correo" MTA MTA (✘) SMTP 25
(✘) SMTP 25y STARTTLS
(✔) SMTP 25y STARTTLS& DANE
norte-2 "servidor interno" MTA MDA /
norte - 1 "servidor interno" MDA EM /
norte "acceso al buzón" EM MUA (✘) POP3 110y STARTTLS
(✘) POP3S 995y TLS implícito
(✘) IMAP 143y STARTTLS
(✔) IMAPS 993y TLS implícito

Antes de continuar, le pediría que esté de acuerdo o en desacuerdo con dos de los supuestos:

SUPUESTO A:

supongo que deesteantigua respuesta que Postfixservicio 465fue renombrado en smtpsalgún lugar del camino. Por eso estoy usandoservicio smtpspara poder escuchar"envío de correo"Puerto SMTPS 465.

SUPUESTO B:

La parte superior de mi /etc/postfix/master.cfarchivo se ve así:

# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (no)    (never) (100)
# ==========================================================================
smtp      inet  n       -       y       -       -       smtpd
smtps     inet  n       -       y       -       -       smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_security_level=encrypt
  -o smtpd_use_tls=yes
  -o smtpd_tls_wrappermode=yes
  -o smtpd_tls_protocols=!SSLv2,!SSLv3,!TLSv1,!TLSv1.1
  -o smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
  -o smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

  ...

Yo leoaquíeso:

postfix/smtpd- es el proceso del demonio SMTP para"correo entrante"y enrutarlo a la ubicación interna apropiada.

postfix/smtp- es el proceso del demonio SMTP para"Correspondencia saliente"al mundo.

Así que ahora asumo que postfix/smtpdestá escuchando en el 465puerto"correo electrónico entrante"de usuarios locales y en puerto 25para"correo electrónico entrante"de todas partes. También estoy asumiendo que postfix/smtpestá usando el puerto 25donde envía"correo electrónico saliente".

PROBLEMA:

Cuando estaba configurando Postfix en algún momento del camino, deshabilité una sección TLS completa /etc/postfix/main.cfporque no quería que la configuración global interfiriera con la configuración de los servicios individuales que configuré dentro /etc/postfix/master.cf.

Como puede ver, no usé ninguna -oopción para el servicio, smtpmientras que usé muchas -oopciones para el servicio smtps. Lo que más me confunde es que en la documentación oficial /etc/postfix/main.cfpuedo encontrar muchas opciones casi duplicadas como:

Según el texto citado debo utilizar:

  • los que empiezan con smtp_para"Correspondencia saliente"
  • los que empiezan con smtpd_para"correo entrante".

Si mi filosofía es correcta, entonces mi configuración actual debería funcionar. Lo hace parcialmente porque puedo lograr un protocolo de enlace TLS 1.3 usando opensslun comando en una computadora diferente como esta:

┌───┐
│ $ │ ziga > ziga--workstation > ~
└─┬─┘
  └─> openssl s_client -connect pis.eu:465 -tls1_3

CONNECTED(00000003)
depth=0 CN = tek-eu
verify error:num=18:self signed certificate
verify return:1
depth=0 CN = tekpi-eu
verify return:1
---
Certificate chain
 0 s:CN = tek-eu
   i:CN = tek-eu
---
Server certificate
-----BEGIN CERTIFICATE-----

  < REMOVED FOR CLARITY >

-----END CERTIFICATE-----
subject=CN = tek-eu

issuer=CN = tek-eu

---
No client certificate CA names sent
Peer signing digest: SHA256
Peer signature type: RSA-PSS
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 1286 bytes and written 313 bytes
Verification error: self signed certificate
---
New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384
Server public key is 2048 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 18 (self signed certificate)
---
---
Post-Handshake New Session Ticket arrived:
SSL-Session:
    Protocol  : TLSv1.3
    Cipher    : TLS_AES_256_GCM_SHA384
    Session-ID: 45F832A32F5F27CEAA41B271F28545ECA98DC1AC61F51A484123DD28B2535C30
    Session-ID-ctx: 
    Resumption PSK: 3175AD1641D8D77511FD5C76508D339D01F5D1CE02DBF90F33FEBD334A7E76FD44B52808A846C281616469143977B6F1
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 7200 (seconds)
    TLS session ticket:

    < REMOVED FOR CLARITY >

    Start Time: 1607602078
    Timeout   : 7200 (sec)
    Verify return code: 18 (self signed certificate)
    Extended master secret: no
    Max Early Data: 0
---
read R BLOCK
220 mail.pis.eu -------> "HELLO!"

Arriba utilicé un parámetro -tls1_3que debería funcionar porque mi parámetro de configuración -o smtpd_tls_protocols=!SSLv2,!SSLv3,!TLSv1,!TLSv1.1debería prohibir cualquier protocolo de enlace que no sea TLS 1.2 y TLS 1.3. Pero si cambia el parámetro -tls1_3para -tls1probar el protocolo de enlace TLS 1, ¿tiene éxito?

┌───┐
│ $ │ ziga > ziga--workstation > ~
└─┬─┘
  └─> openssl s_client -connect pis.eu:465 -tls1
CONNECTED(00000003)
depth=0 CN = tek-eu
verify error:num=18:self signed certificate
verify return:1
depth=0 CN = tek-eu
verify return:1
---
Certificate chain
 0 s:CN = tek-eu
   i:CN = tek-eu
---
Server certificate
-----BEGIN CERTIFICATE-----

  < REMOVED FOR CLARITY >

-----END CERTIFICATE-----
subject=CN = tek-eu

issuer=CN = tek-eu

---
No client certificate CA names sent
Peer signing digest: MD5-SHA1
Peer signature type: RSA
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 1385 bytes and written 227 bytes
Verification error: self signed certificate
---
New, TLSv1.0, Cipher is ECDHE-RSA-AES256-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1
    Cipher    : ECDHE-RSA-AES256-SHA
    Session-ID: C1E39786A475DA48ED222EAB5247CCE57D49875AE9A442A73027FBE1F9BB7C4D
    Session-ID-ctx: 
    Master-Key: 5900F37B79A7949871008A827904F2BA907F42EE8BBC73328CD49DF7E37AF2687C06B316922D7D76DDC36FA1DF912E7A
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 7200 (seconds)
    TLS session ticket:

    < REMOVED FOR CLARITY >
    
    Start Time: 1607602884
    Timeout   : 7200 (sec)
    Verify return code: 18 (self signed certificate)
    Extended master secret: yes
---
220 mail.pis.eu -------> "HELLO!"

¿Cómo es que esto tuvo éxito? ¿Qué estoy haciendo mal? Actualmente mi configuración solo tiene -o smtpd_opciones. ¿Debería utilizar también -o smtp_opciones? ¿Dónde debería ponerlos?

Como ves estoy confuso...

información relacionada