Práctica 4 SMTP
Práctica 4 SMTP
Los protocolos utilizados para la recepción de email son del estilo “pull”, es decir, es
el user-agent (client) receptor el cual se encarga de solicitar a su servidor de correo
los nuevos emails recibidos.
- POP3: Protocolo sencillo y legible, definido en RFC 1939. La mecánica del mismo
comienza con el user-agent abriendo una conexión TCP con el servidor de emails,
utilizando el puerto 110. Una vez establecida la conexión TCP, POP3 se vale de las
Práctica 4 - SMTP 1
siguientes tres fases: autorización, transacción, y update. La fase de autorización
es auto-explicativa, el user envía al servidor un user y password para autenticarse.
Luego, en la fase de transacción, el user-agent puede recuperar los mensajes del
mailbox remoto, o bien marcar mensajes como eliminados, eliminar marcas de
eliminación, recuperar estadísticas, etc. Por ultimo, en la fase de update, (ocurrida
luego de que el user-agent emita el quit) el servidor se encarga de aplicar las
marcas de eliminación, si las hubiere.
- IMAP: Por ultimo, el protocolo IMAP, el cual es diseñado para resolver una
problemática que POP3 no resuelve: la posibilidad de crear folders remotos y
asignar a dichos folder correos, y ser accedido desde muchos dispositivos
(teléfonos, desktop, web, etc).
En IMAP, cada mensaje entrante al servidor receptor es asociado al folder INBOX,
y luego el usuario (mediante su user-agent) puede emitir comandos para ordenarle
al mailbox server que cree folders, asignar correos a un folder, marcar mensajes
como leídos, eliminarlos, etc. Este protocolo, a diferencia de POP3, es mucho mas
complejo porque requiere mantener “estado” entre sesiones del user-agent contra
el mailbox server, ya que si no no habría forma de acceder a los folders desde
multiples dispositivos.
Todo ok!
Práctica 4 - SMTP 2
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250 CHUNKING
MAIL FROM:<[email protected]> BODY=8BITMIME SIZE=989
250 2.1.0 Ok
RCPT TO:<[email protected]>
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
Message-ID: <[email protected]>
Date: Sun, 23 Apr 2023 20:05:37 -0300
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101
Thunderbird/91.12.0
Subject: Re: Pruebita desde user-agent flojo de papeles
Content-Language: en-US
To: alumno de redes <[email protected]>
References: <[email protected]>
<[email protected]>
From: alumno de redes <[email protected]>
In-Reply-To: <[email protected]>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Captura:
Práctica 4 - SMTP 3
220 mail.redes.unlp.edu.ar ESMTP Postfix (Lihuen-4.01/GNU)
EHLO [172.28.0.1]
250-mail.redes.unlp.edu.ar
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250 CHUNKING
MAIL FROM:<[email protected]> BODY=8BITMIME SIZE=9798
250 2.1.0 Ok
RCPT TO:<[email protected]>
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
Content-Type: multipart/mixed; boundary="------------wCXkZsTwSJsWqCcX5Q8rT9aj"
Message-ID: <[email protected]>
Date: Sun, 23 Apr 2023 20:32:19 -0300
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101
Thunderbird/91.12.0
Content-Language: en-US
To: alumno de redes <[email protected]>
From: alumno de redes <[email protected]>
Subject: Aca va un gatito lindo
--------------wCXkZsTwSJsWqCcX5Q8rT9aj
Content-Type: image/jpeg; name="cat.jpeg"
Content-Disposition: attachment; filename="cat.jpeg"
Content-Transfer-Encoding: base64
/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBwgHBgkIBwgKCgkLDRYPDQwMDRsUFRAWIB0i
IiAdHx8kKDQsJCYxJx8fLT0tMTU3Ojo6Iys/RD84QzQ5OjcBCgoKDQwNGg8PGjclHyU3Nzc3
Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3N//AABEIAIQA
xgMBIgACEQEDEQH/xAAbAAA...==
--------------wCXkZsTwSJsWqCcX5Q8rT9aj--
.
250 2.0.0 Ok: queued as 3680F600D0
QUIT
221 2.0.0 Bye
Práctica 4 - SMTP 4
i. Verifique los fuentes del correo recibido para entender como se utiliza el
header “Content-Type: multipart/mixed“ para poder realizar el envío de
distintos archivos adjuntos.
ii. Extraiga la imagen adjunta del mismo modo que lo hace el cliente de correo
a partir de los fuentes del mensaje.
La imagen adjunta puede encontrarse en el ultimo boundary del mensaje, el cual
inicia de la siguiente forma:
--------------wCXkZsTwSJsWqCcX5Q8rT9aj
Content-Type: image/jpeg; name="cat.jpeg"
Content-Disposition: attachment; filename="cat.jpeg"
Content-Transfer-Encoding: base64
Práctica 4 - SMTP 5
decodificado por el user-agent para poder renderizarlo.
Práctica 4 - SMTP 6
Date: Sun, 23 Apr 2023 21:55:18 -0300
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101
Thunderbird/91.12.0
Content-Language: en-US
To: alumno de redes <[email protected]>
From: alumno de redes <[email protected]>
Subject: Test de pop reception
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
hola mundo
.
QUIT
+OK Logging out.
Command Function
Práctica 4 - SMTP 7
Command Function
* 6 EXISTS
* 1 RECENT
DONE
42 OK Idle completed (108.693 + 108.684 + 108.692 secs).
43 noop
43 OK NOOP completed (0.001 + 0.000 secs).
44 UID fetch 8:* (FLAGS)
* 6 FETCH (UID 8 FLAGS (\Recent))
44 OK Fetch completed (0.001 + 0.000 secs).
45 UID fetch 8 (UID RFC822.SIZE FLAGS BODY.PEEK[HEADER.FIELDS (From To Cc Bcc Subject
Date Message-ID Priority X-Priority References Newsgroups In-Reply-To Content-Type Re
ply-To)])
* 6 FETCH (UID 8 RFC822.SIZE 805 FLAGS (\Recent) BODY[HEADER.FIELDS (FROM TO CC BCC S
UBJECT DATE MESSAGE-ID PRIORITY X-PRIORITY REFERENCES NEWSGROUPS IN-REPLY-TO CONTENT-
TYPE REPLY-TO)] {295}
Message-ID: <[email protected]>
Date: Mon, 24 Apr 2023 00:15:07 -0300
To: alumno de redes <[email protected]>
From: alumno de redes <[email protected]>
Subject: test de imap
Content-Type: text/plain; charset=UTF-8; format=flowed
Práctica 4 - SMTP 8
)
45 OK Fetch completed (0.002 + 0.000 + 0.001 secs).
46 UID fetch 8 (UID RFC822.SIZE BODY.PEEK[])
* 6 FETCH (UID 8 RFC822.SIZE 805 BODY[] {805}
Return-Path: <[email protected]>
X-Original-To: [email protected]
Delivered-To: [email protected]
Received: from [172.28.0.1] (unknown [172.28.0.1])
by mail.redes.unlp.edu.ar (Postfix) with ESMTP id 00492600D0
for <[email protected]>; Mon, 24 Apr 2023 03:15:12 +0000 (UTC)
Message-ID: <[email protected]>
Date: Mon, 24 Apr 2023 00:15:07 -0300
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101
Thunderbird/91.12.0
Content-Language: en-US
To: alumno de redes <[email protected]>
From: alumno de redes <[email protected]>
Subject: test de imap
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
imap boludoooo
)
46 OK Fetch completed (0.001 + 0.000 secs).
47 UID fetch 8 (UID BODY.PEEK[HEADER.FIELDS (Content-Type Content-Transfer-Encoding)]
BODY.PEEK[TEXT]<0.2048>)
* 6 FETCH (UID 8 BODY[HEADER.FIELDS (CONTENT-TYPE CONTENT-TRANSFER-ENCODING)] {91}
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
BODY[TEXT]<0> {18}
imap boludoooo
)
47 OK Fetch completed (0.003 + 0.000 + 0.002 secs).
48 IDLE
+ idling
B - Utilice el filtro IMAP para observar los paquetes del protocolo IMAP en la
captura generada y analice el intercambio de dicho protocolo entre el cliente
y el servidor para observar los distintos comandos utilizados y su
correspondiente respuesta.
IMAP es un protocolo stateful, esto significa que el servidor debe mantener estado
entre sesiones del usuario.
Práctica 4 - SMTP 9
En líneas generales, algunos de los comandos mas importantes son AUTH PLAIN
(si es soportado), CAPABILITIES, LOGIN, LIST, FETCH, SEARCH, IDLE, los
cuales serán descritos en la tabla de abajo.
Adicionalmente, es útil comprender la sintaxis de un comando IMAP:
<tag> <command> [<arg1><arg2>…]
Por ultimo, es importante entender que desde IMAP4 los correos almacenados en
el inbox remoto tienen asignado un UID. El cliente mantiene en su cache local un
UIDVALIDITY que chequea contra el servidor ante cada conexión, y si el del server
es mas alto, significa que el cliente se encuentra desincronizado y debe eliminar su
cache de UID.
Command Function
Práctica 4 - SMTP 10
Command Function
Práctica 4 - SMTP 11