1. SMTP
Miguel Ángel Nieto <miguelangel@irontec.com>
Irontec – Internet y Sistemas sobre GNU/Linux
2. Irontec – Curso SMTP
Introducción DNS
● El DNS evita que tengamos que aprender cientos de
IP.
● También nos ayuda a encontrar los servidores de
correo.
● Los servidores DNS escuchan en el puerto 53 UDP.
● Técnicamente es posible imaginar Internet sin
servidores DNS.
● ¿Alguno se sabe la IP de google.com de
memoria? :)
2
3. Irontec – Curso SMTP
Introducción DNS
● Los dominios pueden incluir letras, número y “-”
como único simbolo
● No pueden empezar por “-” y deben tener al menos
un caracter
www.irontec.com
www es un subdominio
irontec es un subdominio
com es un dominio de nivel superior (TDL)
● www.irontec.com Es conocido como FQDN (también
llamado Fully Qualified Domain Name)
● ¿Cuál es el FQDN de nuestro host?
3
4. Irontec – Curso SMTP
Introducción DNS
● Existen 13 servidores en todo el mundo conocidos
como DNS Raíz
● Estos conocen dónde están los servidores de
nombres autoritarios para cada zona de alto nivel
● Su nombre es letra.root-servers.org, donde letra va
de A – M
http://es.wikipedia.org/wiki/Servidor_Ra%C3%ADz
● Suelen recibir bastantes ataques con intención de
tirarlos abajo
4
5. Irontec – Curso SMTP
Introducción DNS
● En un primer lugar se hacia uso del fichero
/etc/hosts almacenando todos los dominios
conocidos
● Con el crecimiento que ha tenido Internet dicho
fichero dejó de ser práctico
● Es posible desactivar el uso de hosts o de los DNS
en nuestro equipo
●
5
6. Irontec – Curso SMTP
Introducción DNS
● Existen 3 elementos fundamentales
– Clientes DNS, que funcionan de forma transparente al
usuario
– Servidores DNS (BIND, PowerDNS, djbdns, etc.)
– Zonas de autoridad. Cada zona abarca al menos un
dominio.
● Montaremos un servidor DNS y haremos uso de el a
lo largo del curso.
6
7. Irontec – Curso SMTP
Registros DNS
● Existen varios tipos de registros DNS a consultar,
los más imporantes son:
– A
– MX
– CNAME
– TXT
– NS
– LOC
– SOA
– PTR
7
8. Irontec – Curso SMTP
Registro A
● El registro A es el que más utilizamos a lo largo del
día
● Nos ayuada a saber la IP que corresponde a un
dominio
● Es necesario para navegar, si no deseamos
terminar memorizando miles de Ips en nuestra
cabeza
● Para un dominio, pueden existir varias Ips. ¿Cuál
puede ser la razón para este comportamiento?
$ host -t a google.es
google.es has address 72.14.221.104
google.es has address 66.249.93.104
google.es has address 216.239.59.104
8
9. Irontec – Curso SMTP
Registro MX
● Gracias a este registro sabemos a que servidor
entregar el correo
● El registro MX nos devuelve un nombre de dominio
● Para un registro MX también podemos tener
distintas respuestas
● El registro A y el registro MX no tiene porque tener
la misma máquina destino. Podemos tener la web
en un servidor y el correo en otro.
¿Con que IP debemos comunicarnos para entregar
un correo a gmail.com?
9
10. Irontec – Curso SMTP
Registro CNAME
● Cname es un Alias
● Una máquina puede ser accedida desde distintos
nombres. Por ejemplo los VirtualHost de Apache.
● Un Cname apunta a otro dominio, por ejemplo
– miguelangelnieto.net es un dominio FQDN
– wiki.miguelangelnieto.net es un CNAME que nos enlaza
a miguelangelnieto.net
– Por esa razón, tanto uno como otro tienen la misma ip
$ host -t a wiki.miguelangelnieto.net
wiki.miguelangelnieto.net is an alias for miguelangelnieto.net.
miguelangelnieto.net has address 209.40.204.98
10
11. Irontec – Curso SMTP
Registro TXT
● El registro TXT nos permite incluir texto
● Se suele usar para indicar datos extra del dominio
que no tengan cabida los registros DNS
● Gracias a SPF el registro TXT se utiliza también
para evitar el SPAM y la posible suplantación de
identidad al enviar un correo
$ host -t txt spf.irontec.com
spf.irontec.com descriptive text "v=spf1 a mx a:vpncore.irontec.com
a:miri.irontec.com -all"
$host -t txt miguelangelnieto.net
miguelangelnieto.net descriptive text "v=spf1 a mx ~all"
miguelangelnieto.net descriptive text "Miguel Angel Nieto -
http://miguelangelnieto.net"
● ¿Qué nos dicen esos registros SPF? Googlead :P
11
12. Irontec – Curso SMTP
Registro NS
● NS = Name Server
● Con NS asociamos un servidor de nombres con un
dominio en concreto
● Un dominio puede tener una cantidad cualquiera de
servidores de nombres
$ host -t ns miguelangelnieto.net
miguelangelnieto.net name server ns1.vpslink.com.
miguelangelnieto.net name server ns2.vpslink.com.
● Es recomendable que sean como mínimo dos y que
estos estén fisicamente separados
12
13. Irontec – Curso SMTP
Registro LOC
● Sirve para indicar las coordenadas del dominio, que
suele corresponder con la localización de la
empresa o del servidor que aloja el contenido
host -t loc irontec.com
irontec.com location 27 53 36.240 N 82 31 10.920 W 7.00m 100m 100m
2m
13
14. Irontec – Curso SMTP
Registro SOA
● Proporciona información sobre la zona
$ host -t soa irontec.com
irontec.com has SOA record ns.irontec.com. sistemas.irontec.com.
2009022502 10800 7200 604800 172800
● Veremos el significado de cada valor con la
configuración de nuestro propio DNS
14
15. Irontec – Curso SMTP
Registro PTR
● PTR es un registro inverso
● Sabemos la IP, pero queremos conocer el dominio
● Se suele usar mucho en servidores de correo. Hay
algunos servidores que si tu dominio no dispone de
PTR, se rechazan los correos
host -t ptr 209.40.204.98
98.204.40.209.in-addr.arpa domain name pointer miguelangelnieto.net.
15
16. Irontec – Curso SMTP
Cacheo de DNS
● Casi todos los servidores DNS que consultamos
cachean las respuestas
● Gracias a esto las respuestas son más rapidas y los
servidores soportan menos carga
● Pero si realizamos un cambio DNS de nuestros
dominios, estos tardarán en llegar a los usuarios
hasta que los cacheos desaparezcan y los cambios
se repliquen
16
17. Irontec – Curso SMTP
Cacheo de DNS
● Se puede comprobar el tiempo que tarda en resolver
una consulta mediante el comando dig
● Primera resolución a esdebian.org
;; Query time: 188 msec
● Seguna resolución a esdebian.org
;; Query time: 8 msec
● Se nota una ligera diferencia.
Comprobad si nuestro DNS actual cachea resultados.
17
18. Irontec – Curso SMTP
Elegir un servidor DNS
● Existen algunas utilidades en Internet que hacen
comparativas del tiempo de respuesta de los DNS
● Nos podemos aprovechar de dichas utilidades para
usar en cada momento el DNS que mejor resultados
nos de
http://bandaancha.eu/analizador-dns
● Los servidores DNS se añaden a resolv.conf
● Cambiad de dns y resolved dominios, para notar las
posibles diferencias
18
19. Irontec – Curso SMTP
Protocolo SMTP
● SMTP (simple mail transfer protocolo)
● RFC 2821
● Puerto TCP 25 por defecto. Es posible cambiarlo,
pero nadie excepto nosotros sabría el puerto de
escucha
● Es un protocolo sencillo y simple, creado para ser
agil y sin tener en cuenta la seguridad
● Esto ha provocado el crecimiento de ataques a
través del correo
● Spam/Virus las mayores amenazas
19
20. Irontec – Curso SMTP
Protocolo SMTP
● Existen varios elementos que intervienen en el envio
y entrega de un correo
– MTA: es un servidor de correo. Puede ser intermedio o
destino final. Existen muchos, Postfix, Qmail,
Sendmail y... tengo que decirlo... Exchange.
– MUA: mail user agent. Es el cliente de correo utilizado
por el cliente. Evolution, Thunderbird... Outlook.
– MDA: mail delivery agent. Es una aplicación,
generalmente instalada junto al MTA, que se encarga
de entregar el correo en el buzón del usuario
20
21. Irontec – Curso SMTP
Protocolo SMTP
● Cuando un MTA no es el destinatario de un correo,
este se lo debe entregar a otro y así hasta llegar a
su destino.
● Este comportamiento es conocido como Relay.
● A la hora de configurar el Relay de nuestro servidor
hay que tener especial cuidado en no convertirnos
en un OpenRelay o terminaremos siendo fuente de
Spam.
21
22. Irontec – Curso SMTP
Protocolo SMTP
● Contenido del Mensage (RFC 822):
– Está formado por cabeceras, una línea en blanco y el
cuerpo.
– Hay un conjunto de cabeceras predefinidas. Ejemplos:
● From: Dice quien escribió el mensaje.
● Sender: Dice quien envió realmente el mensaje.
● Reply-To: Dice a quien se debe responder.
– La sintaxis es: Nombre: valor
– Si el valor debe ocupar varias líneas basta con empezar
con un espacio a partir de la segunda.
– Las definidas por el usuario deben empezar con X-.
22
23. Irontec – Curso SMTP
Protocolo SMTP
punisher:~$ telnet irontec.com 25
Trying 82.194.71.224...
Connected to irontec.com.
Escape character is '^]'.
220 ironmail.irontec.com ESMTP Postfix (Debian/GNU)
helo irontec.com
250 ironmail.irontec.com
mail from: iker@irontec.com
250 2.1.0 Ok
rcpt to: miguelangel@irontec.com
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
Subject: Esto es una prueba
From: iker@irontec.com
To: elamo@irontec.com
Hola,
Este mensaje es una prueba.
.
250 2.0.0 Ok: queued as EE7E717D3E1
quit
221 2.0.0 Bye
Connection closed by foreign host.
23
24. Irontec – Curso SMTP
Protocolo SMTP
Return-Path: <iker@irontec.com>
X-Original-To: miguelangel@irontec.com
Delivered-To: miguelangel@irontec.com
Received: from irontec.com (106.85-87-85.dynamic.clientes.euskaltel.es
[85.87.85.106]) by ironmail.irontec.com (Postfix) with SMTP id EE7E717D3E1
for <miguelangel@irontec.com>; Sun, 8 Mar 2009 13:33:24 +0100 (CET)
Subject: {Spam?} Esto es una prueba
From: iker@irontec.com
To: elamo@irontec.com
Message-Id: <20090308123330.EE7E717D3E1@ironmail.irontec.com>
Date: Sun, 8 Mar 2009 13:33:24 +0100 (CET)
X-MailScanner-ID: EE7E717D3E1.E1FC5
X-Irontec-MailScanner: Not scanned: please contact your Internet E-Mail
Service Provider for details
X-Irontec-MailScanner-SpamCheck: spam, SpamAssassin (no almacenado,
puntaje=4.103, requerido 4, BAYES_50 0.00, RDNS_DYNAMIC 0.10,
RELAYCOUNTRY_ES 0.00, SPF_FAIL 4.00, SPF_HELO_FAIL 0.00)
X-Irontec-MailScanner-SpamScore: ssss
X-Irontec-MailScanner-From: iker@irontec.com
X-Irontec-MailScanner-To: miguelangel@irontec.com
X-Spam-Status: Yes
X-Evolution-Source: imap://miguelangel@ironmail.irontec.com/
Mime-Version: 1.0
24
25. Irontec – Curso SMTP
Protocolo SMTP
● http://www.septeto.com/documentos/smtp.html
– 2xx todo funciona correctamente
– 3xx se acetó el comando pero se esperaban mas datos
– 4xx error temporal, el cliente tendrá que reintentarlo
– 5xx el comando se rechazo, no habrá reintento
● Los mensajes se suelen reintentar una media de 4
días. Por lo que si el servidor se cae, hay tiempo
suficiente para ponerlo en marcha y no perder
ningún mensaje.
● Es un valor modificable en el servidor de correo
25
26. Irontec – Curso SMTP
Postfix
● Postfix
– Incoming: El correo que entra de internet o viene de
forma local (pickup) se queda en incoming.
– Active: Los mensajes que se están intentando enviar en
este mismo instante
– Deferred: Mensajes que no pueden enviar
– Hold: Los mensajes que dejamos en Hold se quedan
ahí hasta que alguien los saque
– Corrupt: Mensajes que no se pueden leer o que estén
dañados se mueven a esta cola
26
28. Irontec – Curso SMTP
Spam
● El Spam se extá extendiendo a otros medios
– Dispositivos móviles
– Blogs
– Foros
– Usenet
– IRC
● El Spam de correo electrónico continua en primer
lugar
● A medida que las protecciones evolucionan, también
lo hace el Spam
28
30. Irontec – Curso SMTP
Spam
● Las medidas de protección contra el Spam se
pueden activar a dos niveles. En el propio MTA o en
una aplicación externa que analice los mensajes
● Generalmente en el MTA se aplican las medidas
rápidas y faciles, de forma que la gestión de correos
no se vuelva lenta
● El trabajo duro se deja a una aplicación externa
30
31. Irontec – Curso SMTP
Spam
● Algunas comprobaciones de Spam a nivel MTA son:
– RBL (Real Time Block List). Las más famosas son
spamhaus y spamcop. Hay que tener especial
cuidado con cuales elegimos
– Helo checks. Se comprueba si los dominios existen o
no.
– Rcpt to: Comprobamos si la dirección de destino existe.
Si esta comprobación no se realiza seremos origen
de Spam.
31
32. Irontec – Curso SMTP
Spam
● La herramienta externa más utilizada para detectar
Spam es SpamAssassin
● El antivirus Clamav
● Para unir estas herramientas con nuestro MTA
existen varias soluciones
– Mailscanner
– Amavis
32