curso smtp

34
SMTP Miguel Ángel Nieto <[email protected]> Irontec – Internet y Sistemas sobre GNU/Linux

Upload: miguel-angel-nieto-salazar

Post on 12-Jun-2015

4.599 views

Category:

Technology


4 download

DESCRIPTION

Curso básico del protocolo SMTP (Postfix) y su integración con Mailscanner y Amavis

TRANSCRIPT

Page 1: Curso SMTP

SMTP

Miguel Ángel Nieto <[email protected]>Irontec – Internet y Sistemas sobre GNU/Linux

Page 2: Curso SMTP

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? :)

Page 3: Curso SMTP

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?

Page 4: Curso SMTP

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

Page 5: Curso SMTP

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

Page 6: Curso SMTP

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.

Page 7: Curso SMTP

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

Page 8: Curso SMTP

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

Page 9: Curso SMTP

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?

Page 10: Curso SMTP

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

Page 11: Curso SMTP

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

Page 12: Curso SMTP

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

Page 13: Curso SMTP

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

Page 14: Curso SMTP

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

Page 15: Curso SMTP

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.

Page 16: Curso SMTP

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

Page 17: Curso SMTP

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.

Page 18: Curso SMTP

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

Page 19: Curso SMTP

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

Page 20: Curso SMTP

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

Page 21: Curso SMTP

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.

Page 22: Curso SMTP

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-.

Page 23: Curso SMTP

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]

To: [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.

Page 24: Curso SMTP

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]

To: [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

Page 25: Curso SMTP

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

Page 26: Curso SMTP

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

Page 27: Curso SMTP

Irontec – Curso SMTP

27

Postfix

● Postfix

Page 28: Curso SMTP

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

Page 29: Curso SMTP

Irontec – Curso SMTP

29

Spam

Page 30: Curso SMTP

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

Page 31: Curso SMTP

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.

Page 32: Curso SMTP

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

Page 33: Curso SMTP

Irontec – Curso SMTP

33

Spam

● Amavis

Page 34: Curso SMTP

Irontec – Curso SMTP

34

Spam

● MailScanner