Configuración · 5 min read · Sep 28, 2025

El Perfecto SpamSnake - Ubuntu Jaunty Jackalope - Página 5

17.11 Establecer permisos para unirlo todo

chown -R postfix:www-data /var/spool/MailScanner   
chown -R postfix:www-data /var/lib/MailScanner   
chown -R postfix:www-data /var/spool/postfix/hold   
chmod -R ug+rwx /var/spool/postfix/hold   
chmod -R u+rwx,g+rx /var/spool/MailScanner/quarantine

Finalmente asegúrate de reiniciar MailScanner:

killall mailscanner
check_mailscanner

Prueba la configuración:

spamassassin -x -D -p /opt/MailScanner/etc/spam.assassin.prefs.conf --lint

Verifica líneas como:

debug: bayes: Database connection established   
debug: bayes: found bayes db version 3   
debug: bayes: Using userid: 2

Deberías ver líneas que aparezcan con DCC, Pyzor y Razor que digan cargando plugin y, con suerte, sin errores.

Terminando esta parte, necesitamos agregar trabajos cron que limpiarán/actualizarán, probablemente viste el mensaje sobre esto después de que finalizó el script de instalación de MailScanner.

Primero edita conf.php y establece ‘QUARANTINE_DAYS_TO_KEEP’ en conf.php y cambia la siguiente línea en /usr/src/mailwatch-1.0.4/tools/db_clean a:

#!/usr/bin/php -q
require('/var/www/mailscanner/functions.php');

Instala el script de limpieza de cuarentena:

cp /usr/src/mailwatch-1.0.4/tools/quarantine_maint.php /usr/bin/quarantine_maint.php   
cp /usr/src/mailwatch-1.0.4/tools/db_clean.php /usr/bin/db_clean.php   
chmod +x /usr/bin/quarantine_maint.php   
chmod +x /usr/bin/db_clean.php

Ejecuta

crontab -e

y agrega lo siguiente:

15 10 * * 2 /usr/bin/quarantine_maint.php --clean &> /dev/null
58 23 * * * /usr/bin/db_clean.php &> /dev/null

Desactiva el script cron instalado de mailscanner /etc/cron.daily/clean.quarantine (nota: haz esto solo si el script clean.quarantine existe).

$disabled = 1; 

17.12 Reiniciar el sistema

reboot

Verifica tu mail.log ( tail –f /var/log/mail.log) y deberías ver lo siguiente:

Jun 13 12:18:23 hoshi MailScanner[26388]: MailScanner E-Mail Virus Scanner version 4.20-3 starting...   
Jun 13 12:18:24 hoshi MailScanner[26388]: Config: calling custom init function MailWatchLogging   
Jun 13 12:18:24 hoshi MailScanner[26388]: Initialising database connection   
Jun 13 12:18:24 hoshi MailScanner[26388]: Finished initialising database connection

Felicidades - ahora tienes MailScanner registrando en MySQL.

17.13 Prueba la interfaz de MailWatch

Apunta tu navegador a http:///mailscanner/ - deberías ser solicitado por un nombre de usuario y contraseña - ingresa los detalles del usuario web de MailWatch que creaste anteriormente, y deberías ver una lista de los últimos 50 mensajes procesados por MailScanner.

Si no puedes ver los correos, entonces puede que tengas que establecer los siguientes permisos:

chgrp -R www-data /var/spool/MailScanner

Puede que tengas que crear lo siguiente para prevenir un error en una prueba de lint:

mkdir /var/www/.spamassassin

17.14 Actualizar la tabla de reglas de SpamAssassin

MailWatch mantiene una lista de todas las reglas y descripciones de SpamAssassin que se muestran en la página ‘Detalle del Mensaje’ - para mostrar las descripciones, necesitas ejecutar el actualizador cada vez que agregues nuevas reglas o actualices SpamAssassin. Haz clic en el menú ‘Herramientas/Enlaces’ y selecciona ‘Actualizar Descripciones de Reglas de SpamAssassin’ y haz clic en ‘Ejecutar Ahora’.

17.15 Actualizar la base de datos GeoIP

Cambia esta línea en /var/www/mailscanner/geoip_update.php para que se vea así:

dbquery("LOAD DATA LOCAL INFILE 

*Nota: Asegúrate de que allow_url_fopen = On esté configurado en tu php.ini.

Haz clic en el menú ‘Herramientas/Enlaces’ y selecciona ‘Actualizar base de datos GeoIP’ y haz clic en ‘Ejecutar Ahora’.

17.16 Corrección para permitir comodines en la Lista Blanca/Negra

Agrega lo siguiente al final de la sección return 1 en tu /opt/MailScanner/lib/MailScanner/CustomFunctions/SQLBlackWhiteList.pm:

return 1 if $BlackWhite->{$to}{'*@'.$fromdomain};
return 1 if $BlackWhite->{$to}{'*@*.'.$fromdomain};
return 1 if $BlackWhite->{$todomain}{'*@'.$fromdomain};
return 1 if $BlackWhite->{$todomain}{'*@*.'.$fromdomain};
return 1 if $BlackWhite->{'default'}{'*@'.$fromdomain};
return 1 if $BlackWhite->{'default'}{'*@*.'.$fromdomain};

17.17 Corrección para que las Operaciones de Mensajes No Encuentren Mensajes

Cambia lo siguiente en el archivo /var/www/mailscanner/do_message_ops.php:

$id = $Regs[1]; 

a

$id = str_replace("_", ".",$Regs[1]); 

17.18 Liberar Mensajes de Spam

Para permitir que MailWatch libere mensajes de Spam sin que sean procesados nuevamente, agrega 127.0.0.1 como un elemento de lista blanca en la interfaz de MailWatch/List. Asegúrate de reiniciar MailScanner después de configurar estas opciones. A continuación se muestra cómo se ve mi entrada.

| 127.0.0.1 | default | Eliminar |

17.19 Corrección para Permitir Múltiples Liberaciones de Mensajes en Operaciones de Mensajes

Edita /var/www/mailscanner/do_message_ops.php y realiza los siguientes cambios:

   case 'F':
    $type='forget';
    break;
   case 'R':
    $type='release';
    break;
   default:
    continue;
    break;

Luego, encuentra la siguiente sección y cámbiala para que se vea así:

$itemnum = array($num);
   if ($type == 'release'){
      if($quarantined = quarantine_list_items($id,RPC_ONLY)) {
         $to = $quarantined[0]['to'];
       }
       echo "$id$type" . quarantine_release($quarantined, $itemnum, $to, RPC_ONLY) . "\n";
    } else {
     echo "$id$type" . quarantine_learn($items, $itemnum, $type, RPC_ONLY) . "\n";
     }
   }
  echo "\n";
      }
    }
  }
}
echo "  \n";

A continuación, editamos el archivo /var/www/mailscanner/functions.php y cambiamos:

$fieldname[$f] = "Ops
S  H  F";

a

$fieldname[$f] = "Ops
S  H  F  R";

Cambiamos luego:

array_unshift($row, "   "); 

a:

array_unshift($row, "    "); 

A continuación, encuentra el bloque con la función javascript para manejar botones de radio. Agrega un tercer valor así:

echo "function SetRadios(p) {\n";
echo " var val;\n";
echo " if (p == 'S') {\n";
echo "  val = 0;\n";
echo " } else if (p == 'H') {\n";
echo "  val = 1;\n";
echo " } else if (p == 'F') {\n";
echo "  val = 2;\n";
echo " } else if (p == 'R') {\n";
echo "  val = 3;\n";
echo " } else if (p == 'C') {\n";
echo "  ClearRadios();\n";

Ahora, agrega el texto para los radios:

echo "  S";
echo "  H";
echo "  F";
echo "  R";

Finalmente, cambia:

echo "

S = Spam   H = Ham   F = Forget\n";

a:

echo "

S = Spam   H = Ham   F = Forget   R = Release\n";

17.20 Parche para arreglar el error de autocommit al detener MailScanner

Edita la línea 80 de MailWatch.pm para que se vea así:

$dbh = DBI->connect("DBI:mysql:database=$db_name;host=$db_host", $db_user, $db_pass, {PrintError => 0, AutoCommit => 0}); 

*Nota: Esto desactiva el autocommit cuando se conecta, por lo que la línea de commit cuando se cierra no genera un error.

18. Instalar y Configurar SPF

El paquete postfix-policyd-spf-perl depende de los módulos Perl Mail::SPF y NetAddr::IP.

Necesitamos descargar postfix-policyd-spf-perl de http://www.openspf.org/Software al directorio /usr/src/ y instalarlo en el directorio /usr/lib/postfix/ de la siguiente manera:

cd /usr/src   
wget http://www.openspf.org/blobs/postfix-policyd-spf-perl-2.005.tar.gz   
tar xvfz postfix-policyd-spf-perl-2.005.tar.gz   
cd postfix-policyd-spf-perl-2.005   
cp postfix-policyd-spf-perl /usr/lib/postfix/policyd-spf-perl

Luego editamos /etc/postfix/master.cf y agregamos la siguiente estrofa al final:

policy unix - n n - - spawn
   user=nobody argv=/usr/bin/perl /usr/lib/postfix/policyd-spf-perl

(Los espacios iniciales antes de user=nobody son importantes para que Postfix sepa que esta línea pertenece a la anterior!)

Luego abre /etc/postfix/main.cf y busca la directiva smtpd_recipient_restrictions. Deberías tener reject_unauth_destination en esa directiva, y justo después de reject_unauth_destination agregas check_policy_service unix:private/policy así:

[...]
smtpd_recipient_restrictions =
[...]
   reject_unauth_destination
   check_policy_service unix:private/policy
[...]

Es importante que especifiques check_policy_service DESPUÉS de reject_unauth_destination o de lo contrario tu sistema puede convertirse en un relay abierto!

Luego reinicia Postfix:

/etc/init.d/postfix restart

Eso es todo.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.