Spam-Schutz · 5 min read · Sep 28, 2025

Die perfekte SpamSnake - Ubuntu Jaunty Jackalope - Seite 5

17.11 Berechtigungen setzen, um alles zusammenzubringen

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

Stellen Sie schließlich sicher, dass Sie MailScanner neu starten:

killall mailscanner
check_mailscanner

Testen Sie die Einrichtung:

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

Überprüfen Sie auf Zeilen wie:

debug: bayes: Datenbankverbindung hergestellt   
debug: bayes: bayes db Version 3 gefunden   
debug: bayes: Benutzer-ID: 2

Sie sollten Zeilen mit DCC, Pyzor und Razor sehen, die sagen, dass das Plugin geladen wird, und hoffentlich keine Fehler.

Um diesen Teil abzuschließen, müssen wir Cron-Jobs hinzufügen, die bereinigen/aktualisieren. Sie haben wahrscheinlich die Nachricht darüber gesehen, nachdem das Installationsskript von MailScanner abgeschlossen war.

Zuerst bearbeiten Sie conf.php und setzen ‘QUARANTINE_DAYS_TO_KEEP’ in conf.php und ändern die folgende Zeile in /usr/src/mailwatch-1.0.4/tools/db_clean zu:

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

Installieren Sie das Skript zur Bereinigung der Quarantäne:

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

Führen Sie aus

crontab -e

und fügen Sie Folgendes hinzu:

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

Deaktivieren Sie das von MailScanner installierte Cron-Skript /etc/cron.daily/clean.quarantine (Hinweis: tun Sie dies nur, wenn das Skript clean.quarantine existiert).

$disabled = 1; 

17.12 System neu starten

reboot

Überprüfen Sie Ihre mail.log (tail –f /var/log/mail.log) und Sie sollten Folgendes sehen:

Jun 13 12:18:23 hoshi MailScanner[26388]: MailScanner E-Mail-Virenscanner Version 4.20-3 startet...   
Jun 13 12:18:24 hoshi MailScanner[26388]: Konfiguration: benutzerdefinierte Initialisierungsfunktion MailWatchLogging aufrufen   
Jun 13 12:18:24 hoshi MailScanner[26388]: Datenbankverbindung wird initialisiert   
Jun 13 12:18:24 hoshi MailScanner[26388]: Initialisierung der Datenbankverbindung abgeschlossen

Herzlichen Glückwunsch - Sie haben jetzt MailScanner, das in MySQL protokolliert.

17.13 Testen Sie die MailWatch-Oberfläche

Richten Sie Ihren Browser auf http:///mailscanner/ - Sie sollten nach einem Benutzernamen und Passwort gefragt werden - geben Sie die Daten des MailWatch-Webbenutzers ein, den Sie zuvor erstellt haben, und Sie sollten eine Liste der letzten 50 von MailScanner verarbeiteten Nachrichten sehen.

Wenn Sie die Mails nicht sehen können, müssen Sie möglicherweise die folgenden Berechtigungen setzen:

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

Möglicherweise müssen Sie Folgendes erstellen, um einen Fehler in einem Lint-Test zu verhindern:

mkdir /var/www/.spamassassin

17.14 Aktualisieren Sie die SpamAssassin-Regeln-Tabelle

MailWatch führt eine Liste aller SpamAssassin-Regeln und Beschreibungen, die auf der Seite ‘Nachrichtendetails’ angezeigt werden - um die Beschreibungen anzuzeigen, müssen Sie den Aktualisierer jedes Mal ausführen, wenn Sie neue Regeln hinzufügen oder SpamAssassin aktualisieren. Klicken Sie im Menü ‘Tools/Links’ auf ‘SpamAssassin-Regelbeschreibungen aktualisieren’ und klicken Sie auf ‘Jetzt ausführen’.

17.15 Aktualisieren Sie die GeoIP-Datenbank

Ändern Sie diese Zeile in /var/www/mailscanner/geoip_update.php, damit sie wie folgt aussieht:

dbquery("LOAD DATA LOCAL INFILE 

*Hinweis: Stellen Sie sicher, dass allow_url_fopen = On in Ihrer php.ini gesetzt ist.

Klicken Sie im Menü ‘Tools/Links’ auf ‘GeoIP-Datenbank aktualisieren’ und klicken Sie auf ‘Jetzt ausführen’.

17.16 Fix, um Wildcards in Whitelist/Blacklist zuzulassen

Fügen Sie Folgendes am Ende des return 1-Abschnitts in Ihrer /opt/MailScanner/lib/MailScanner/CustomFunctions/SQLBlackWhiteList.pm hinzu:

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 Fix für Nachrichtenoperationen, die Nachrichten nicht finden

Ändern Sie Folgendes in der Datei /var/www/mailscanner/do_message_ops.php:

$id = $Regs[1]; 

zu

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

17.18 Spam-Nachrichten freigeben

Um MailWatch zu ermöglichen, Spam-Nachrichten freizugeben, ohne dass sie erneut verarbeitet werden, fügen Sie 127.0.0.1 als Whitelist-Element in der MailWatch/List-Oberfläche hinzu. Stellen Sie sicher, dass Sie MailScanner nach der Konfiguration dieser Optionen neu starten. Unten sehen Sie, wie mein Eintrag aussieht.

| 127.0.0.1 | standard | Löschen |

17.19 Fix, um mehrere Freigaben von Nachrichten in Nachrichtenoperationen zuzulassen

Bearbeiten Sie /var/www/mailscanner/do_message_ops.php und nehmen Sie die folgenden Änderungen vor:

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

Suchen Sie dann den folgenden Abschnitt und ändern Sie ihn wie folgt:

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

Als nächstes bearbeiten wir die Datei /var/www/mailscanner/functions.php und ändern:

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

zu

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

Ändern Sie dann:

array_unshift($row, "   "); 

Zu:

array_unshift($row, "    "); 

Suchen Sie dann den Block mit der Javascript-Funktion zur Handhabung von Radiobuttons. Fügen Sie einen dritten Wert wie folgt hinzu:

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

Fügen Sie nun den Text für die Radiobuttons hinzu:

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

Ändern Sie schließlich:

echo "

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

zu:

echo "

S = Spam   H = Ham   F = Vergessen   R = Freigeben\n";

17.20 Patch zur Behebung des Autocommit-Fehlers beim Stoppen von MailScanner

Bearbeiten Sie die Zeile 80 von MailWatch.pm, damit sie wie folgt aussieht:

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

*Hinweis: Dies schaltet das Autocommit aus, wenn es sich verbindet, sodass die Commit-Zeile beim Schließen keinen Fehler auslöst.

18. Installieren und Konfigurieren von SPF

Das Paket postfix-policyd-spf-perl hängt von den Perl-Modulen Mail::SPF und NetAddr::IP ab.

Wir müssen postfix-policyd-spf-perl von http://www.openspf.org/Software in das Verzeichnis /usr/src/ herunterladen und es in das Verzeichnis /usr/lib/postfix/ installieren:

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

Dann bearbeiten wir /etc/postfix/master.cf und fügen am Ende den folgenden Abschnitt hinzu:

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

(Die führenden Leerzeichen vor user=nobody sind wichtig, damit Postfix weiß, dass diese Zeile zur vorherigen gehört!)

Öffnen Sie dann /etc/postfix/main.cf und suchen Sie nach der Direktive smtpd_recipient_restrictions. Sie sollten reject_unauth_destination in dieser Direktive haben, und direkt nach reject_unauth_destination fügen Sie check_policy_service unix:private/policy hinzu, wie folgt:

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

Es ist wichtig, dass Sie check_policy_service NACH reject_unauth_destination angeben, da Ihr System sonst zu einem offenen Relay werden kann!

Starten Sie dann Postfix neu:

/etc/init.d/postfix restart

Das war’s schon.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.