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

Curso SMTP avanzado

Embed Size (px)

DESCRIPTION

Curso avanzado de SMTP usando Postfix, Courier, SASL, SpamAssassin, Clamav, RBL, etc.

Citation preview

Page 1: Curso SMTP avanzado

SMTP

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

Page 2: Curso SMTP avanzado

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 avanzado

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 avanzado

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 avanzado

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 avanzado

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 avanzado

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 avanzado

Irontec – Curso SMTP

8

Registro A

● El registro A es el que más utilizamos a lo largo del día

● Nos ayuda 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 avanzado

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 avanzado

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 avanzado

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 avanzado

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 avanzado

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 avanzado

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

Page 15: Curso SMTP avanzado

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 avanzado

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 avanzado

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 avanzado

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 avanzado

Irontec – Curso SMTP

19

Protocolo SMTP1

Page 20: Curso SMTP avanzado

Irontec – Curso SMTP

20

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 21: Curso SMTP avanzado

Irontec – Curso SMTP

21

Protocolo SMTP

● ESMTP: extensión del protocolo SMTP para adaptarse a las nuevas necesidades.

● Varias extensiones: 8BITMIME, DSN, STARTTLS, AUTH ...

● Permiten características adicionales como: reducir ancho de banda, reducir la latencia, recuperación mejorada de errores.

● Para iniciar una conexión ESMTP se utiliza el comando EHLO.

● RFC 1869.

1

Page 22: Curso SMTP avanzado

Irontec – Curso SMTP

22

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 23: Curso SMTP avanzado

Irontec – Curso SMTP

23

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 24: Curso SMTP avanzado

Irontec – Curso SMTP

24

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 25: Curso SMTP avanzado

Irontec – Curso SMTP

25

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 26: Curso SMTP avanzado

Irontec – Curso SMTP

26

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 27: Curso SMTP avanzado

Irontec – Curso SMTP

27

Protocolo SMTP

$ telnet aktornet.ath.cx 25Trying 80.35.230.140...Connected to AsteriX.Escape character is '^]'.220 aktornet.ath.cx ESMTP Postfixehlo mail.irontec.com250­aktornet.ath.cx

250­PIPELINING250­SIZE 10240000250­VRFY250­ETRN250­STARTTLS250 8BITMIME

mail from: <[email protected]>250 Okrcpt to: <[email protected]>250 Okdata354 End data with <CR><LF>.<CR><LF>

1

Page 28: Curso SMTP avanzado

Irontec – Curso SMTP

28

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 29: Curso SMTP avanzado

Irontec – Curso SMTP

29

Protocolo SMTP

● Diversos servidores SMTP: Postfix, Qmail, Exim, Sendmail, Microsoft Exchange...

● Puertos well-known definidos: SMTP 25/tcp y SSMTP 465/tcp.

● Creado en 1982. RFC 821. Múltiples RFC's.

1

Page 30: Curso SMTP avanzado

Irontec – Curso SMTP

30

MIME (Multiple Internet Mail Extensions)

● Extensiones del Correo de Internet para Multiples propósitos. Caracteres ascii de 8 bits.

● Define la representación estándar para cuerpos de correos complejos.

● Aparece como solución a:– Codificación de caracteres en diferentes

idiomas. ñ (0xf1), Ñ (0xd1).– Contenido binario de 8 bits como: imágenes,

sonidos, programas...

1

Page 31: Curso SMTP avanzado

Irontec – Curso SMTP

31

MIME (Multiple Internet Mail Extensions)

● La transformación de 7 a 8 bits la realiza el MUA habitualmente.

● Para codificar datos binarios se utiliza el formato base64. ≈ 33% más de tamaño.

● Cabeceras para definir el tipo de contenido MIME.

1

Page 32: Curso SMTP avanzado

Irontec – Curso SMTP

32

MIME - Ejemplo

Mime­Version: 1.0Content­Type: multipart/mixed; boundary="Multipart=_Tue__27_Jul_2004_01_26_41_+0200_G2cYEnhBTt8gwhnt"

­­Multipart=_Tue__27_Jul_2004_01_26_41_+0200_G2cYEnhBTt8gwhntContent­Type: application/x­gtar; name="scripts.iptables.tgz"Content­Disposition: attachment; filename="scripts.iptables.tgz"Content­Transfer­Encoding: base64

H4sIAB2TBUEAA+1cX0/bSBDnlUh8hwGqNkiE2E5MrlQ9yQVzRBdILgG16qmqlngBU8freh3anvpl+3gP9x1u1n+C49hJCCGQ1oOE7d31zOzO7sxvZw2865qOx8srD0gSUk1VxVWuqVL8GtGKLOFPRZYr[...]Dm8Lz7RVKMQ+OR+87LjsgnLh0q2phCvnd38/FD+a8RZcBmgH/Vg32PSkSS8k98tTvSsk/wxOI6eccsopp5xyWmr6H+b3+QoAUAAA

­­Multipart=_Tue__27_Jul_2004_01_26_41_+0200_G2cYEnhBTt8gwhnt­­

1

Page 33: Curso SMTP avanzado

Irontec – Curso SMTP

33

Introducción – Recepcion Correo

IntroducciónRecepcion Correo

1

Page 34: Curso SMTP avanzado

Irontec – Curso SMTP

34

POP (Post Office Protocol)

● Protocolo de recepción de correo.● Diseñado para acceder a los correos de

modo off-line. Clientes estáticos y sin conexión.

● Poco pesado para la máquina servidora. Conexión, descarga y desconexión.

● Protocolo simple: 13 comandos que pueden responder con +OK o -ERR.

● Comportamiento defecto: descargar los mensajes y borrarlos del servidor.

● Puertos well-known definidos: POP3 110/tcp y POP3S 995/tcp.

1

Page 35: Curso SMTP avanzado

Irontec – Curso SMTP

35

POP – Secuencia Comando Protocolo

$ telnet mail.irontec.com 110Trying 82.194.66.125...Connected to mail.irontec.com.Escape character is '^]'.+OK POP3 mail [cppop 16.2] at [82.194.66.125]user [email protected]+OK Need a passwordpass ********+OK You have 509 messages totaling 34295635 octets from /home/ironwebs/mail/irontec.com/iker/inbox (full load ­ partial cache outdated/corrupted v0)stat+OK 509 34295053Tralara­ERR Command not implemented

1

Page 36: Curso SMTP avanzado

Irontec – Curso SMTP

36

IMAP (Internet Message Access Protocol)

● Protocolo de recepción de correos.● Método acceso correo almacenados en

almacén de correo remoto como si fuese local.

● Mensajes almacenados pueden ser accedidos de múltiples puntos sin moverlos.

● Protocolo soporta crear, modificar y/o eliminar buzones.

1

Page 37: Curso SMTP avanzado

Irontec – Curso SMTP

37

IMAP (Internet Message Access Protocol)

● Ofrece soporte para diferentes modos de acceso: online, offline, desconectado.

● Protocolo complejo: 24 comandos, 5 respuestas(OK, NO, BAD, PREAUTH, BYE)

● Puertos well-known definidos: IMAP 143/tcp y IMAPS 993/tcp.

● Creado en 1986. Univ. Stanford. Múltiples RFC's. Actual: RFC 3501. Version 4.

1

Page 38: Curso SMTP avanzado

Irontec – Curso SMTP

38

IMAP – Secuencia Comandos Protocolo

$ telnet mail.irontec.com 143Trying 82.194.66.125...Connected to mail.irontec.com.Escape character is '^]'.* OK [CAPABILITY IMAP4REV1 LOGIN­REFERRALS AUTH=LOGIN] mail.irontec.com I MAP4rev1 2003.339­cpanel at Tue, 27 Jul 2004 03:38:14 +0200 (CEST)1 CAPABILITY* CAPABILITY IMAP4REV1 IDLE NAMESPACE MAILBOX­REFERRALS BINARY UNSELECT SCAN SOR         T THREAD=REFERENCES THREAD=ORDEREDSUBJECT MULTIAPPEND LOGIN­REFERRALS AUTH=LOGIN1 OK CAPABILITY completed2 LOGIN [email protected] ********2 OK [CAPABILITY IMAP4REV1 IDLE NAMESPACE MAILBOX­REFERRALS BINARY UNSELECT SCAN          SORT THREAD=REFERENCES THREAD=ORDEREDSUBJECT MULTIAPPEND] User [email protected]          authenticated3 NAMESPACE* NAMESPACE (("" "/")("#mhinbox" NIL)("#mh/" "/")) (("~" "/")) (("#shared/" "/")         ("#ftp/" "/")("#news." ".")("#public/" "/"))3 OK NAMESPACE completedSELECT INBOX.SentSELECT BAD Command unrecognized: INBOX.SENT4 SELECT INBOX.Sent* 1 EXISTS* 0 RECENT

1

Page 39: Curso SMTP avanzado

Irontec – Curso SMTP

39

IMAP vs POP

Ventajas POP● Protocolo muy simple. Fácil implementación.● Actualmente hay más clientes que lo

soportan.● Consume menos recursos de la máquina

servidora.

1

Page 40: Curso SMTP avanzado

Irontec – Curso SMTP

40

IMAP vs POP

Ventajas IMAP● Puede manipular correos con distintos flags.

Definibles por usuario.● Puede acceder y manipular múltiples

buzones.● Puede almacenar correos tan bien como los

recoge.● Permite actualizaciones concurrentes y

acceso a buzones compartidos.● Diseñado para optimizar el acceso online,

especialmente en accesos de baja velocidad.

1

Page 41: Curso SMTP avanzado

Irontec – Curso SMTP

41

Introducción – Mailbox

IntroducciónBuzones (Mailbox)

1

Page 42: Curso SMTP avanzado

Irontec – Curso SMTP

42

Mailbox – mbox

● Es el método tradicional de almacenar correos en servidores tipo UNIX.

● Los correos según van llegando se van concatenando en un único archivo.

● Para indicar fin y comienzo de mail:– Cada correo empieza por From:

From [email protected] Fri Feb 27 09:27:55 2004

– Y acaba por línea en blanco

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # fin de archivo adjunto------=NEOMAIL_ATT_0.0743188935603065-- # fin de indicador adjunto # Línea en blancoFrom [email protected] Fri Feb 27 11:56:54 2004 # From: sig. mail

1

Page 43: Curso SMTP avanzado

Irontec – Curso SMTP

43

Mailbox – mbox

● Solo un proceso puede abrir el archivo mbox en modo lectura/escritura.

● Acceso concurrente requiere mecanismo de bloqueo.

● Durante la actualización del archivo mbox, todo el resto deben esperar.

● Por defecto el archivo es: – /var/spool/mail/usuario

1

Page 44: Curso SMTP avanzado

Irontec – Curso SMTP

44

Mailbox – Maildir

● Implementados inicialmente por el servidor Qmail para mejorar los mbox.

● Cada mensaje en un archivo individual.● Mensaje en formato RFC 822.

– Comienza con la cabecera Return-Path:– Seguido de la cabecera Delivered-To:Return-Path: <[email protected]>Delivered-To: [email protected]: from aktornet.ath.cx (localhost [127.0.0.1]) by AsteriX (Postfix) with ESMTP id 9D81A2EAAD; Mon, 12 Jan 2004 21:48:47 +0100 (CET)

– No puede acabar con línea en blanco.● No es necesario bloquear los correos.

1

Page 45: Curso SMTP avanzado

Irontec – Curso SMTP

45

Mailbox – Maildir

● Hay un procedimiento definido de añadir nuevos correos al maildir.

● Un maildir se compone por 3 subdirectorios: tmp, cur, new.

● Existe una manera definida para nombrar a cada archivo.

1090878520.M967905P7992V0000000000000803I0001806F_0.AsteriX,S=25411090878520.M967905P7992V0000000000000803I0001806F_0.AsteriX,S=2541:2,FS

new: time.MusecPpidVdevIino.host,S=cntcur: time.MusecPpidVdevIino.host,S=cnt:2,info

cnt: tamaño de archivo. Sirve para optimizar el trabajo con quotas.info: estado del mail. 0 ó + flags. Orden alfabético.F: marcado, R: Replied-To, T: Trashed, D: Draft, S: Seen

● Multiples procesos pueden acceder al mismo tiempo a los maildirs

1

Page 46: Curso SMTP avanzado

Irontec – Curso SMTP

46

Mailbox – Maildir

Maildirmake● Comando para crear maildirs.● Crea automáticamente los 3 directorios:

– new– cur– tmp

● Sintaxis

$ maildirmake [opciones] maildir

1

Page 47: Curso SMTP avanzado

Irontec – Curso SMTP

47

Mailbox – Maildir

Ejemplo● Indicamos la quota a aplicar sobre el maildir.

maildirmake ­q quota

● Crea un maildir “compartible”. Diferentes permisos.

maildirmake ­S

● No crea un maildir, sino una carpeta dentro del maildir.

maildirmake ­f folder: 

~$ maildirmake ­q 5000000S,1000C ./Maildir/

1

Page 48: Curso SMTP avanzado

Irontec – Curso SMTP

48

Mailbox – mbox vs Maildir

● Maildir lo soportan menos MUA's que mbox.

● Mbox muy poco eficiente para mailboxes grandes.

● Maildir, al ser múltiples archivos, suele ocupar más espacio en disco. Cluster Size.

● Maildir trabaja muy bien con NFS, que tiene grandes problemas históricos con bloqueos.

● apt-get install mb2md ;-P● Todo lo anterior mencionado ;-)

1

Page 49: Curso SMTP avanzado

Irontec – Curso SMTP

49

Postfix

Postfix(SMTP Server)

http://www.postfix.org

2

Page 50: Curso SMTP avanzado

Irontec – Curso SMTP

50

Postfix

● Servidor de correo que funciona sobre sistemas tipo UNIX.

● Su intención fue la de sustituir a sendmail. Compatible para el resto de aplicaciones.

● Arquitectura y diseño muy modular.● Fácil de administrar y configurar.● Muy rápido. Fué diseñado pensando en el rendimiento.

Evita saturar otros sistemas.● Repartir correo de forma local puede repartir a

almacen de correo o pasarlo a un MDA.● Escrito en C. Wietse Zweitze Venema, IBM hacker.

2

Page 51: Curso SMTP avanzado

Irontec – Curso SMTP

51

Postfix

● Arquitectura modular: Cada proceso se ejecuta con privilegios mínimos para su tarea.

● Procesos que no se necesitan se deshabilitan: no se pueden explotar. Postfix GW.

● Los procesos se aislan unos de otros. Muy poca comunicación entre procesos (IPC).

● Evita utilizar buffers de tamaño fijo, evitando que tengan éxito ataques buffer overflow

● Puede ejecutarse chrootado (/var/spool/postfix).● Preparado para ataques DoS. Cantidad de memoria

controlada.

2

Page 52: Curso SMTP avanzado

Irontec – Curso SMTP

52

Postfix

● Postfix

Page 53: Curso SMTP avanzado

Irontec – Curso SMTP

53

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 54: Curso SMTP avanzado

Irontec – Curso SMTP

54

Postfix

● Postfix gestiona las colas mediante procesos independientes.– Pickup: Recoge los correos que provienen de la

cola maildrop y los pasa a cleanup.– Smtpd: Este proceso atiende, mediante

protocolo SMTP, los correos de otros sistemas.– Cleanup: Analiza las cabeceras de los correos.

Si ok, los deposita en la cola incoming.– Qmgr: Proceso encagargado de tratar los

correos que llegan a incoming, depositarlos en active y lanzar el proceso adecuado para su encaminamiento: local, smtp o pipe.

2

Page 55: Curso SMTP avanzado

Irontec – Curso SMTP

55

Postfix

– Local: Proceso encargado de depositar el correo en el buzón.

– Smtp: Proceso encargado de enviar el correo al host destino mediante protocolo SMTP.

2

Page 56: Curso SMTP avanzado

Irontec – Curso SMTP

56

Postfix

● Las tablas, creadas por el administrador, sirven a los procesos para saber que tratamiento hay que dar a cada correo. Son 6 tablas aunque no son obligatorias.– Access: Sistemas a los que se acepta o

rechaza los correos. La utiliza proceso smtpd.– Aliases: Define nombres alternativos a usuarios

locales. Consulta el proceso local.– Canonical: Relación entre nombres alternativos

y reales, locales o no. Proceso cleanup.

2

Page 57: Curso SMTP avanzado

Irontec – Curso SMTP

57

Postfix

– Relocated: Devolver los mensajes que han cambiado de dirección. Proceso qmgr.

– Transport: Política de encaminamiento por dominios. Proceso trivial-rewrite.

– Virtual: Relación entre usuarios virtuales y reales. Proceso cleanup.

2

Page 58: Curso SMTP avanzado

Irontec – Curso SMTP

58

Postfix

● Postfix soporta muy diversos soportes de backend para las tablas. Algunos de ellos:– Hash: El archivo generado es un hash.

Disponible para sistemas con soporte BD db.– MySQL: Mapeo de las tablas de postfix a

MySQL.– PostgreSQL: Mapeo de las tablas de postfix a

PostgreSQL.– LDAP: Mapeo de las tablas de postfix a LDAP.

Actualmente es la mejor solución aunque la más complicada de implementar, sobre todo contra Active Directory. No hay esquemas propios para LDAP.

2

Page 59: Curso SMTP avanzado

Irontec – Curso SMTP

59

Arquitectura

● La arquitectura de correo a instalar es la siguiente:– Postfix– Courier Imap– PostfixAdmin– MailScanner

● SpamAssassin● Clamav● MailWatch

– Squirrelmail

Page 60: Curso SMTP avanzado

Irontec – Curso SMTP

60

Postfix

● Instalación● Gracias al gestor de paquetes es sencillo instalar

Postfix en pocos minutos.apt­get install postfix postfix­mysql

● Los ficheros de configuración se encuentran en /etc/postfix

● Parar Postfix: /etc/init.d/postfix stop● Arrancar Postfix: /etc/init.d/postfix start● Reiniciar Postfix: /etc/init.d/postfix restart

Page 61: Curso SMTP avanzado

Irontec – Curso SMTP

61

Archivos de Configuración

main.cf [ Debian: /etc/postfix/main.cf ]

– Archivo de configuración principal de postfix. La mayoría de los cambios aquí.

master.cf [ Debian: /etc/postfix/master.cf ]

– Archivo de configuración del demonio master. Servicios o transporte.

aliases [ Debian: /etc/aliases ]

– Archivo de alias. Equivalencia entre una dirección local ficticia y una dirección local real

2

Page 62: Curso SMTP avanzado

Irontec – Curso SMTP

62

Archivos de Configuración

main.cf

– Contiene unos pocos de todos los parámetros que controlan el comportamiento de Postfix.

postconf -n

– Los parámetros no especificados cogen su valor por defecto.

postconf -d

– Si no sabemos para que sirve un parámetro, mejor dejarlo con su valor por defecto.

2

Page 63: Curso SMTP avanzado

Irontec – Curso SMTP

63

Archivos de Configuración

main.cf

– Formatoparámetro = valor

– Linea en blanco, # comentario y espacios antes y despues del = no importan.

– Cada parámetro 1 línea. Si siguiente línea empieza por ESPACIO, es que continúa.

smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination

– $variable recibe el valor de otro parámetro. (mydestination = $myhostname)

2

Page 64: Curso SMTP avanzado

Irontec – Curso SMTP

64

Proceso de filtrado

● Posftix permite realizar una serie de tareas de filtrado de acuerdo al siguiente orden:– Restricciones SMTPD

● Estados de Restricciónsmtpd_client_restrictionssmtpd_helo_restrictionssmtpd_sender_restrictionssmtpd_recipient_restrictionssmtpd_data_restrictions

● Restricciones● Listas de acceso (mapas)

– Comprobaciones de Cabeceras/Cuerpo del mail– Filtros de Contenidos

2

Page 65: Curso SMTP avanzado

Irontec – Curso SMTP

65

Comandos

● Algunos de los comandos más interesantes de Postfix:– mailq: lista el contenido de la cola de correo.

Muestra el ID de cola, tamaño del correo, hora llegada, remitente y destinatario/s. Si no se ha podido entregar, muestra la razón. Enlace simbólico a sendmail (compatibilidad).

– newaliases: actualiza la base de datos de los alias (/etc/aliases). Enlace simbólico a sendmail (compatibilidad).

– postsuper: se encarga de realizar operaciones de mantenimiento

2

Page 66: Curso SMTP avanzado

Irontec – Curso SMTP

66

Comandos

– postqueue: comando que sirve de interfaz para la gestión de las colas.

– postmap: crea, actualiza o consulta una o más tablas de postfix.

– postconf: muestra los valores actuales de los parámetros de postfix.

2

Page 67: Curso SMTP avanzado

Irontec – Curso SMTP

67

Registros

mail.log [Debian: /var/log/mail.log]

– Fichero donde se registran todas las acciones del servidor postfix.

mail.err [Debian: /var/log/mail.err]

– Fichero donde se registran los errores que se producen en postfix.

mail.info [Debian: /var/log/mail.info]

– Fichero donde se registran todas las acciones del servidor postfix.

2

Page 68: Curso SMTP avanzado

Irontec – Curso SMTP

68

Pflogsumm

Pflogsumm(Visor de Logs)

http://jimsun.linxnet.com/postfix_contrib.html

6

Page 69: Curso SMTP avanzado

Irontec – Curso SMTP

69

Características

● Es una herramienta para generar informes del correo que gestiona un MTA tipo Postfix.

● Genera informes muy completos sobre la cantidad de correos enviados y recibidos, por día, por hora, por remitente, por destinatario, errores... ordenados según diferentes criterios.

● Escrito en Perl 5.0

6

Page 70: Curso SMTP avanzado

Irontec – Curso SMTP

70

Instalación

● Instalamos el visor de logs.# apt-get install pflogsumm

6

Page 71: Curso SMTP avanzado

Irontec – Curso SMTP

71

Modo de Uso

# /usr/sbin/pflogsumm [opciones] [archivo]

– Mostrar el histórico de los correos enviados ayer# pflogsumm -d yesterday /var/log/mail.log

– Mostrar el histórico de los correos enviados hoy# pflogsumm -d today /var/log/mail.log

– Mostrar el histórico de los correos enviados durante esta semana (por defecto los log rotan cada semana)

# pflogsumm /var/log/mail.log

6

Page 72: Curso SMTP avanzado

Irontec – Curso SMTP

72

Automatizar la generación de informes

● A menudo puede resultar interesante la generación de informes de forma automática. Si encima los recibimos por email todavía mejor ;-)

● Utilizaremos la herramienta cron● Envio de informe diario

● # Script que enviará diariamente a las 7:00 am● # a la cuenta de postmaster un correo con el

asunto:● # “estadísticas diarias de <nombre_host>” y con el● # resumen generado por pflogsumm como cuerpo

del mismo0 7 * * * /usr/sbin/pflogsumm -d yesterday /var/log/mail.log 2>&1 | /usr/bin/mailx -s "estadísticas diarias de $(uname -n)" postmaster

6

Page 73: Curso SMTP avanzado

Irontec – Curso SMTP

73

PostfixAdmin

Postfix Admin

6

Page 74: Curso SMTP avanzado

Irontec – Curso SMTP

74

PostfixAdmin

● La configuración de Postfix la dejamos para el final. Vamos a instalar PostfixAdmin

● Es una web de administración de usuarios y dominios virtuales para nuestro servidor de correo

● Necesita para funcionar:– PHP– Apache– Mysql

apt-get install php5 php5-mysql php5-imap mysql-server apache2

Page 75: Curso SMTP avanzado

Irontec – Curso SMTP

75

PostfixAdmin

● Creamos la Base de Datos y el usuario con privilegios de acceso a ella:

debian­smtp:~# mysql ­u root ­p 

Enter password: 

Welcome to the MySQL monitor.  Commands end with ; or \g. 

Your MySQL connection id is 33 

Server version: 5.0.51a­24+lenny2 (Debian) 

Type 'help;' or '\h' for help. Type '\c' to clear the buffer. 

mysql> CREATE DATABASE postfix; 

Query OK, 1 row affected (0.01 sec) 

mysql> CREATE USER 'postfix'@'localhost' IDENTIFIED BY 'password'; 

Query OK, 0 rows affected (0.00 sec) 

mysql> GRANT ALL PRIVILEGES ON 'postfix'.* TO 'postfix'@'localhost'; 

Query OK, 0 rows affected (0.00 sec) 

mysql> quit

Page 76: Curso SMTP avanzado

Irontec – Curso SMTP

76

PostfixAdmin

● PostfixAdmin se descarga desde:– http://postfixadmin.sourceforge.net/

● La instalación es tan sencilla como descomprimir el tar.gz y moverlo a /var/www

● El fichero de configuración es config.inc.php● Hasta que no editemos ese fichero no funcionará

nada.

Page 77: Curso SMTP avanzado

Irontec – Curso SMTP

77

PostfixAdmin

● http://localhost/postfixadmin/setup.php● En esta web nos indicará si cumplimos todos los

requisitos para el correcto funcionamiento de la aplicación

● Será necesario generar un HASH que debemos introducir en el fichero de configuración. Será la setup password

● Cualquier problema o error de funcionamiento quedará reflejado en los logs de Apache

Page 78: Curso SMTP avanzado

Irontec – Curso SMTP

78

PostfixAdmin

$CONF['configured'] = true;

$CONF['setup_password'] = '4aa35a18f0f59b6f3a0c2c402f3ee931:016cf5f10aaa3c69511bf11f847c5seaec20add8';

$CONF['postfix_admin_url'] = 'http://localhost/postfixadmin/';

$CONF['default_language'] = 'es';

$CONF['database_type'] = 'mysql';

$CONF['database_host'] = 'localhost';

$CONF['database_user'] = 'postfix';

$CONF['database_password'] = 'password';

$CONF['database_name'] = 'postfix';

$CONF['database_prefix'] = '';

$CONF['admin_email'] = '[email protected]';

$CONF['encrypt'] = 'cleartext';

.......

Page 79: Curso SMTP avanzado

Irontec – Curso SMTP

79

PostfixAdmin

● Se crea un usuario de sistema, que será el que usen todos los procesos que necesiten acceder a los mailboxes.

debian­smtp:~# useradd vmaildebian­smtp:~# id vmailuid=1001(vmail) gid=1001(vmail) grupos=1001(vmail)debian­smtp:~# mkdir /var/vmaildebian­smtp:~# chown ­R vmail:vmail /var/vmail

Page 80: Curso SMTP avanzado

Irontec – Curso SMTP

80

Postfix

La Base de Datos tiene una serie de tablas:+­­­­­­­­­­­­­­­­­­­­­­­+

| Tables_in_postfix     |

+­­­­­­­­­­­­­­­­­­­­­­­+

| admin                 | 

| alias                 | 

| alias_domain          | 

| config                | 

| domain                | 

| domain_admins         | 

| fetchmail             | 

| log                   | 

| mailbox               | 

| quota                 | 

| quota2                | 

| vacation              | 

| vacation_notification | 

+­­­­­­­­­­­­­­­­­­­­­­­+

Page 81: Curso SMTP avanzado

Irontec – Curso SMTP

81

Postfix

● Tendremos que crear una serie de ficheros y referenciarlos en main.cf para que Postfix sepa donde se guardan los datos.

– relay_domains_maps.cf– virtual_alias_maps.cf– virtual_domains_maps.cf– virtual_mailbox_maps.cf– virtual_mailbox_limit_maps.cf

Page 82: Curso SMTP avanzado

Irontec – Curso SMTP

82

Postfix

● relay_domains_maps.cf

user = postfixpassword = passwordhosts = localhostdbname = postfixquery = SELECT domain FROM domain WHERE domain='%s' and backupmx = '1'

Page 83: Curso SMTP avanzado

Irontec – Curso SMTP

83

Postfix

● virtual_alias_maps.cf

user = postfixpassword = passwordhosts = localhostdbname = postfixquery = SELECT goto FROM alias WHERE address='%s' AND active = 1

Page 84: Curso SMTP avanzado

Irontec – Curso SMTP

84

Postfix

● virtual_domains_maps.cf

user = postfixpassword = passwordhosts = localhostdbname = postfixquery = SELECT domain FROM domain WHERE domain='%s'

Page 85: Curso SMTP avanzado

Irontec – Curso SMTP

85

Postfix

virtual_mailbox_maps.cf

user = postfixpassword = passwordhosts = localhostdbname = postfixquery = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1

Page 86: Curso SMTP avanzado

Irontec – Curso SMTP

86

Postfix

● virtual_mailbox_limit_maps.cf

user = postfixpassword = passwordhosts = localhostdbname = postfixquery = SELECT quota FROM mailbox WHERE username='%s'

Page 87: Curso SMTP avanzado

Irontec – Curso SMTP

87

Postfix

Referenciamos los ficheros en el main.cf

virtual_alias_maps = proxy:mysql:/etc/postfix/virtual_alias_maps.cf

virtual_mailbox_domains = proxy:mysql:/etc/postfix/virtual_domains_maps.cf

virtual_mailbox_maps = proxy:mysql:/etc/postfix/virtual_mailbox_maps.cf

virtual_relay_domains = proxy:mysql:/etc/postfix/relay_domains_maps.cf

virtual_mailbox_base = /var/vmail

virtual_minimum_uid = 1001

virtual_transport = virtual

virtual_uid_maps = static:1001

virtual_gid_maps = static:1001

local_transport = virtual

Page 88: Curso SMTP avanzado

Irontec – Curso SMTP

88

Postfix-SASL

Postfix-SASL

2

Page 89: Curso SMTP avanzado

Irontec – Curso SMTP

89

Postfix-SASL

● Simple Authentication and Security Layer.● Método de autenticación para protocolos

orientados a la conexión.● En sistemas de correo se utiliza para permitir

hacer relay.● Integrado en postfix. No es necesario utilizar

librerías externas (Cyrus SASL Library).● Permite distintos tipos de autenticación:

ANONYMOUS, CRAM-MD5, DIGEST-MD5, GSSAPI, KERBEROS_V4, OTP, PLAIN, or LOGIN.

● RFC 2222 y 2554. AUTH.

2

Page 90: Curso SMTP avanzado

Irontec – Curso SMTP

90

Instalación

● Instalamos librerías para implementar la API de SASL

# apt-get install libsasl2-2

● Instalamos herramientas para administración de usuarios

# apt-get install sasl2-bin

● Comprobamos que el demonio smtpd soporta sasl.

$ ldd /usr/lib/postfix/smtpdlibsasl2.so.2 => /usr/lib/libsasl2.so.2 (0x401a6000)

2

Page 91: Curso SMTP avanzado

Irontec – Curso SMTP

91

Instalación - main.cf

● Añadimos las siguientes líneas al main.cf

smtpd_sasl_auth_enable = yessmtpd_sasl2_auth_enable = yesbroken_sasl_auth_clients = yessmtpd_sasl_local_domain = $myhostnamesmtpd_recipient_restrictions =  permit_mynetworks,  permit_sasl_authenticated,  reject_unauth_destinationsmtpd_sasl_security_options = noanonymous

2

Page 92: Curso SMTP avanzado

Irontec – Curso SMTP

92

Instalación - pwcheck

● Existen varios métodos gestionar las contraseñas.– saslauth: Demonio Cyrus SASL contra cuentas UNIX.– auxprop: Archivo independiente de usuarios y

contraseñas.● Escogemos auxprop en archivo smtpd.conf

[/etc/postfix/sasl/smtpd.conf]● Escogemos los métodos de autenticación que

queremos permitir.pwcheck_method: auxpropmech_list: plain login

2

Page 93: Curso SMTP avanzado

Irontec – Curso SMTP

93

Instalación - pwcheck

● Paramos el demonio de Cyrus saslauthd (/etc/default/saslauthd).

START=no

2

Page 94: Curso SMTP avanzado

Irontec – Curso SMTP

94

Instalación - mysql

● Configuramos SASL para hacer uso de la Base de Datos MySQL. Será donde consultará los usuarios y contraseñas:

debian-smtp:/etc/postfix/sasl# cat smtpd.conf

pwcheck_method: auxprop

mech_list: PLAIN LOGIN

auxprop_plugin: sql

sql_verbose: yes

sql_engine: mysql

sql_hostnames: 127.0.0.1

sql_user: postfix

sql_passwd: password

sql_database: postfix

sql_select: select password from mailbox where username = '%u@%r'

log_level: 7

2

Page 95: Curso SMTP avanzado

Irontec – Curso SMTP

95

Chroot Postfix

● La conexión con la BBDD se hará mediante socket mysql, /var/run/mysqld/mysqld.sock

● Postfix por defecto funciona enjaulado (chroot), lo que da más seguridad, pero también algún problema en la configuración

● Como el socket está fuera de su chroot, no puede conectarse a mysql.

● ¿Solución? Enlace simbólico

debian­smtp:~# cd /var/spool/postfix/var/run/

Debian­smtp:~# ln ­s /var/run/mysqld/mysqld.sock mysqld.sock

Page 96: Curso SMTP avanzado

Irontec – Curso SMTP

96

Postfix-TLS

Postfix-TLS

2

Page 97: Curso SMTP avanzado

Irontec – Curso SMTP

97

Postfix-TLS

● Transport Security Layer.● Se construye a partir de SSL 3.0. Muy similar. A

veces se le llama SSL 3.1● Mejora la comunicación TCP añadiendo cifrado e

integridad en los correos.● No protege el contenido de los mails. Para ello

PGP o S/MIME.● Necesita un par de claves pública y privada.

Autoridad Certificadora (CA).● RFC 2487 y 3207. STARTTLS.● En Postfix el parche lo hizo Kutz Jänicke.

2

Page 98: Curso SMTP avanzado

Irontec – Curso SMTP

98

Instalación

● El soporte TSL ya viene incluido en Postfix

● Instalamos soporte para SSL (Secure Socket Layer)

# apt-get install openssl

● Creamos los certificados ssl.# openssl req -new -x509 -nodes -out smtpd.pem -keyout smtpd.pem -days 3650

2

Page 99: Curso SMTP avanzado

Irontec – Curso SMTP

99

Instalación - main.cf

● Añadimos las siguientes líneas al main.cf

smtpd_use_tls = yessmtp_tls_note_starttls_offer = yessmtpd_tls_key_file = /etc/postfix/ssl/smtpd.pemsmtpd_tls_cert_file = /etc/postfix/ssl/smtpd.pemsmtpd_tls_CAfile = /etc/postfix/ssl/smtpd.pemsmtpd_tls_loglevel = 1smtpd_tls_received_header = yessmtpd_tls_session_cache_timeout = 3600stls_random_source = dev:/dev/urandom

2

Page 100: Curso SMTP avanzado

Irontec – Curso SMTP

100

Courier IMAP

Courier IMAP(IMAP Server)

http://www.courier-mta.org/imap/

3

Page 101: Curso SMTP avanzado

Irontec – Curso SMTP

101

Características

● Es un servidor que da acceso IMAP a los Maildirs. Está diseñado para ello.

● Servidor IMAP incluido en Courier Mail Server. Configurado en solitario puede trabajar con otros MTA's que reparten a Maildirs.

● Soporta varias extensiones al formato Maildir básico como carpetas y quotas por soft.

● Incluye módulos de autenticación abstractos. Passwd, PAM, MySQL, PostreSQL, LDAP...

● Ofrece IMAP sobre SSL. Soporte IPv6.

3

Page 102: Curso SMTP avanzado

Irontec – Curso SMTP

102

Características

● Soporta carpetas compartidas entre grupos de usuarios.

● Permite limitar el nº de accesos de IMAP y numero máximo de accesos desde la misma IP.

● Escrito en C.

3

Page 103: Curso SMTP avanzado

Irontec – Curso SMTP

103

Arquitectura3

Page 104: Curso SMTP avanzado

Irontec – Curso SMTP

104

Instalación

● Instalamos los demonios para imap e imap-ssl de la suite de courier.

# apt-get install courier-imap courier-imap-ssl

● Instalamos los demonios y librerías genéricas de courier.

# apt-get install courier-authdaemon courier-base courier-ssl

3

Page 105: Curso SMTP avanzado

Irontec – Curso SMTP

105

Archivo de Configuración SSL

imapd.cnf [ Debian: /etc/courier/imapd.cnf ]

[ req ]default_bits = 1024encrypt_key = yesdistinguished_name = req_dnx509_extensions = cert_typeprompt = no

[ req_dn ]C=ESST=BizkaiaL=BilbaoO=Irontec - Internet y Sistemas sobre GNU/LinuXOU=SistemasCN=mail.irontec.comemailAddress=sistemas@irontec.com

3

Page 106: Curso SMTP avanzado

Irontec – Curso SMTP

106

Certificado Digital

● Generamos la clave privada# openssl genrsa -out mail.irontec.com.key 1024

● Generamos la solicitud de certificado firmado# openssl req -new -key mail.irontec.com.key -config imapd.cnf -out mail.irontec.com.csr

● Generamos un certificado firmado mediante una CA

# openssl ca -out mail.irontec.com.crt -in mail.irontec.com.csr

3

Page 107: Curso SMTP avanzado

Irontec – Curso SMTP

107

Configuración SSL

● El certificado de Courier tiene que estar formado por:– Clave privada del servidor– Certificado firmado por una CA

● Unicamente desde -----BEGIN CERTIFICATE----– Editamos y eliminamos el resto

– Parámetros DH

# cat mail.irontec.com.key mail.irontec.com.crt > mail.irontec.com.pem# openssl gendh >> mail.irontec.com.pem

3

Page 108: Curso SMTP avanzado

Irontec – Curso SMTP

108

Configuración SSL

# cat www.irontec.com.pem ­­­­­BEGIN RSA PRIVATE KEY­­­­­MIICXAIBAAKBgQDWP7WzRg7DNpXgF94YsqPr84p08sAWcM6jXdG1QQZhuWBtyoWU0DnpLndcjV5At6IdQ7ZqSi6XbE1jEONyIZ3Ruimrd2+gks8a9NkQoI2YLjTTR5dLEAZxasb3AkEA3dsqgh7cBItGaC7PYve0vcH4gMYTiOR1NHzQHv4uojdAxvCGxdRVqEYEUBnNGcYyltbSzLFKt7Npz6RORpB4lwJBAL7eSyORtWJ1RT4WnceIOWf6Kkaaa4NEJttVYYBw+8muVQgnnM/MbjlzRUcDm9HL82sd9rZXAvh2dj30oWTTUYUCQQChOiQTOe/00W5SSipmptNPz8YTd1887aILieUJkPk84+CMcsHOxPeW+YMq3wVBhNrA6c95+CHvjFAKGULVXypzAj9VpUkgGwDmCFayOs4zwa5MN6B2G4NN6EsNDu/SWcY/E/skSXjRI7RhcR3cle7KDqaQJJAI/TOFhV43OWC1q1Q=­­­­­END RSA PRIVATE KEY­­­­­­­­­­BEGIN CERTIFICATE­­­­­MIIDrDCCAxWgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBkDELMAkGA1UEBhMCRVMxEDAOBgNVBAgTB0JpemthaWExDzANBgNVBAcTBkJpbGJhbzEQMA4GA1UEChMHSXJvhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEw6tWudMrm8QFoYGWpIGTMIGQMQswCQYDVQQGEwJFUzEQMA4GA1UECBMHQml6a2FpYTEPMA0GA1UEBxMGQmlsYmFvMRAwDgYDVQQKEwdJcm9udGVjMREwDwYDVQQLEwhTaXN0ZW1hczEUMBIGA1UEAxMLaXJvbnRlYy5jb20xIzAhBgkqhkiG9w0BCQEWFHNpc3RlbWFzQGlyb250ZWMuY29tggkAhSHOIQtatpswDQYJKoZIhvcNAQEEBQADgYEAM1S8cMkUC/nE5gnpiEWg+lYcHuJsNs6uBTNn7PdUiRqZOTCcucqIpIV1iwe6OxsXYz3DQe3JCXcF+3BsGTt9hrrTTNOgoEZLEPlTHUV3dVZnm0wNlMuobfM0p6BhS+m2NWFMQKpE79rWcgShkLeJfzlIzDWRchzj4205Fpe+VMo=­­­­­END CERTIFICATE­­­­­­­­­­BEGIN DH PARAMETERS­­­­­MEYCQQDTT1zESN4Dzbp9mL0bIdbbS/CafrR2Q0RvWumpPYQX4jjwKk3mEttinZ4HwzMDbuS8a5EgRTRk67TPq0H/uBIDAgEC­­­­­END DH PARAMETERS­­­­­

3

Page 109: Curso SMTP avanzado

Irontec – Curso SMTP

109

Courier POP

Courier POP(POP Server)

http://www.courier-mta.org/imap/

3

Page 110: Curso SMTP avanzado

Irontec – Curso SMTP

110

Instalación

● Instalamos los demonios para pop e pop-ssl de la suite de courier.

# apt-get install courier-pop courier-pop-ssl

● Instalamos los demonios y librerías genéricas de courier (en caso de no tenerlas ya)

# apt-get install courier-authdaemon courier-base courier-ssl

3

Page 111: Curso SMTP avanzado

Irontec – Curso SMTP

111

Autenticación

● La autenticación en courier se realiza mediante el authdaemon.

● Al igual que con el resto de servicios, debemos configurarlo para hacer uso de los datos almacenados en MySQL.

● Creamos el fichero /etc/courier/authmysqlrc

Page 112: Curso SMTP avanzado

Irontec – Curso SMTP

112

Autenticación

MYSQL_SERVER localhost

MYSQL_USERNAME postfix

MYSQL_PASSWORD password

MYSQL_DATABASE postfix

MYSQL_USER_TABLE mailbox

MYSQL_CLEAR_PWFIELD  password

MYSQL_UID_FIELD 1001

MYSQL_GID_FIELD 1001

MYSQL_LOGIN_FIELD username

MYSQL_HOME_FIELD'/var/vmail'

MYSQL_NAME_FIELDname

MYSQL_MAILDIR_FIELD maildir

MYSQL_QUOTA_FIELD quota

MYSQL_SOCKET /var/run/mysqld/mysqld.sock

Page 113: Curso SMTP avanzado

Irontec – Curso SMTP

113

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 114: Curso SMTP avanzado

Irontec – Curso SMTP

114

Spam

Page 115: Curso SMTP avanzado

Irontec – Curso SMTP

115

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 116: Curso SMTP avanzado

Irontec – Curso SMTP

116

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 117: Curso SMTP avanzado

Irontec – Curso SMTP

117

SPAM

● Las medidas anti spam a nivel de MTA son más rápidas y producen menos impacto en el servidor

● Son menos fléxibles● Son un todo o nada, o el correo se acepta o se

rechaza● A nivel de MTA se deben poner aquellas

comprobaciones que sabemos que identifican un spam con un 99% de fiabilidad ;)

Page 118: Curso SMTP avanzado

Irontec – Curso SMTP

118

SPAM

● Listas negras (RBL)

smtpd_client_restrictions =  permit_mynetworks  permit_sasl_authenticated  reject_unknown_client  reject_rbl_client sbl­xbl.spamhaus.org  reject_rbl_client bl.spamcop.net  reject_rbl_client rbl.dns­servicios.com

Page 119: Curso SMTP avanzado

Irontec – Curso SMTP

119

SPAM

SPF, direcciones desconocidas...

smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination reject_non_fqdn_recipient reject_unknown_recipient_domain check_policy_service unix:private/policyd-spf check_policy_service inet:127.0.0.1:10031

Page 120: Curso SMTP avanzado

Irontec – Curso SMTP

120

SPAM

● Comprobación del HELO

smtpd_helo_restrictions = reject_invalid_hostname reject_unknown_hostname reject_non_fqdn_hostname

Page 121: Curso SMTP avanzado

Irontec – Curso SMTP

121

SpamAssassin

SpamAssassin(Anti-spam)

http://spamassassin.apache.org/

4

Page 122: Curso SMTP avanzado

Irontec – Curso SMTP

122

Características

● Es un filtro para correos que se utiliza para identificar el SPAM (UBE o UCE).

● Realiza una serie de pruebas sobre el correo para comprobar si es spam o no.

● Utiliza análisis bayesianos. Los usuarios pueden entrenarle para que aprenda.

● Soporta gran cantidad de listas negras (mail-abuse.org, ordb.org, ...)

● Diseñado para ser llamado por los archivos .mailfilter o .forward del MDA de un usuario, aunque puede ser integrado junto al MTA.

● Resulta muy pesado para la máquina en el que está instalado.

● Escrito en Perl.

4

Page 123: Curso SMTP avanzado

Irontec – Curso SMTP

123

Instalación

● Instalamos el software demonio y cliente anti spam.

# apt-get install spamassassin spamc

4

Page 124: Curso SMTP avanzado

Irontec – Curso SMTP

124

Ejemplo – GTUBE

● Mail de prueba. SpamAssassin le otorga 1000.0 puntos.

Subject: Test spam mail (GTUBE)Message-ID: <[email protected]>Date: Wed, 23 Jul 2003 23:30:00 +0200From: Sender <[email protected]>To: Recipient <[email protected]>Precedence: junkMIME-Version: 1.0Content-Type: text/plain; charset=us-asciiContent-Transfer-Encoding: 7bit

This is the GTUBE, the Generic Test for Unsolicited Bulk Email

4

Page 125: Curso SMTP avanzado

Irontec – Curso SMTP

125

Aprendizaje

● Comando para el aprendizaje del SpamAssassin.

$ sa-learn [opciones] archivo/s

– Aprende los correos del directorio ham como NO spam.

sa-learn --ham ham

– Aprende el correo X como spam.sa-learn --spam ~/Maildir/spam/X

– Olvida el correo archivo que le hicimos aprender.sa-learn –-forget archivo

4

Page 126: Curso SMTP avanzado

Irontec – Curso SMTP

126

Aprendizaje

– Los correos entrantes están en formato mbox.sa-learn –-mbox

– Muestra el contenido de las BD bayesianas.sa-learn –-dump [all|data|magic]

4

Page 127: Curso SMTP avanzado

Irontec – Curso SMTP

127

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 128: Curso SMTP avanzado

Irontec – Curso SMTP

128

Spam

● Amavis

Page 129: Curso SMTP avanzado

Irontec – Curso SMTP

129

Spam

● MailScanner

Page 130: Curso SMTP avanzado

Irontec – Curso SMTP

130

Squirrelmail

SquirrelMail(Web Mail)

http://www.squirrelmail.org

8

Page 131: Curso SMTP avanzado

Irontec – Curso SMTP

131

Características

● Es un software que permite leer el correo mediante un navegador web.

● Utiliza los protocolos IMAP y SMTP embebidos.● Dispone de una gran variedad de plugins.● No requiere de Javascript.● No requiere de MySQL.● Cliente de correo altamente estable.● Muy sencillo de configurar e instalar. Script PERL.● Soporte multi-lenguage.● Escrito en HTML y PHP. Estándares.

8

Page 132: Curso SMTP avanzado

Irontec – Curso SMTP

132

Opciones Básicas

● La interfaz web dispone de los siguientes menús:– Componer

● Redactar y enviar mensajes con adjuntos

– Direcciones● Libreta de direcciones.

– Carpetas● Permite manipular las carpetas

– Opciones● Ajustar las opciones de Squirrelmail

– Buscar● Realizar un filtrado de los correos en base a un

patron.

8

Page 133: Curso SMTP avanzado

Irontec – Curso SMTP

133

Instalación

● Instalamos el webmail# apt-get install squirrelmail squirrelmail-locales

● Squirrelmail necesita un servidor web con soporte para php4

# apt-get install apache2 php5 libapache2-mod-php5

8

Page 134: Curso SMTP avanzado

Irontec – Curso SMTP

134

Archivos de Configuración

● Incluimos las directivas para integrarlo con apache.– Insertamos la siguiente línea en el archivo httpd.conf de apache:

● httpd.conf [ Debian: /etc/apache2/httpd.conf]

Include /etc/squirrelmail/apache.conf

8

Page 135: Curso SMTP avanzado

Irontec – Curso SMTP

135

Archivos de Configuración

# /usr/sbin/squirrelmail­configure

SquirrelMail Configuration : Read: config.php (1.4.0)­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­Main Menu ­­1.  Organization Preferences2.  Server Settings3.  Folder Defaults4.  General Options5.  Themes6.  Address Books7.  Message of the Day (MOTD)8.  Plugins9.  Database10. Languages

D.  Set pre­defined settings for specific IMAP servers

C   Turn color onS   Save dataQ   Quit

Command >>

8

Page 136: Curso SMTP avanzado

Irontec – Curso SMTP

136

Archivos de Configuración – Courier IMAP

● Configuramos squirrelmail para integrarlo con courier-imap– Main Menu

● Server Settings– Update IMAP Settings

8. Server software : courier

8

Page 137: Curso SMTP avanzado

Irontec – Curso SMTP

137

Plugins

● A fecha de hoy hay 223 plugins disponibles agrupados en 14 categorías.

● Disponibles en:– http://www.squirrelmail.org/plugins.php

● Descargar y descomprimir en:/usr/share/squirrelmail/plugins

8

Page 138: Curso SMTP avanzado

Irontec – Curso SMTP

138

Plugins

● A destacar:– View As HTML

● Permite ver un email como HTML o como texto plano

– Autocomplete● Busca en la agenda para autocompletar el destinatario

– Calendars● Creación de calendarios publicos o limitados.

– Dictionary● Comprueba la ortografía del texto redactado.

– GPG● Soporte para firmas/cifrado GPG

8

Page 139: Curso SMTP avanzado

Irontec – Curso SMTP

139

Mail2FAX

● Es posible enviar un Fax mediante correo electrónico.

● Solo son necesarias dos herramientas, Postfix + Hylafax.

● Una vez hecho, podremos envíar fax con solo redactar un correo para:

[email protected]

Page 140: Curso SMTP avanzado

Irontec – Curso SMTP

140

Mail2Fax

● Lo instalamos fácilmente con apt:

# apt-get install hylafax-server

● Tras la instalación ejecutamos el siguiente comando y configuramos los parámetros generales.

# faxsetup

● Si queremos añadir otro módem al sistema, ejecutamos:

# faxaddmodem

Page 141: Curso SMTP avanzado

Irontec – Curso SMTP

141

Mail2Fax

● Ahora nos toca configurar Postfix:    /etc/postfix/master.cf:

        fax       unix  ­       n       n       ­       1       pipe

            flags= user=fax argv=/usr/bin/faxmail ­d ­n ${user}

    /etc/postfix/transport:

        fax.your.domain   fax:localhost

    /etc/postfix/main.cf:

        transport_maps = hash:/etc/postfix/transport

        fax_destination_recipient_limit = 1

Page 142: Curso SMTP avanzado

Irontec – Curso SMTP

142

Monitorización

Monitorización

Page 143: Curso SMTP avanzado

Irontec – Curso SMTP

143

MyTOP

● El TOP de MySQL :-)

Page 144: Curso SMTP avanzado

Irontec – Curso SMTP

144

Mailgraph

Page 145: Curso SMTP avanzado

Irontec – Curso SMTP

145

Queuegraph

Page 146: Curso SMTP avanzado

Irontec – Curso SMTP

146

Couriergraph

Page 147: Curso SMTP avanzado

Irontec – Curso SMTP

147

Bindgraph

Page 148: Curso SMTP avanzado

Irontec – Curso SMTP

148

Mailwatch

Page 149: Curso SMTP avanzado

Irontec – Curso SMTP

149

Se acabó

[email protected]

miguel2angel

http://miguelangelnieto.net

Page 150: Curso SMTP avanzado

Irontec – Curso SMTP

150

Licencia CopyleftEste documento está protegido bajo la licencia Attribution-ShareAlike 2.0 de Creative Commons (http://creativecommons.org/licenses/by-sa/2.0/)

2010 Miguel Angel Nieto <[email protected]>

2004 Iker Sagasti Markina <[email protected]>

Se permite la copia, modificación, distribución, uso comercial y realización de la obra, siempre y cuando se reconozca la autoría de la misma, a no sea ser que se obtenga permiso expreso del autor. El autor permite distribuir obras derivadas a esta sólo si mantienen la misma licencia que esta obra.

Esta nota no es la licencia completa de la obra, sino una traducción de la nota orientativa de la licencia original completa (jurídicamente válida).

X