SMTP
Miguel Ángel Nieto <[email protected]>Irontec – Internet y Sistemas sobre GNU/Linux
Irontec – Curso SMTP
2
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? :)
Irontec – Curso SMTP
3
Introducción DNS
● Los dominios pueden incluir letras, número y “-” como único simbolo
● No pueden empezar por “-” y deben tener al menos un caracterwww.irontec.comwww es un subdominioirontec es un subdominiocom 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?
Irontec – Curso SMTP
4
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 – Mhttp://es.wikipedia.org/wiki/Servidor_Ra%C3%ADz
● Suelen recibir bastantes ataques con intención de tirarlos abajo
Irontec – Curso SMTP
5
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
●
Irontec – Curso SMTP
6
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.
Irontec – Curso SMTP
7
Registros DNS
● Existen varios tipos de registros DNS a consultar, los más imporantes son:
– A– MX– CNAME– TXT– NS– LOC– SOA– PTR
Irontec – Curso SMTP
8
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
Irontec – Curso SMTP
9
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?
Irontec – Curso SMTP
10
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
Irontec – Curso SMTP
11
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
Irontec – Curso SMTP
12
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
Irontec – Curso SMTP
13
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
Irontec – Curso SMTP
14
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
Irontec – Curso SMTP
15
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.
Irontec – Curso SMTP
16
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
Irontec – Curso SMTP
17
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.
Irontec – Curso SMTP
18
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
Irontec – Curso SMTP
19
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
Irontec – Curso SMTP
20
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
Irontec – Curso SMTP
21
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.
Irontec – Curso SMTP
22
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-.
Irontec – Curso SMTP
23
Protocolo SMTPpunisher:~$ 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: [email protected]
250 2.1.0 Ok
rcpt to: [email protected]
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
Subject: Esto es una prueba
From: [email protected]
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.
Irontec – Curso SMTP
24
Protocolo SMTP
Return-Path: <[email protected]>
X-Original-To: [email protected]
Delivered-To: [email protected]
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 <[email protected]>; Sun, 8 Mar 2009 13:33:24 +0100 (CET)
Subject: {Spam?} Esto es una prueba
From: [email protected]
Message-Id: <[email protected]>
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: [email protected]
X-Irontec-MailScanner-To: [email protected]
X-Spam-Status: Yes
X-Evolution-Source: imap://[email protected]/
Mime-Version: 1.0
Irontec – Curso SMTP
25
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
Irontec – Curso SMTP
26
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
Irontec – Curso SMTP
27
Postfix
● Postfix
Irontec – Curso SMTP
28
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
Irontec – Curso SMTP
29
Spam
Irontec – Curso SMTP
30
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
Irontec – Curso SMTP
31
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.
Irontec – Curso SMTP
32
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
Irontec – Curso SMTP
33
Spam
● Amavis
Irontec – Curso SMTP
34
Spam
● MailScanner
Top Related