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/quarantineFinalmente asegúrate de reiniciar MailScanner:
killall mailscannercheck_mailscannerPrueba la configuración:
spamassassin -x -D -p /opt/MailScanner/etc/spam.assassin.prefs.conf --lintVerifica líneas como:
debug: bayes: Database connection established
debug: bayes: found bayes db version 3
debug: bayes: Using userid: 2Deberí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.phpEjecuta
crontab -ey agrega lo siguiente:
15 10 * * 2 /usr/bin/quarantine_maint.php --clean &> /dev/null
58 23 * * * /usr/bin/db_clean.php &> /dev/nullDesactiva 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
rebootVerifica 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 connectionFelicidades - ahora tienes MailScanner registrando en MySQL.
17.13 Prueba la interfaz de MailWatch
Apunta tu navegador a http://
Si no puedes ver los correos, entonces puede que tengas que establecer los siguientes permisos:
chgrp -R www-data /var/spool/MailScannerPuede que tengas que crear lo siguiente para prevenir un error en una prueba de lint:
mkdir /var/www/.spamassassin17.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:
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-perlLuego 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 restartEso es todo.
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.