systemadmin.es > Correo > Como mandar un email con telnet (protocolo SMTP)

Como mandar un email con telnet (protocolo SMTP)

Para provar instalaciones de servidores de correo suele ser útil realizar entregas de prueba “a mano” mediante comandos SMTP. Por ejemplo, en el caso de qmail si limitamos la memoria que puede utilizar qmail-smtpd puede darse el caso que sea suficiente como para arrancarlo pero insuficiente para que reciba correo. Realizando la prueba a mano, conjuntamente con un strace del daemon podemos ver mejor que esta pasando.

Para ello solo hace falta hacer un telnet el servidor de correo en el puerto 25. Para saber cual es el servidor de correo de un dominio en concreto podemos hacerlo mediante dig. Por el caso de gmail sería:

# dig gmail.com mx

; <<>> DiG 9.3.4-P1 <<>> gmail.com mx
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53900
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 4, ADDITIONAL: 4

;; QUESTION SECTION:
;gmail.com.                     IN      MX

;; ANSWER SECTION:
gmail.com.              1842    IN      MX      50 gsmtp183.google.com.
gmail.com.              1842    IN      MX      5 gmail-smtp-in.l.google.com.
gmail.com.              1842    IN      MX      10 alt1.gmail-smtp-in.l.google.com.
gmail.com.              1842    IN      MX      10 alt2.gmail-smtp-in.l.google.com.
gmail.com.              1842    IN      MX      50 gsmtp147.google.com.

;; AUTHORITY SECTION:
gmail.com.              204845  IN      NS      ns4.google.com.
gmail.com.              204845  IN      NS      ns1.google.com.
gmail.com.              204845  IN      NS      ns2.google.com.
gmail.com.              204845  IN      NS      ns3.google.com.

;; ADDITIONAL SECTION:
ns1.google.com.         52698   IN      A       216.239.32.10
ns2.google.com.         52698   IN      A       216.239.34.10
ns3.google.com.         52698   IN      A       216.239.36.10
ns4.google.com.         52698   IN      A       216.239.38.10

;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Jan 27 09:28:18 2009
;; MSG SIZE  rcvd: 294

Podemos ver los servidores de correo debajo de ANSWER SECTION. A continuación hacemos el telnet:

$ telnet correo.dominio.ejemplo 25

A continuación debemos mandar un HELO con la el nombre del host desde el que conectamos. Este debe ser el nombre completo que ve el servidor: O sea, la inversa de la IP con la que nos conectamos al servidor de correo.

Seguimos mandando la dirección con la que mandamos el correo mediante MAIL FROM. El servidor nos contetará con un 250 ok. A continuación debemos indicar la dirección destino. Esta debe existir en ese servidor sino va a rechazar el mensaje. Lo hacemos con RCPT TO

Finalmente transmitimos los datos con el comando DATA.

En el cuerpo del mensaje (el DATA) podemos especificar tanto el cuerpo como el subject o demás cabezeras. Por ejemplo, el caso del subject sería indicando Subject: seguido del subject deseado.

Para finalizar los datos lo hacemos con un intro un punto y un intro.

La sesión completa sería:

# telnet mail.systemadmin.es 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mail.systemadmin.es ESMTP
HELO local.domain.name
250 mail.systemadmin.es
MAIL FROM: ejemplo@fakemail.com
250 ok
RCPT TO: info@systemadmin.es
250 ok
DATA
354 go ahead
Subject: email entregado con telnet
esto es el cuerpo del mensaje
finaliza con un intro un punto i otro intro
.
250 ok 1233044313 qp 4027
bye
221 mail.systemadmin.es

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>