rspamd Whitelist/Blacklist pro Domain vor dem Filtern

rspamd Whitelist/Blacklist pro Domain vor dem Filtern

da ich im GitHub-Diskussionsforum von rspamd leider keine Antworten bekomme, hat hier vielleicht jemand Erfahrung mit dem Vorfiltermodus von rspamd.

Ich versuche, rspamd dazu zu bringen, jede E-Mail aus einer bestimmten Liste von Domänen zu akzeptieren, egal wie sehr es sie für Spam hält. Leider ist dies notwendig, da zu viele Leute denken, es sei eine gute Idee, Absender zu manipulieren oder andere zwielichtige Dinge zu tun, die normalerweise von Leuten verwendet werden, die etwas zu verbergen haben. Dies sollte am einfachsten mit dem Vorfiltermodus zu erreichen sein, da dieser ausgeführt werden soll, bevor überhaupt bewertet wird, ob die E-Mail Spam ist oder nicht. Als zusätzlicher Bonus könnte dies auch für eine Sperrliste verwendet werden, wenn einige notorische Spam-Mails einfach nicht erkannt werden. Natürlich kann rspamd beigebracht werden, was Spam sein soll und was nicht, aber das scheint nicht effektiv genug zu sein. Außerdem kann ich in den Protokollen nicht herausfinden, warum es sich weigert, die Vorfilter für die meisten Domänen anzuwenden, also hat vielleicht einer von Ihnen einen Vorschlag.

Im Moment verwende ich die Multimap-Konfiguration, um die Vorfilter für die Akzeptieren- und Blockieren-Liste einzurichten. In local.d/multimap.conf habe ich also:

ACCEPTLIST_SENDER_DOMAIN {
      #type = "header";
      #header = "from";
      type = "from";
      prefilter = "true";
      filter = "email:domain";
      map = "file:///etc/rspamd/local.d/acceptlist.sender.domain.map";
      description = "Sender domain is on allowed";
      action = "accept"; # Prefilter mode
  }

BLOCKLIST_SENDER_DOMAIN {
      #type = "header";
      #header = "from";
      type = "from";
      prefilter = "true";
      filter = "email:domain";
      map = "file:///etc/rspamd/local.d/blocklist.sender.domain.map";
      symbol = "BLOCKLIST_SENDER_DOMAIN";
      description = "Sender domain is on blocked";
      score = 10.0;
      action = "add_header"; # Prefilter mode
  }

Die beiden Kommentare oben in jedem Block stammen von meinem Versuch, nach Header und dann nach dem From-Header zu filtern. Da man aber direkt danach filtern kann, habe ich diesen hier probiert, aber das hilft nicht. Außerdem habe ich versucht, die Dateien in der Map sowohl mit dem Pfad als auch mit file:///Pfad/zur/Datei hinzuzufügen, aber beides hat keinen Erfolg gebracht. Auch rspamd.log zeigt nichts Hilfreiches (der einzige Fehler, der ständig auftaucht, ist, dass der DKIM-Schlüssel nicht geladen werden kann, da ich dieses Modul nicht deaktivieren kann). Das Kopieren dieser Konfiguration nach overwrite.d hilft auch nicht. Irgendwelche Ideen?

Ich verwende Debian 11 und rspamd 3.4-1~bullseye direkt aus dem rspamd-Repo.

Antwort1

Meine letzte Antwort hilft zwar ziemlich weiter, aber insgesamt habe ich festgestellt, dass einige Probleme noch ungelöst sind:

aus irgendeinem Grund fügt es immer noch ACCEPTLIST_SENDER_DOMAINeine Domain hinzu, die ich vor einiger Zeit aus der Map-Datei gelöscht habe. Ich habe rspamd sogar mehrmals neu gestartet, aber es weigert sich, diese Domain zu vergessen. Und ich kann keinen Cache finden, den ich löschen könnte, der helfen würde.

Hinzu kommt, dass die Multimap Mails von bestimmten Domänen auf jeden Fall akzeptieren soll. Aber nur, wenn die Domäne im From:Header steht, sonst nicht. Die Domäne, die ich zuvor fälschlicherweise zur Whitelist hinzugefügt habe, war die Domäne unserer Mailingliste. Daher hätte rspamd diese Mails basierend auf der Multimap nie akzeptieren dürfen, da keine unserer Mailinglisten den From:Header durch ihre eigene Adresse ersetzt. Trotzdem werden viele Spam-Mails weiterhin als Spam markiert, obwohl sie theoretisch durch das false ausgeschlossen werden sollten ACCEPTLIST_SENDER_DOMAIN. Vorerst habe ich das prefilter=true; wieder zur Multimap-Konfiguration hinzugefügt, vielleicht hilft das. Aber alles in allem verhält sich rspamd immer noch nicht wie erwartet.

BEARBEITEN: Um das erste Problem zu lösen, bin ich wieder dazu übergegangen, den From:Header explizit zu prüfen, da type:from zuerst den Absender des Umschlags prüft, bevor dies geprüft wird. Dies sollte also viel zuverlässiger sein (natürlich ist es ziemlich einfach, den Absender-Header zu ändern, aber ich kann die Vorfälle, bei denen dies in den vergangenen Jahren passiert ist und die nicht von unserem Haupt-Spamfilter abgefangen wurden, an einer Hand abzählen):

ACCEPTLIST_SENDER_DOMAIN {
      type = "header";
      header = "From:";
      prefilter = true;
      map = "/etc/rspamd/local.d/acceptlist.sender.domain.map";
      symbol ="ACCEPTLIST_SENDER_DOMAIN";
      description = "Sender domain is on allowed";
      action = "accept"; # Prefilter mode
  }

BLOCKLIST_SENDER_DOMAIN {
      type = "header";
      header = "From:";
      prefilter = true;
      map = "/etc/rspamd/local.d/blocklist.sender.domain.map";
      symbol = "BLOCKLIST_SENDER_DOMAIN";
      description = "Sender domain is on blocked";
      action = "add_header"; # Prefilter mode
  }

Aus irgendeinem Grund enthalten E-Mails jedoch Folgendes im Header, sobald diese Symbole ausgelöst werden:

X-Rspamd-Pre-Result: action=no action;
    module=multimap;
    Matched map: ACCEPTLIST_SENDER_DOMAIN

Die Aktion sollte in diesem Fall eindeutig „Akzeptieren“ sein, wie in der Konfiguration angegeben. So sieht es im Konfigurationsdump aus:

multimap {
    ACCEPTLIST_SENDER_DOMAIN {
        action = "accept";
        map = "/etc/rspamd/local.d/acceptlist.sender.domain.map";
        description = "Sender domain is on allowed";
        symbol = "ACCEPTLIST_SENDER_DOMAIN";
        prefilter = true;
        type = "header";
        header = "From";
}
    BLOCKLIST_SENDER_DOMAIN {
        action = "add_header";
        map = "/etc/rspamd/local.d/blocklist.sender.domain.map";
        description = "Sender domain is on blocked";
        symbol = "BLOCKLIST_SENDER_DOMAIN";
        prefilter = true;
        type = "header";
        header = "From";
}
    [...]
}

Antwort2

Ich glaube nicht, dass der Vorfilterwert in Anführungszeichen gesetzt werden sollte:

prefilter = true;

Außerdem ist das Konfigurieren einer Punktzahl in einer Vorfilterzuordnung möglicherweise nutzlos, da die Aktion bereits erzwungen wird.

Ich hoffe, es hilft !

Antwort3

Das sollte funktionieren. Ich habe es geschafft, genau das umzusetzen, was Sie wollen. Meine local.d/multimap.conf enthält:

Zum Akzeptieren von E-Mails aus bestimmten Domänen

WHITELIST_SENDER_DOMAIN {
      type = "from";
      filter = "email:domain";
      map = "/${LOCAL_CONFDIR}/local.d/whitelist.sender.domain.map";
      symbol ="WHITELIST_SENDER_DOMAIN";
      description = "WHITELIST map for SENDERS Domain - Action accept";
      action = "accept";
  }
# For rejecting domains
BLACKLIST_SENDER_DOMAIN {
      type = "from";
      filter = "email:domain";
      map = "/${LOCAL_CONFDIR}/local.d/blacklist.sender.domain.map";
      symbol ="BLACKLISTED_DOMAIN";
      description = "Blacklist map for Senders Domain - Action reject";
      action = "reject";
  } 

Sie müssen die erwähnten Map-Dateien in local.d mit genau demselben Namen erstellen und sie mit den Domänennamen füllen, die Sie filtern möchten. Nur ein Domänenname pro Zeile! Die Dateien sollten über Leseberechtigung verfügen.

Beachten Sie auch, dass die meisten weiteren Prüfungen übersprungen werden sollten, wenn für eine Nachricht eine Aktion festgelegt ist.

Antwort4

@cz.steve Ich habe jetzt alles wieder so aufgebaut, dass ich rspamd verwende, da SpamAssassin auch nicht so funktionierte, wie ich es wollte. Jetzt ermöglichen die Änderungen das White- und Blacklisting, allerdings nicht genau so, wie ich es mir vorgestellt hatte. Ich wollte, dass die angegebenen Domänen nur mit dem abgeglichen werden, was im From:Header steht, nicht auch mit allen anderen Headern. Ist das möglich?

Im Moment ist meine Konfiguration folgende:

ACCEPTLIST_SENDER_DOMAIN {
      type = "from";
      filter = "email:domain";
      map = "/etc/rspamd/local.d/acceptlist.sender.domain.map";
      symbol ="ACCEPTLIST_SENDER_DOMAIN";
      description = "Sender domain is on allowed";
      action = "accept"; # Prefilter mode
  }

BLOCKLIST_SENDER_DOMAIN {
      type = "from";
      filter = "email:domain";
      map = "/etc/rspamd/local.d/blocklist.sender.domain.map";
      symbol = "BLOCKLIST_SENDER_DOMAIN";
      description = "Sender domain is on blocked";
      action = "add_header"; # Prefilter mode
  }

verwandte Informationen