Filtrar correos con Postfix y Spamassassin SIN usar Amavis (con clamsmtp)

La mayoría de servidores virtuales dedicados instalan el sistema sin partición swap, necesaria para el funcionamiento de Amavis. En estos casos te aparecerán en los logs de amavis algo como ésto: "no se ha podido asignar memoria".
Si estás en este caso debes hacer unos pequeños cambios en tu server para solucionarlo.

Eliminar amavis del sistema e instalar clamsmtp, dejando el archivo /etc/clamsmtpd.conf con estos cambios:

OutAddress: 10026        # Puerto de entrega de correo
Listen: 127.0.0.1:10025  # Puerto de escucha a postfix

A continuación hacemos unos cambios en /etc/postfix/master.cf

Debajo de la linea

smtp      inet  n       -       -       -       -       smtpd

agregamos esta:

-o content_filter=scan:127.0.0.1:10025   # Pasamos el correo a spamc para el chequeo

Y al final del archivo dejaremos ésto:

spamassassin    unix    -       n       n       -       -       pipe
   user=vmail argv=/usr/bin/spamc -f -e
   /usr/sbin/sendmail -oi -f ${sender} ${recipient}

scan      unix  -       -       n       -       16      smtp
   -o smtp_send_xforward_command=yes

127.0.0.1:10026 inet    n       -       n       -       16      smtpd
   -o content_filter=spamassassin
   -o smtpd_client_restrictions=
   -o smtpd_helo_restrictions=
   -o smtpd_sender_restrictions=
   -o mynetworks_style=host
   -o smtpd_recipient_restrictions=permit_mynetworks,reject
   -o smtpd_authorized_xforward_hosts=127.0.0.0/8
   -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks

Tener en cuenta que hay que eliminar cualquier referencia del tipo "content_filter=amavis[x.x.x.x]" que tengamos en /etc/postfix/main.cf si no queremos que los correos entren en un bucle sin fin.

Después de reiniciar clamsmtp y postfix tendremos el sistema en marcha.