Volver al blog

Integracion de Piler a un Servidor de correo y configuracion a fondo (2da Parte)

logo

Bueno en mi primer tutorial les mostraba como instalar Piler desde cero. En este, les mostraré como archivar los correos de un servidor de postfix o exim. Además de mostrarles como configurar Piler para obtener más funcionalidades.

1- Configuración del servidor de correo

Una vez configurado Piler, es necesario indicarle al servidor de correo que envíe los mensajes de correos hacia Piler. Veremos cómo hacerlo desde un server con postfix y otro con exim.

1.1- Exim

En este caso existen dos variantes:
a) System Filter

Agregar un filtro que envíe una copia de todos los correos entrantes y salientes a [email protected], por ejemplo:

unseen deliver [email protected] errors_to [email protected]
b)
Mediante Routers

En la sección de Routers antes del primero (debajo de "begin routers") agregar:

mailarchive: debug_print = "R: mailarchive for $local_part@$domain" driver = manualroute domains = * transport = remote_smtp # piler listening on port 25: route_list = * "piler.dominio.cu::25" self = send unseen
1.2-
Postfix (Zimbra 8.7.x y superior) con 2 métodos muy similares:

Primero crearemos el archivo postfix_x-add-envelope-to

nano /opt/zimbra/conf/postfix_x-add-envelope-to
y donde colocaremos dentro el contenido siguiente:

/(.+)/          PREPEND X-Envelope-To: $1
Salvamos. Ctrl+X

a) Editaremos el siguiente fichero:

nano /opt/zimbra/conf/zmconfigd/smtpd_recipient_restrictions.cf
Y añadir la siguiente línea casi al principio del todo, debe quedaros así:
%%contains VAR:zimbraMtaRestriction check_client_access lmdb:/opt/zimbra/conf/postfix_blacklist%%
%%contains VAR:zimbraServiceEnabled cbpolicyd^ check_policy_service inet:localhost:%%zimbraCBPolicydBindPort%%
check_recipient_access pcre:/opt/zimbra/conf/postfix_x-add-envelope-to   <------- Añadir esta línea
reject_non_fqdn_recipientLuego en la consola ejecutamos los comando siguientes para agregar la cuenta del archivo  de piler a zimbra.# zmlocalconfig -e [email protected]
# postconf -e [email protected]
# zmmtactl restart2-Después de reiniciado ya veremos en nuestros logs como se envía una copia de todo el tráfico de coreo tanto entrante como saliente a nuestro piler. Pero ahora complicare más la situación.Que pasaría si nuestro correo depende de un MTA de entrega porque estamos en una red privada?? Muchos de nosotros estamos en redes corporativas nacionales y nuestros servidores entregan los correos electrónicos a un relay o smarthost superior, por lo que si usamos la opción de copia de carbón para entregar nuestros correos a piler no nos funcionara. Debido a que piler no existe en el dominio  local en Zimbra se lo manda al smarthost y este a su vez lo rechaza. Como podemos resolver este dilema?Bueno usaremos un mapa de transporte para permitir que nuestro postfix pueda enviar a dominios diferentes sin que salgan por el smarthost. La función Transport permite encaminar los mensajes a dominios adicionales de acuerdo con el mapa definido. Les muestro 2 formas. Destacaré que este tuto es para zimbra 8.7 y superior así los caminos que muestro coincidirán.a)Crear un fichero transporte para el receptor de dominio que sería el retransmisor.nano /opt/zimbra/common/conf/transportfiledentro agregamos:[email protected] :[piler.dominio.cu]Donde [email protected] es el correo que definimos para zimbra como always_bcc y le decimos que lo entregue al dominio receptor piler.dominio.cuUna vez hecho esto utilizamos el comando postmap, para que el fichero sea legible por el sistema de correo:postmap /opt/zimbra/common/conf/transportfileAñadimos a la tabla Transport del dominio zimbra y el fichero transportfile creado anteriormente. # zmprov ms mail.dominio.cu zimbraMtaTransportMaps "lmdb:/opt/zimbra/common/conf/transportfile,proxy:ldap:/opt/zimbra/conf/ldap-transport.cf"Donde mail.dominio.cu es nombre de nuestro servidor zimbra que podemos sustituir por el comando `zmhostname` , entre comillas simples invertidas  para que se ejecute dentro de la instrucción anterior.
Ahora reiniciamos el mta postfix de zimbra:zmmtactl restart3- Ahora les mostrare como conectarlo con el LDAP de Zimbra para que los usuarios accedan a sus correos archivados. Primeramente averiguaremos la clave del usuario que zimbra utiliza para conectarse al ldap. Usaremos el siguiente comando:zmlocalconfig -s zimbra_ldap_password ldap_master_urlTendremos una salida como esta: zimbra@mail:/root$ zmlocalconfig -s zimbra_ldap_password ldap_master_url zimbra_ldap_password = XXXXXXX ldap_master_url = ldap://mail.dominio.cu:389Ahora abriremos el fichero config.php del piler para extraer de ahí las configuraciones necesarias para que nuestro piler se conecte al LDAP.nano /var/www/piler/config.phpBuscamos dentro esta parte:// authentication against an ldap directory (disabled by default)

$config['ENABLE_LDAP_AUTH'] = 0;
$config['LDAP_HOST'] = 'ldap.yourdomain.com';
$config['LDAP_HELPER_DN'] = 'cn=....';
$config['LDAP_HELPER_PASSWORD'] = 'xxxxxxx';
$config['LDAP_MAIL_ATTR'] = 'mail';
$config['LDAP_AUDITOR_MEMBER_DN'] = '';
$config['LDAP_ADMIN_MEMBER_DN'] = '';
$config['LDAP_BASE_DN'] = '';

// AD specific settings
//
$config['LDAP_ACCOUNT_OBJECTCLASS'] = 'user';
$config['LDAP_DISTRIBUTIONLIST_OBJECTCLASS'] = 'group';
$config['LDAP_DISTRIBUTIONLIST_ATTR'] = 'member';
$config['LDAP_MAIL_ATTR'] = 'proxyAddresses';

// zimbra specific settings
//$config['LDAP_HELPER_DN'] = 'uid=zimbra,cn=admins,cn=zimbra';
//$config['LDAP_ACCOUNT_OBJECTCLASS'] = 'zimbraAccount';
//$config['LDAP_DISTRIBUTIONLIST_OBJECTCLASS'] = 'zimbraDistributionList';
//$config['LDAP_DISTRIBUTIONLIST_ATTR'] = 'zimbraMailForwardingAddress';
//$config['LDAP_MAIL_ATTR'] = 'mail';Copiamos todo este contenido en nuestro config-site.php

nano  /var/www/piler/config-site.php
Descomentamos la parte de zimbra y ponemos a los 3 bloques nuestra configuración:
// authentication against an ldap directory (disabled by default)

$config['ENABLE_LDAP_AUTH'] = 1; --------------- Activar con 1
$config['LDAP_HOST'] = 'mail.dominio.cu'; -------Poner nuestro server de correo
$config['LDAP_HELPER_DN'] = 'cn=....';
$config['LDAP_HELPER_PASSWORD'] = 'XXXXX'; -----Poner la clave que averiguamos anteriormente
$config['LDAP_MAIL_ATTR'] = 'mail';
$config['LDAP_AUDITOR_MEMBER_DN'] = '';
$config['LDAP_ADMIN_MEMBER_DN'] = '';
$config['LDAP_BASE_DN'] = '';

// AD specific settings
//
$config['LDAP_ACCOUNT_OBJECTCLASS'] = 'user';
$config['LDAP_DISTRIBUTIONLIST_OBJECTCLASS'] = 'group';
$config['LDAP_DISTRIBUTIONLIST_ATTR'] = 'member';
$config['LDAP_MAIL_ATTR'] = 'proxyAddresses';

// zimbra specific settings
$config['LDAP_HELPER_DN'] = 'uid=zimbra,cn=admins,cn=zimbra';
$config['LDAP_ACCOUNT_OBJECTCLASS'] = 'zimbraAccount';
$config['LDAP_DISTRIBUTIONLIST_OBJECTCLASS'] = 'zimbraDistributionList';
$config['LDAP_DISTRIBUTIONLIST_ATTR'] = 'zimbraMailForwardingAddress';
$config['LDAP_MAIL_ATTR'] = 'mail';En el caso de querer integrarlo contra el LDAP de nuestro AD y no al de zimbra.
// authentication against an ldap directory (disabled by default)
$config['ENABLE_LDAP_AUTH'] = 1;
$config['LDAP_HOST'] = 'ip del servidor ldap';
$config['LDAP_HELPER_DN'] = '[email protected]';
$config['LDAP_HELPER_PASSWORD'] = 'contraseña de [email protected]';
$config['LDAP_MAIL_ATTR'] = 'userPrincipalName';
$config['LDAP_BASE_DN'] = 'OU=example,DC=dominio,DC=cu';
$config['LDAP_AUDITOR_MEMBER_DN'] = 'CN=auditor,OU=example,DC=dominio,DC=cu';
$config['LDAP_ADMIN_MEMBER_DN'] = 'CN=admin,OU=example,DC=dominio,DC=cu';
// AD specific settings
//
$config['LDAP_ACCOUNT_OBJECTCLASS'] = 'user';
$config['LDAP_DISTRIBUTIONLIST_OBJECTCLASS'] = 'group';
$config['LDAP_DISTRIBUTIONLIST_ATTR'] = 'member';
$config['ENABLE_AUDIT'] = 1;Recargamos el piler
/etc/init.d/rc.piler reloadAhora nuestros usuarios podrán entrar usando su clave de correo y podrán ver todos los correos que han enviado y recibidos. 4- Otras Configuraciones importantes. Revisando el /var/www/piler/config.php nos encontraremos con otras configuraciones interesantes aquí les muestro algunas:$config['ENABLE_SYSLOG'] = 1;   (Habilitamos los logs de piler como software)$config['TIMEZONE'] = 'America/Havana';   (Configuramos nuestra zona horaria. Nota: Esto es en la web, en el CT usaremos dpkg-reconfigure tzdata )$config['DEFAULT_LANG'] = 'es';     (Configuramos el idioma de la Web GUI)$config['MIN_PREFIX_LEN'] = 3;    (Reducimos la cantidad de caracteres para la búsqueda con wildcard)$config['RELOAD_COMMAND'] = '/etc/init.d/rc.piler reload';  (Si configuramos en la web Reglas de archivado debemos poner esta configuración que hara que el piler recargue las reglas de nuevo)Revisen el fichero config.php hay muchas más posibilidades como poner un logo, cambiar el tema y muchas cosas más. Ya eso lo dejo a gusto de ustedes.
5- Comandos útiles de Piler

5.1- Importar mensajes de correo

a) pilerimport -e <eml file> -m <mbox file> -d <directory>
Permite importar correos .eml desde un archivo mbox o desde un directorio (ej: Maildir)

b) pilerimport -i <imap server> -u <username> -p <password> [-x comma,separated,skiplist]
Permite importar correos desde un servidor IMAP

c) pilerimport -K pop3.yourdomain.com -u jack -p password
Permite importar correos desde un servidor POP3

5.2- Exportar correos

La herramienta 'pilerexport' permite exportar mensajes archivados a .eml. Dicha herramienta corre bajo los permisos del usuario 'piler' por lo que hay que moverse hacia un directorio donde el dicho usuario tenga permisos de escritura.

a) Exportar todos los correos > 10 KB de Diciembre:

# pilerexport -s 10000 --start-date 2014.12.01 --stop-date 2014.12.31
b)
Exportar todos los correos con tamaño entre 100 KB y 2 MB, y (_AND_) los remitentes pueden ser [email protected],[email protected],[email protected] y (_AND_) el destinatario es [email protected]:

# pilerexport -s 100000 -S 2000000 -f [email protected] -f [email protected] -f [email protected] -r [email protected]
c)
Hacer un "backup" diario al directorio actual:

# pilerexport --start-date 2012.01.30 --stop-date 2012.01.30
5.3-
Eliminar correos antiguos

Borrar correos antiguos no es una obligación, pero es posible hacer mediante la herramienta 'pilerpurge.py':

Primero editaremos nuestro piler.conf
nano /usr/local/etc/piler/piler.conf
Agregamos esto:

queuedir=/var/piler/store
Para borrar los mensajes antiguos:

/usr/local/libexec/piler/pilerpurge.py -v -d -c /usr/local/etc/piler/piler.conf
 Veremos una salida como esta:root@mailpiler:~# /usr/local/libexec/piler/pilerpurge.py -v -d -c /usr/local/etc/piler/piler.confPurged 0 messages, 0 files, 0/0 bytesA medida que vaya descubriendo nuevas funcionalidades edito el tutorial.alex out

Suscríbete · Newsletter

Mantente al día, cada semana

Artículos prácticos sobre Linux, redes, seguridad, virtualización y la nube — escritos por sysadmins cubanos.

  • Guías y tutoriales de administración de sistemas
  • Nuevos artículos sobre servidores, redes y nube
  • Sin spam, cancela cuando quieras

Respetamos tu bandeja de entrada. Cancela con un clic.

Patrocinado por SYSCU

¿Tu infraestructura en la nube te cuesta de más?

SYSCU optimiza tu nube de punta a punta — FinOps, DevOps & CI/CD, migraciones a AWS, seguridad y observabilidad. Equipo 100 % senior que reduce tu factura hasta un 40 % y acelera tus despliegues en semanas.

Nuevo · BetaSYSCU Atlas Insight — la plataforma FinOps que convierte tu gasto AWS en decisiones: visibilidad multi-cuenta, recomendaciones automáticas y alertas de anomalías.

No comments yet