
Es muy común el uso de SpamAssassin en servicios de correo para intentar reducir el número de mensajes no deseados. La configuración más habitual para hacer esto consiste en el uso del demonio spamd y la ejecución para cada correo del cliente spamc, que conecta al demonio anterior y recibe un veredicto acerca de la posibilidad de que el mensaje sea spam.
Por defecto, spamd y spamc se comunican mediante conexiones TCP. Si nuestra arquitectura es muy simple, por ejemplo que SpamAssassin y el MTA conviven en la misma máquina, usar conexiones TCP para la comunicación es matar moscas a cañonazos, ya que esto implica un exceso de capas, lo que se traduce en tiempo y uso de la CPU. Afortunadamente, existe una manera de configurar spamd y spamc para que se comuniquen de una manera más sencilla: usando sockets UNIX.
Un socket UNIX no es más que una ruta especial a un fichero que se usa para la comunicación entre varios procesos (IPC). En el caso de SpamAssassin, se usará un socket (e.g. /var/run/spamassassin.sock) en el que spamd leerá peticiones y las responderá, y en el que los clientes spamc escribirán sus peticiones al primero. De esta manera la comunicación entre los procesos no implica tanto overhead y la CPU se ve un poco más liberada.
Antes de nada, comprobaremos que no estemos utilizando ya este método. Por defecto, el log registrará las conexiones de los clientes spamc de la manera siguiente:
@4000000048f06d4223b51b0c [9225] info: spamd: connection from xxxxx [127.0.0.1] at port 35854
Los pasos para cambiar este comportamiento consisten en:
Configuramos spamd para especificarle el uso de un socket UNIX. Hay que cambiar la orden de arranque de spamd y añadirle un par de parámetros. El dónde se hace dependerá de cómo lo arranquemos :). Los parámetros son:
/usr/sbin/spamd \
# ...
--socketpath /var/run/spamassassin.sock \
--socketowner usuario \
--socketgroup grupo \
# ...
El primer parámetro (--socketpath) indica a spamd dónde debe crear el socket. El segundo y el tercero indican con qué usuario y grupo se debe crear el socket, respectivamente, para que no haya problemas de permisos.
También hay que modificar la manera en que se llama a spamc. De nuevo el lugar donde se modifica esta llamada dependerá de, por ejemplo, qué Mail Delivery Agent (MDA) usemos. En esta llamada debemos añadir un nuevo parámetro:
/usr/bin/spamc .... -U /var/run/spamassassin.sock ...
Siendo esta ruta la misma que se notificó a spamd como ruta al socket.
Una vez hayamos llevado a cabo estas modificaciones, solo resta reiniciar el demonio spamd y comprobar en los logs del mismo que todo está funcionando bien:
@4000000048f06e3c0e31db94 [9669] info: spamd: server started on UNIX domain socket /var/run/spamassassin.sock (running version 3.1.7-deb) [....] @4000000048f06e9e08a3c4e4 [9678] info: spamd: got connection over /var/run/spamassassin.sock @4000000048f06e9e0a961b1c [9678] info: spamd: processing message <20081011091412.GA5331@panecillo> for xxxxxxxx:zzzzz
Como curiosidad, he encontrado un hilo en un foro en el que se ofrece esta configuración por $5. Con esta guÃa, la cosa os ha salido gratis :).
Comentarios recientes
hace 34 semanas 1 dÃa
hace 49 semanas 5 dÃas
hace 49 semanas 5 dÃas
hace 1 año 9 semanas
hace 1 año 9 semanas
hace 1 año 9 semanas
hace 1 año 9 semanas
hace 1 año 9 semanas
hace 1 año 10 semanas
hace 1 año 10 semanas