Configuration système · 6 min read · Sep 28, 2025

Le SpamSnake Parfait - Ubuntu Jaunty Jackalope - Page 5

17.11 Définir les permissions pour tout rassembler

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

Enfin, assurez-vous de redémarrer MailScanner :

killall mailscanner
check_mailscanner

Testez la configuration :

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

Vérifiez les lignes comme :

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

Vous devriez voir des lignes apparaître avec DCC, Pyzor et Razor qui disent chargement du plugin et espérons-le pas d’erreurs.

Pour terminer cette partie, nous devons ajouter des tâches cron qui nettoieront/mettre à jour, vous avez probablement vu le message à ce sujet après que le script d’installation de MailScanner se soit terminé.

Tout d’abord, éditez conf.php et définissez ‘QUARANTINE_DAYS_TO_KEEP’ dans conf.php et changez la ligne suivante dans /usr/src/mailwatch-1.0.4/tools/db_clean en :

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

Installez le script de nettoyage de la quarantaine :

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

Exécutez

crontab -e

et ajoutez ce qui suit :

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

Désactivez le script cron installé par mailscanner /etc/cron.daily/clean.quarantine (note : faites cela uniquement si le script clean.quarantine existe).

$disabled = 1; 

17.12 Redémarrer le système

reboot

Vérifiez votre mail.log ( tail –f /var/log/mail.log) et vous devriez voir ce qui suit :

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

Félicitations - vous avez maintenant MailScanner enregistrant dans MySQL.

17.13 Tester l’interface MailWatch

Pointez votre navigateur vers http:///mailscanner/ - vous devriez être invité à entrer un nom d’utilisateur et un mot de passe - entrez les détails de l’utilisateur web MailWatch que vous avez créé plus tôt, et vous devriez voir une liste des 50 derniers messages traités par MailScanner.

Si vous ne parvenez pas à voir les mails, vous devrez peut-être définir les permissions suivantes :

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

Vous devrez peut-être créer ce qui suit pour éviter une erreur dans un test lint :

mkdir /var/www/.spamassassin

17.14 Mettre à jour la table des règles SpamAssassin

MailWatch garde une liste de toutes les règles et descriptions SpamAssassin qui sont affichées sur la page ‘Détails du message’ - pour afficher les descriptions, vous devez exécuter le programme de mise à jour chaque fois que vous ajoutez de nouvelles règles ou mettez à niveau SpamAssassin. Cliquez sur le menu ‘Outils/Liens’ et sélectionnez ‘Mettre à jour les descriptions des règles SpamAssassin’ et cliquez sur ‘Exécuter maintenant’.

17.15 Mettre à jour la base de données GeoIP

Changez cette ligne dans /var/www/mailscanner/geoip_update.php pour qu’elle ressemble à :

dbquery("LOAD DATA LOCAL INFILE 

*Note : Assurez-vous que allow_url_fopen = On est défini dans votre php.ini.

Cliquez sur le menu ‘Outils/Liens’ et sélectionnez ‘Mettre à jour la base de données GeoIP’ et cliquez sur ‘Exécuter maintenant’.

17.16 Correction pour permettre les jokers dans la liste blanche/noire

Ajoutez ce qui suit à la fin de la section return 1 dans votre /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 Correction pour les opérations de message ne trouvant pas les messages

Changez ce qui suit dans le fichier /var/www/mailscanner/do_message_ops.php :

$id = $Regs[1]; 

en

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

17.18 Libération des messages Spam

Pour permettre à MailWatch de libérer des messages Spam sans qu’ils soient traités à nouveau, ajoutez 127.0.0.1 comme élément de liste blanche dans l’interface MailWatch/Liste. Assurez-vous de redémarrer MailScanner après avoir configuré ces options. Ci-dessous, voici à quoi ressemble mon entrée.

| 127.0.0.1 | default | Supprimer |

17.19 Correction pour permettre plusieurs libérations de messages dans les opérations de message

Éditez /var/www/mailscanner/do_message_ops.php et apportez les modifications suivantes :

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

Ensuite, trouvez la section suivante et changez-la pour qu’elle ressemble à ceci :

$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";

Ensuite, nous éditons le fichier /var/www/mailscanner/functions.php et changeons :

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

en

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

Ensuite, changez :

array_unshift($row, "   "); 

En :

array_unshift($row, "    "); 

Ensuite, trouvez le bloc avec la fonction javascript pour gérer les boutons radio. Ajoutez une troisième valeur comme ceci :

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";

Maintenant, ajoutez le texte pour les radios :

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

Enfin, changez :

echo "

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

en :

echo "

S = Spam   H = Ham   F = Oublier   R = Libérer\n";

17.20 Patch pour corriger l’erreur d’autocommit lors de l’arrêt de MailScanner

Éditez la ligne 80 de MailWatch.pm pour qu’elle ressemble à ceci :

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

*Note : Cela désactive l’autocommit lorsqu’il se connecte afin que la ligne de validation lors de la fermeture ne génère pas d’erreur.

18. Installer et configurer SPF

Le paquet postfix-policyd-spf-perl dépend des modules Perl Mail::SPF et NetAddr::IP.

Nous devons télécharger postfix-policyd-spf-perl depuis http://www.openspf.org/Software dans le répertoire /usr/src/ et l’installer dans le répertoire /usr/lib/postfix/ comme ceci :

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

Ensuite, nous éditons /etc/postfix/master.cf et ajoutons le passage suivant à la fin :

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

(Les espaces en début de ligne avant user=nobody sont importants pour que Postfix sache que cette ligne appartient à la précédente !)

Ensuite, ouvrez /etc/postfix/main.cf et recherchez la directive smtpd_recipient_restrictions. Vous devez avoir reject_unauth_destination dans cette directive, et juste après reject_unauth_destination, vous ajoutez check_policy_service unix:private/policy comme ceci :

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

Il est important que vous spécifiiez check_policy_service APRÈS reject_unauth_destination sinon votre système peut devenir un relais ouvert !

Ensuite, redémarrez Postfix :

/etc/init.d/postfix restart

C’est tout.

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.