Cuando configuramos SpamAssassin teniendo instalado el panel de hosting VestaCP (sobre CentOS), puede que obtengamos un error relacionado con la opción de autoaprendizaje de SpamAssassin. El problema reside en el plugin Bayes. Si miramos nuestro nuestro archivo de log veremos algo así como:
Spamassassin Error: cannot create user preferences file //.spamassassin/user_prefs: Permission denied
Como podéis comprobar, el error está claramente en que SpamAssassin no es capaz de crear el archivo user_prefs.
Pasos para arreglar el problema
Lo primero que tenemos que hacer es crear el usuario spamd para evitar que SpamAssassin se ejecute con el usuario nobody. Para ello usamos lo siguientes comandos:
groupadd -g 1001 spamd useradd -u 1001 -g spamd -s /sbin/nologin -d /var/lib/spamassassin spamd mkdir /var/lib/spamassassin chown spamd:spamd /var/lib/spamassassin
Seguidamente tenemos que editar el archivo /etc/exim/exim.conf mediante el siguiente comando:
nano vi /etc/exim/exim.conf 1 vi /etc/exim/exim.conf
Si no tenemos el editor nano, tendremos que abrir el archivo con el editor vi. Dentro del archivo tenemos que modificar la siguiente línea:
spam = nobody:true/defer_ok
Y cambiar el usuario nobody por el usuario spamd, de modo que quede tal que así:
spam = spamd:true/defer_ok
Y listo, en principio ya no tendremos que realizar más modificaciones. Ahora tenemos que comprobar que los cambios se han aplicado correctamente.
Reinicio de servicios y comprobaciones finales
Tenemos que reiniciar tanto exim como SpamAssassin:
service exim restart service spamassassin restart
Ahora, tras pasar un tiempo, los archivos user_prefs, bayes_seen y bayes_toks aparecerán en el directorio del usuario spamd, que en este caso es /var/lib/spamassassin. Para ello ejecutamos los siguientes comandos y vemos si están:
cd /var/lib/spamassassin ls -a
Debemos tener en cuenta de que Bayes para SpamAssassin necesita al menos 200 emails de spam antes de crear los archivos, así que si no están, podemos volver a mirar pasado un tiempo. Eso sí, el error debería haber desaparecido del log y el archivo user_prefs que antes nos daba error debería estar presente.