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

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 [email protected]$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:

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í:

Luego en la consola ejecutamos los comando siguientes para agregar la cuenta del archivo  de piler a zimbra.

2-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/transportfile
dentro agregamos:

[email protected] :[piler.dominio.cu]
Donde [email protected]piler.dominio.cu es el correo que definimos para zimbra como always_bcc y le decimos que lo entregue al dominio receptor piler.dominio.cu
Una vez hecho esto utilizamos el comando postmap, para que el fichero sea legible por el sistema de correo:
postmap /opt/zimbra/common/conf/transportfile
Añadimos a la tabla Transport del dominio zimbra y el fichero transportfile creado anteriormente.
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 restart
3- 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_url
Tendremos una salida como esta:
[email protected]:/root$ zmlocalconfig -s zimbra_ldap_password ldap_master_url
zimbra_ldap_password = XXXXXXX
ldap_master_url = ldap://mail.dominio.cu:389
Ahora 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.php
Buscamos dentro esta parte:

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:

Recargamos el piler

/etc/init.d/rc.piler reload
Ahora 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[email protected]:~# /usr/local/libexec/piler/pilerpurge.py -v -d -c /usr/local/etc/piler/piler.conf
Purged 0 messages, 0 files, 0/0 bytes
A medida que vaya descubriendo nuevas funcionalidades edito el tutorial.
alex out

(Visited 614 times, 1 visits today)
Sobre Alexander Rivas Alpizar 27 Artículos
Administrador de Redes de EMPRESTUR Cienfuegos

13 Comentarios

  1. Esto debe funcionar bien en iredmail, ya lo comprobare después.

    /etc/postfix/main.cf:

    smtpd_recipient_restrictions = reject_non_fqdn_recipient, …, \
    check_recipient_access pcre:$config_directory/x-add-envelope-to, …

    always_bcc = [email protected]

    /etc/postfix/x-add-envelope-to:

    /(.*)/ prepend X-Envelope-To: $1

  2. Buenas tardes, amigo he seguido su tutorial, y en los logs como ve:
    Oct 4 13:45:10 ZMail postfix/smtp[6576]: E813A1838E5: to=, relay=127.0.0.1[127.0.0.1]:10032, delay=12, delays=0.05/0/0/12, dsn=2.0.0, status=sent (250 2.0.0 from MTA(smtp:[127.0.0.1]:10025): 250 2.0.0 Ok: queued as 6E1AF18397F)

    se envia, pero nunca llega a mi server de pilerm. pudiera ayudarme con esto? darme algunas ideas sobre la posible causa.

  3. El piler demora por defecto unos 30 mints en indexar los mensajes que le llegan, espera un rato y revisa. Si despues de un tiempo prudencial no te los indexa, postea por aqui el log del piler a ver donde esta tu error.

  4. Esto es lo que sale, siempre, en el mail.log

    Nov 5 00:05:01 piler piler: INDEXER INFO: indexing delta1 started
    Nov 5 00:05:01 piler piler: INDEXER INFO: indexing delta1 finished
    Nov 5 00:05:06 piler piler: INDEXER INFO: merging delta to dailydelta started
    Nov 5 00:05:06 piler piler: INDEXER INFO: merging delta to dailydelta finished
    **************************
    Nov 5 09:05:06 piler piler: INDEXER INFO: merging delta to dailydelta started
    Nov 5 09:05:07 piler piler: INDEXER INFO: merging delta to dailydelta finished
    Nov 5 09:15:01 piler piler: INDEXER INFO: indexing att1 started
    Nov 5 09:15:01 piler piler: INDEXER INFO: indexing att1 finished
    Nov 5 09:19:33 piler piler-webui[480]: [email protected], event=’logged in’, ipaddr=10.176.0.99
    Nov 5 09:19:34 piler piler[631]: connection from 10.176.0.13
    Nov 5 09:24:33 piler piler[628]: connection from 10.176.0.13
    Nov 5 09:29:34 piler piler[632]: connection from 10.176.0.13
    Nov 5 09:34:34 piler piler[633]: connection from 10.176.0.13
    Nov 5 09:35:01 piler piler: INDEXER INFO: indexing delta1 started
    Nov 5 09:35:01 piler piler: INDEXER INFO: indexing delta1 finished
    Nov 5 09:35:06 piler piler: INDEXER INFO: merging delta to dailydelta started
    Nov 5 09:35:06 piler piler: INDEXER INFO: merging delta to dailydelta finished
    Nov 5 09:39:34 piler piler[627]: connection from 10.176.0.13
    Nov 5 09:40:24 piler piler[634]: connection from 10.176.0.13
    Nov 5 09:40:33 piler piler[626]: connection from 10.176.0.13
    Nov 5 09:45:01 piler piler: INDEXER INFO: indexing att1 started
    Nov 5 09:45:01 piler piler: INDEXER INFO: indexing att1 finished
    Nov 5 09:45:33 piler piler[625]: connection from 10.176.0.13
    Nov 5 09:45:45 piler piler[630]: connection from 10.176.0.13
    Nov 5 09:50:45 piler piler[629]: connection from 10.176.0.13

    segui siempre las opciones a) de la guia, el log de zimbra es este:

    Nov 5 09:39:32 ZMail postfix/smtp[15839]: 31F76183749: to=, relay=127.0.0.1[127.0.0.1]:10024, delay=32, delays=0.15/0/0.01/31, dsn=2.0.0, status=sent (250 2.0.0 from MTA(smtp:[127.0.0.1]:10025): 250 2.0.0 Ok: queued as AA45A18398B)
    en la web del piler vemos:

    Estado de SMTP:
    piler: OK
    smarthost: OK

    con ngrep -X -e port 25 and host 10.176.0.3 vemos:
    interface: ens33 (10.176.0.0/255.255.255.0)
    filter: (ip or ip6) and ( port 25 and host 10.176.0.3 )
    #
    T 10.176.0.13:37130 -> 10.176.0.3:25 [S]
    #
    T 10.176.0.3:25 -> 10.176.0.13:37130 [AS]
    #
    T 10.176.0.13:37130 -> 10.176.0.3:25 [A]
    #
    T 10.176.0.3:25 -> 10.176.0.13:37130 [AP]
    220-zmail.desoft.cu ESMTP Postfix..
    #
    T 10.176.0.13:37130 -> 10.176.0.3:25 [A]
    #
    T 10.176.0.13:37130 -> 10.176.0.3:25 [AP]
    QUIT..
    #
    T 10.176.0.13:37130 -> 10.176.0.3:25 [AF]
    #
    T 10.176.0.3:25 -> 10.176.0.13:37130 [A]
    #
    T 10.176.0.3:25 -> 10.176.0.13:37130 [AP]
    220 zmail.desoft.cu ESMTP Postfix..
    #
    T 10.176.0.13:37130 -> 10.176.0.3:25 [R]
    exit
    15 received, 0 dropped
    10.176.0.13 es el ip (cambiado x supuesto) del piler y el 10.176.0.3 es el de mi zimbra 8.7

    me fije que en la guia de jorge hay un + en vez de un * aqui: /(.*)/ prepend X-Envelope-To: $1. hice el cambio y sin resultados. me demore pq estaba corriendo varias pruebas (DNS, FIREWALLs etc) pero nada, todo esta bien.

  5. Alexander en la parte de integrar el piler con el servidor samba4-ldap (en mi caso externo) sería lo mismo? pues tengo esa dudilla, yo tengo la sincronización a mi samba4 por ssl 3269 y halo los usuarios con un script bash que me sincroniza automáticamente entre los 2 servers cada x tiempo…cuando pongo la parte de: “Crear un fichero transporte” esto sería igual para un ldap externo pues me da error al final en el envio de los correos dentro de mi propio dominio…como si se perdiese por estas lineas 1.1 y la opción 1.2 me dice cuando la ejecuto:

    zmprov ma [email protected] +zimbraMailTransport smtp:piler.dominio.cu:25
    ERROR: account.NO_SUCH_ACCOUNT (no such account: [email protected])

    quisiera alguna sugerencia para arreglar esto…

    saludos

    • estas usando el comando literalmente como lo puse y no es asi..deben interpretar las cosas..yo no puedo adivinar q nombre de server uds le pondran a su mailpiler…por lo q uso uno generico…como piler.dominio.cu
      en tu caso el comando seria:
      zmprov ma [email protected] +zimbraMailTransport smtp:piler.cmg.hidro.cu:25
      Debes usar tus datos, no usar mi ejemplo…los tutoriales se hacen siempre con ejemplos q debes extrapolar a tu entorno
      alex out

  6. Buenas Alexander,
    Excelente post, si me pudieras ayudar, estoy teniendo inconvenientes al momento de querer direccionar todos los correos a la cuenta del servidor Piler
    Todos mis correos van a un relay host superior, por lo cual debo configurar un mapa de transporte como indicas en el tutorial Pero al momento de ejecutar el comando:
    zmprov ma [email protected] +zimbraMailTransport smtp:piler.test.com
    Tengo el siguiente error.
    ERROR: acount.NO_SUCH_ACCOUNT(no such account: [email protected])
    Esta cuenta existe en el servidor Piler

    Desde ya muchas gracias
    Saludos

  7. Respuesta para todos la cuenta archive si existe en piler. Puede que muchos no entendieran que queria decir con [email protected]
    piler.dominio.cu es el nombre DNS del servidor de piler que uds crearon. Yo solo invente un nombre uds deben usar el real de uds.OJO yo puse 2 metodos de hacer lo mismo no es hagan los 2 seguidos…si usan el 1ero ya no necesitan hacer el corto

  8. Tengo instalado y configurado el piler para almacenar los mensajes de mi servidor zimbra, pero la autenticación por el ldap no me funciona, he configurado cada cosa como explicas y aún así no me funciona.
    Solo hay que editar estas líneas?? :

    $config[‘ENABLE_LDAP_AUTH’] = 1;
    $config[‘LDAP_HOST’] = ‘zmld01.zimbra.io’; ———:}> mi servidor zimbra
    $config[‘LDAP_HELPER_PASSWORD’] = ‘XXXXXX’;————>la contraseña obtenida con el comando mencionado al principio del artículo.

    Saludos

Dejar una contestacion

Tu dirección de correo electrónico no será publicada.


*