SMTP usa la extensión STARTTLS para actualizar SMTP a SMTP Secure (STMPS). Según el RFC , el cliente y el servidor inician TLS de la siguiente manera:
S: <waits for connection on TCP port 25>
C: <opens connection>
S: 220 mail.imc.org SMTP service ready
C: EHLO mail.example.com
S: 250-mail.imc.org offers a warm hug of welcome
S: 250-8BITMIME
S: 250-STARTTLS
S: 250 DSN
C: STARTTLS
S: 220 Go ahead
C: <starts TLS negotiation>
C & S: <negotiate a TLS session>
C & S: <check result of negotiation>
C: EHLO mail.example.com
S: 250-mail.imc.org touches your hand gently for a moment
S: 250-8BITMIME
S: 250 DSN
En el mismo documento, las especificaciones mencionan la posibilidad de MITM:
Se puede iniciar un ataque Man-in-the-middle eliminando la respuesta "250 STARTTLS" del servidor.
Lo que no obtengo de las especificaciones es: ¿Qué significa exactamente eliminar? ¿Está eliminando el contenido del mensaje pero enviándolo vacío? (es decir, corromperlo) o soltarlo para que el cliente no lo reciba?
Si significa dejar caer el mensaje para que el cliente no lo reciba, ¿enviará el servidor 250 DSN
? no me queda claro si 250 STARTTLS cayó, ¿cuál será el próximo mensaje? ¿Cómo sabe el cliente que debe enviar EHLO mail.example.com
y que no hay 250-STARTTLS
?