Contenedor base para imagen con SpamAssassin, ClamAV, AmavisD-New para "limpiar" la chatarra del correo. En este repositorio encontrarás un contenedor Docker para montar el "Chatarrero". Estás automatizado en el Registry Hub de Docker luispa/base-chatarrero conectado con el proyecto GitHub base-chatarrero.
Tengo otro repositorio servicio-correo donde verás un ejemplo de uso. Además te recomiendo que consultes este apunte técnico sobre varios servicios en contenedores Docker para tener una visión más global de otros contenedores Docker y fuentes en GitHub y entender mejor este ejemplo.
Para usar la imagen desde el registry de docker hub
totobo ~ $ docker pull luispa/base-chatarrero
Si quieres clonar el repositorio este es el comando poder trabajar con él directamente
~ $ clone https://github.com/LuisPalacios/docker-chatarrero.git
Luego puedes crear la imagen localmente con el siguiente comando
$ docker build -t luispa/base-chatarrero ./
Utilizo varias variables para poder personalizar al "chatarrero", los primeros cuatro parámetros para indicar dónde y cual es la Base de Datos de los usuarios de correo de mi sistema. Esta base de datos la creo usando postfix.admin, de hecho en base-postfixadmin tienes un contenedor para activar tu propio servicio Web y crear dicha base de datos.
MAIL_DB_NAME: Nombre de la BD de correo (creada con postfixadmin)
MAIL_DB_USER: Usuario de dicha BD
MAIL_DB_PASS: Contraseña del usuario
MYSQL_LINK: "mysql.tld.org:33000" dónde está dicha BD MySQL
El chatarrero tiene que hablar con el servidor SMTP, así que el siguietne parámetro indica dónde se encuentra:
POSTFIX_LINK: "postfix.tld.org:10025" Enlace de retorno a Postfix
Los cuatro parámetros siguientes se usan para configurar al chatarrero en sí:
MYHOSTNAME: "tu-servidor-de-correo.tld.org"
VIRUS_ADMIN: "tusuario\@tudominio.com"
QUARANTINE_TO: "spam-cuarentena\@tudominio.com"
HAM_TO: "tu-archivo\@tudominio.com"
Por último, para indicar dónde deben mandarse el log uso la variable siguiente:
FLUENTD_LINK: "fluentd:24224" Equipo donde enviar los logs
Es importante que prepares un directorio persistente, en mi caso lo he dejado así a modo de ejemplo:
- "/Apps/data/correo/vmail:/data/vmail"
- "/Apps/data/correo/clamav:/var/lib/clamav"
Directorio persistente para configurar el Timezone. Crear el directorio /Apps/data/tz y dentro de él crear el fichero timezone. Luego montarlo con -v o con fig.yml
Montar:
"/Apps/data/tz:/config/tz"
Preparar:
$ echo "Europe/Madrid" > /config/tz/timezone
A continuación un ejemplo sobre cómo ejecutar manualmente el contenedor, útil para hacer troubleshooting. Ejecuto /bin/bash nada más entrar en el contenedor.
docker run --rm -t -i -p 22002:22 -p 10024:10024 -e FLUENTD_LINK=fluentd.tld.org:24224 -e MAIL_DB_USER=correo -e MAIL_DB_PASS=correopass -e MAIL_DB_NAME=correodb -e MYSQL_LINK="mysqlcorreo.tld.org:33000" -v /Apps/data/correo/vmail:/data/vmail -v /Apps/data/correo/clamav:/var/lib/clamav luispa/base-chatarrero /bin/bash
Una vez arrancado ejecuto supervisord para que lance los daemons, de modo que tengo el servicio activo y estoy dentro del mismo para poder hacer troubleshooting.
base-chatarrero $ docker run --rm -t -i .....
Realizo la configuración por primera vez
Configuro ficheros amavisd-new
Configuro clamd.conf
Configuro local.cf de spamassassin
Actualizo keys de spamassassin
Actualizo las firmas con freshclam
ClamAV update process started at Wed Dec 31 11:29:17 2014
main.cvd is up to date (version: 55, sigs: 2424225, f-level: 60, builder: neo)
daily.cld is up to date (version: 19860, sigs: 1299145, f-level: 63, builder: neo)
bytecode.cvd is up to date (version: 244, sigs: 44, f-level: 63, builder: dgoddard)
Configuro rsyslog.conf
Configuro supervisord.conf
Termino la primera configuración del contenedor
root@555a931b57bb:/#
root@555a931b57bb:/#
root@555a931b57bb:/# supervisord -c /etc/supervisor/supervisord.conf
root@555a931b57bb:/#
root@555a931b57bb:/#
Content type
Image
Digest
sha256:b4125d046…
Size
197.8 MB
Last updated
over 9 years ago
docker pull luispa/base-chatarrero