Introducción a Postfix Curso de Introducción al Software Libre para Alumnos Administración avanzada Adrián Santos Marrero 1 de diciembre de 2007
Qué es? Es un MTA (Mail Transfer Agent) Transporta correo Implementa el protocolo SMTP (Simple Mail Transfer Protocol)
Qué NO es? No es un MDA (Mail Delivery Agent) Ejemplos que sí lo son: Procmail, Maildrop,... No es un MUA (Mail User Agent) Ejemplos que sí lo son: Thunderbird, Pine, Mutt,... No es un servidor IMAP, POP,... Ejemplos que sí lo son: Courier, Cyrus, Dovecot,...
Características Modular (al contrario que Sendmail por ejemplo) Seguro Robusto Escalable Altamente configurable... y además de manera sencilla... Buena documentación
Modular Cada componente está implementada en un proceso distinto Se pueden activar/desactivar a placer
Seguridad Procesos independientes en vez de uno solo monoĺıtico Se ejecutan con el menor nivel de privilegios posibles Se analiza cualquier texto que se envíe a una shell (escapando caracteres extraños) No existe un árbol de procesos: Sin herencia de descriptores de archivos Sin memoria compartida Sin señales...
Seguridad (II) La mayoría de los procesos trabajan dentro de un chroot Se tienen especial cuidado en no usar buffers de memoria de tamaño fijo (por precaución ante ataques de Buffer Overflow) Control de uso de recursos: Si detecta que algún recurso de la máquina (CPU, memoria, espacio en disco,... ) se está agotando no empeora el problema. Se desactiva el mismo
Robustez La caída de uno de los procesos no afecta al resto del sistema Escalable La cadena de trabajo de Postfix se puede dividir en varias máquinas. Por ejemplo, se puede poner una máquina realizando todo el trabajo de filtrado y otra que expanda alias, entrego el correo en los mailbox,... Se puede repartir el trabajo entre varias máquinas Código eficiente
Ejercicio 1 apt-get install postfix mail root Acabar el correo con CTRL + D mail
Arquitectura Lo mejor es leer la documentación: En la red O en local
Otras herramientas A parte de demonios, Postfix instala otros tipos de comandos postconf: Permite consultar y modificar la configuración de Postfix postsuper: Herramienta administrativa para la gestión de colas y correos qshape: Permite conocer el estado de las colas de una manera amigable mailq y sendmail: Aplicaciones de compatibilidad con Sendmail Mailq devuelve el estado de la cola en una lista y sendmail se comporta como lo hacía la versión original (manda correos, etc.)
Otras herramientas (II) postcat: Imprime el contenido de un correo. Postfix los almacena en un formato que puede ocasionar problemas a los editores de texto tradicionales newaliases, postmap, postalias,... : Aplicaciones necesarias a la hora de trabajar con la configuración de Postix. Normalmente compilan archivos que hemos escrito a algo entendible por Postfix.
Clases de direcciones Postfix usa el concepto Clases de direcciones Las principales son: Correo local Cuentas de usuario del propio sistema Mailbox virtuales No son cuentas shell en la máquina pero eres el destinatario final del envío Alias virtuales Estas direcciones siempre se redirigen. No se entregará nada aunque puede que vuelva a entrar el correo en Postfix Relay Eres un nodo de reenvío de correo. Aceptas correo que no viene para ti con el objetivo de reenviarlo. Normalmente se colocan estas máquinas en fronteras de redes
Ejercicio 2 Configurar Postfix para que acepte correos a dominios virtuales Usar como base el main.cf documentado
Filtrado Las características de filtrado de Postfix son muy completas Permite una granularidad muy fina en cuanto a los filtros Básicamente hay dos grandes familias de filtros: Los que se ejecutan durante la comunicación SMTP Los que procesan el correo en etapas posteriores Los primeros notifican al cliente el resultado del comando mediante códigos numéricos: 2XX Todo correcto 3XX Es necesaria información adicional 4XX Error temporal 5XX Error definitivo Los últimos normalmente acaban generando un bounce
lagoon@acerito:~$ telnet alt2.gmail-smtp-in.l.google.com 25 Trying 66.249.83.114... Connected to alt2.gmail-smtp-in.l.google.com. Escape character is ^]. 220 mx.google.com ESMTP i15si5148504wxd helo prueba 250 mx.google.com at your service mail from: <adrian@osl.ull.es> 250 2.1.0 OK rcpt to: <xxxxxxx@gmail.com> 250 2.1.5 OK data 354 Go ahead From: <adrian@osl.ull.es> Subject: Prueba Prueba. 250 2.0.0 OK 1196358878 i15si5148504wxd quit 221 2.0.0 mx.google.com closing connection i15si5148504wxd Connection closed by foreign host.
Protocolo SMTP y filtros Postfix Para cada uno de los comandos enviados por el cliente se puede configurar una lista de comprobaciones Ver el segundo ejemplo de configuración
Filtros externos A parte de estas comprobaciones en la comunicación SMTP, Postfix puede invocar otros comandos que analizen/filtren el correo Existen varias configuraciones descritas en la ayuda de Postfix: Filtros que se aplican después de almacenar los correos en las colas Filtros que se aplican antes de almacenar los correos en las colas
Conclusiones Si te has quedado con ganas de saber más: http://www.postfix.org/documentation.html Libros Pregúntanos
Realmente funciona
Realmente funciona (II)
Qué se nos ha quedado en el tintero? Un montón de cosas... Ver los detalles, por supuesto Integración con otros paquetes SpamAssassin Amavis-ng ClamAV MIMEDefang Procmail Mailman...
Expresiones regulares, header checks y body checks Archivos master.cf transport maps Diferencias entre Mbox y Maildir Archivo.forward Fast flush TLS y SSL SASL Integración con LDAP, MySQL, PostgreSQL,...