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 postfix
la 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 25 y STARTTLS (✘) SMTP 587 y STARTTLS (✔) SMTPS 465 y TLS implícito |
2 | "servidor interno" | MSA | MTA | / |
3... | "retransmisión de correo" | MTA | MTA | (✘) SMTP 25 (✘) SMTP 25 y STARTTLS (✔) SMTP 25 y STARTTLS & DANE |
norte-2 | "servidor interno" | MTA | MDA | / |
norte - 1 | "servidor interno" | MDA | EM | / |
norte | "acceso al buzón" | EM | MUA | (✘) POP3 110 y STARTTLS (✘) POP3S 995 y TLS implícito(✘) IMAP 143 y STARTTLS (✔) IMAPS 993 y 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 465
fue renombrado en smtps
algún lugar del camino. Por eso estoy usandoservicio smtps
para poder escuchar"envío de correo"Puerto SMTPS 465
.
SUPUESTO B:
La parte superior de mi /etc/postfix/master.cf
archivo 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/smtpd
está escuchando en el 465
puerto"correo electrónico entrante"de usuarios locales y en puerto 25
para"correo electrónico entrante"de todas partes. También estoy asumiendo que postfix/smtp
está usando el puerto 25
donde 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.cf
porque 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 -o
opción para el servicio, smtp
mientras que usé muchas -o
opciones para el servicio smtps
. Lo que más me confunde es que en la documentación oficial /etc/postfix/main.cf
puedo 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 openssl
un 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_3
que debería funcionar porque mi parámetro de configuración -o smtpd_tls_protocols=!SSLv2,!SSLv3,!TLSv1,!TLSv1.1
debería prohibir cualquier protocolo de enlace que no sea TLS 1.2 y TLS 1.3. Pero si cambia el parámetro -tls1_3
para -tls1
probar 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...