¡Esta es una revisión vieja del documento!
211.2 Managing E-Mail Delivery
Pertenece a Topic 211: E-Mail Services
- Weight: 2
- Description: Candidates should be able to implement client e-mail management software to filter, sort and monitor incoming user e-mail.
- Key Knowledge Areas:
- Understanding of Sieve functionality, syntax and operators
- Use Sieve to filter and sort mail with respect to sender, recipient(s), headers and size
- Awareness of procmail
- Terms and Utilities:
- Conditions and comparison operators
- keep, fileinto, redirect, reject, discard, stop
- Dovecot vacation extension
Para un MTA, otro objetivo principal es el de recibir correos con destino los usuarios de su dominio de correo. No hay nada pensado para la entrega del correo a los usuarios.
La solución común es usar un MDA (Mail Delivery Agent) para que los mensajes puedan recibirse desde un MUA (Mail User Agent), llamado comúnmente cliente de correo.
Una vez que un mensaje ha sido recibido por un MTA, se tiene que almacenar a la espera de la recepción por parte de un usuario.
Tradicionalmente existen dos formatos principales que permiten conservar estos mensajes de forma estructurada:
- mbox: todos los mensajes recibidos por un usuario se concatenan y se guardan en un único fichero (por ejemplo,
/var/spool/mail/pepito). - maildir: Utiliza una estructura de directorios para almacenar los correos recibidos para un usuario:
tmp: directorio al que llegan inicialmente.new: directorio al que pasan hasta que son leídos (bandeja de entrada).cur: directorio donde se almacenan después de ser leídos.
Recordamos que los correos se almacenan en el sistema en la ruta /var/spool/mail o /var/mail.
Por defecto, postfix utiliza el formato mbox para almacenar los correos recibidos por los usuarios. Se puede cambiar añadiendo la siguiente directiva al fichero main.cf:
home_mailbox = Maildir/
Procmail
Es una utilidad de filtrado de correo entrante que se puede utilizar para el preprocesado y clasificación de dichos correos.
Esta utilidad está en desuso.
Los ficheros de configuración de Procmail son:
/etc/procmailrc(no es recomendable usarlo)~/.procmailrc
Tienen el siguiente formato:
:0 <flags> <condición> <acción>
:0: Señal que marca el comienzo de una regla de preprocesado.flags:H: búsqueda solo en cabeceraB: búsqueda solo en el cuerpo del mensaje.f: modificación del mensaje original.c: clonado del mensaje original.
condición: expresión regular que aisla los correos.acción: acción a tomar a los correos que cumplan la condición anterior.
Ejemplo:
:0 * ^From.*toto amigos/toto
El filtro anterior mueve el correo entrante de toto al directorio amigos/toto
211.2: Administrando Entrega de Correo Local (2) Sieve Es un lenguaje de script que se utiliza para preprocesar y listar los mensajes entrantes. Se utiliza en lugar de Procmail Necesita funcionar con un LDA (local delivery agent) como por ejemplo Dovecot Para que Sieve funcione con Dovecot tendremos que editar la configuracion de Dovecot (se verá en el siguiente tema) Sieve se basa en reglas que nos permitirán gestionar el correo 211.2: Administrando Entrega de Correo Local (2) Sieve: sintaxis La sintaxis de Sieve consiste en 4 partes básicas: los comandos de Control, Test y Acción y los requires Los “requires” cargan extensiones de Sieve que proporcionan determinadas funcionalidades Ej. require “vaca?on”; → carga la extensión “vaca?on” 211.2: Administrando Entrega de Correo Local (2) Sieve: sintaxis Comandos de control Los comandos de control se encargan de gestionar el flujo de la regla If Else Elsif Deben evaluar el contenido de un comando Test. Si se evalua como válido, se ejecuta la acción asociada. Utiliza los siguientes argumentos:
:contains :over :is :under :matches
211.2: Administrando Entrega de Correo Local (2) Sieve: sintaxis Comandos de test Los comandos de test se encargan de hacer una comprobación
address: comprueba una direcciónallof: es un AND. Comprueba que se evaluen todas las condicionesanyof: es un OR. Comprueba que se evalue cualquiera de las condsexists: comprueba si una cabecera da determinado mensajetrue: simplemente devuelve un éxito en la comprobaciónfalse: simplemente devuelve un fallo en la comprobaciónheader: comprueba si el header cumple determinada condiciónnot: se complementa con otro test para negarlosize: sirve para especificar si un mensaje ?ene un tamaño mayor o menor del especificado
211.2: Administrando Entrega de Correo Local (2) Sieve: sintaxis Comandos de acción keep → guarda el mensaje en la ubicación por defecto Fileinto → necesita un “require”. Guarda el mensaje donde se especifique redirect → redirige el mensaje a otra dirección discard → elimina el mensaje Ejemplos:
if exists "x-virus-found" {
redirect "admin@example.com";
}
if size :over 2M {
discard;
}
211.2: Administrando Entrega de Correo Local (2) Sieve: sintaxis Ejemplos:
if allof (header :contains "from" "Bofh", header :contains "to" "abuse")
{
fileinto "spam";
}
require "fileinto";
if header :contains "from" "lottery" {
discard;
} elsif header :contains ["subject"] ["$$$"] {
discard;
} else {
fileinto "INBOX";
}
211.2: Administrando Entrega de Correo Local (2) PREGUNTA DE EXAMEN: Where is the user foo's procmail configuration stored, if home directories are stored in /home? Please enter the complete path to the file.
