Unsere letzten MailGateways mit MailScanner wurden abgeschaltet, jetzt habe ich etwas Zeit über die erfolgreiche Umstellung auf Rspamd zu berichten. MailScanner ist eine Anti-Spam Komplettlösung auf Basis von SpamAssassin, Rspamd hingegen eine direkte Alternative zu SpamAssassin.
Neben der Umstellung von Squid Proxies auf Enterprise Firewalls (gestern habe ich darüber gebloggt) war ich auch Hauptverantwortlich unser MailScanner durch Rspamd abzulösen. Ziel: Spam Detection Rate nochmals spürbar erhöhen, Spam Mails bei Zustellung direkt rejecten.
Aber wieso eigentlich Rspamd? Hmm, weil es einfach gut ist? Ja, auch deswegen. Aber ich bin etwas voreingenommen. Vor fast 5 Jahren war ich in Berlin bei der Linux Server Admin Konferenz von Heinlein, dort referierte der Hauptentwickler Vsevolod Stakhov aus Moskau eingeflogen höchstpersönlich über sein Open Source Projekt. Schon damals war ich begeistert vom grundlegend besseren Ansatz als MailScanner: E-Mails werden während der Zustellung gescannt und es wird innerhalb 8 Sekunden entschieden ob die E-Mail angenommen oder abgelehnt wird. Dazu kam das mir sympathische adaptive Geylisting welches erst ab einem erhöhten Spam-Score E-Mails temporär zurückweist.
MailScanner’s Stärken und eine grobe Schwäche
Im Prinzip fand ich MailScanner ein gutes Open Source Produkt. Es ist in Perl geschrieben und läuft sehr stabil. Die Installation von MailScanner läuft ab wie bei einer Art Komplett-Suite: Man bekommt SpamAssassin vorkonfiguriert, auf Wunsch wird auch ClamAV dazu geschaltet. Alle nötigen Pakete werden nachinstalliert, teilweise aus dem Perl Repository. Es gibt mehrere GUIs, die meistbenutzte grafische Oberfläche dürfte MailWatch sein welches von den Hauptentwicklern kommt.
MailScanner mit MailWatch kann fast alles was das Herzen eines E-Mail Gateway Verantwortlichen begehrt: E-Mails auf Spam Filtern (SpamAssassin), Blacklisten, Whitelisten, Virenschutz, Quarantäne-Management. Aber MailScanner kann eines nicht gut: E-Mails scannen während der Zustellung im Milter-Modus. MailScanner möchte nämlich alle E-Mails erst einmal annehmen und fängt dann im 5-Sekunden-takt an diese E-Mails zu verarbeiten. Das ist zu spät! Man kann E-Mails nachdem sie angenommen wurden nicht 5 Sekunden später ablehnen. Das geht nicht. E-Mails müssen während der Zustellung durchleuchtet werden und es muss in unter 10 Sekunden entschieden werden, ob diese E-Mail durchgelassen wird oder eben nicht.
Ich hatte im August 2018 in die Mailing Liste von MailScanner meine Bitte dargelegt, dass MailScanner es können muss E-Mails während der Zustellung abzulehnen. Aus meiner Anfrage entspann sich eine eine längere Diskussion. Zuerst wurde gesagt, MailScanner seine Stärke liege im Batch-Scan-Verfahren, per Standard alle 5 Sekunden. Dazu müsse man ausnahmslos alle E-Mails annehmen und könne diese Mails erst nach Annahme durchscannen. Nunja, das mag sein, es löst aber mein Problem nicht: Ich bin nach wie vor der Meinung, unerwünschte E-Mails müssen während der Zustellung abzulehnen sein.
Wenige Tage später schrieb ein gewisser Shawn Iverson in die Mailing List. Er hätte schon länger die Idee gehabt einen Milter-Support für MailScanner zu programmieren. Dazu habe er die Milter Integration von Rspamd in dessen Source Code studiert. Und tatsächlich: Schon kurz darauf gab es den ersten MailScanner Release mit optionalem Milter Support.
In den darauf nachfolgenden Versionen von 2019 wurde der Milter Support in MailScanner von Bugs befreit und etwas ausgebaut. Aber benutzt habe ich diesen Milter Daemon nie, weil er meinem Verständnis nach nur rudimentäre Checks mit einem Postfix reject ablehnen kann. Ein paar RBLs (Relay/Remote/Realtime Black List) prüfen und dann ein reject auslösen ist mir nicht genug. Ausnahmslos alle Spamchecks sollen durchgeführt werden und ausnahmslos bei jeder E-Mail soll es möglich sein, mit einem Reject abzulehnen. Unabhängig von der Flut an zu scannenden E-Mails muss das einfach gehen. War es aber m.E. in MailScanner bis heute nicht.
Kurz zu den technischen Details in unserer jetzt abgeschalteten MailScanner Umgebung. Wir hatten Rund 3 Jahre im Einsatz:
- 2 Ubuntu 18.04 Server
- Deployment & Verwaltung 100% mit Ansible
- Postfix
- Server 1 übernahm die MX Hauptlast (höher gewichtet)
- nftables
- MailScanner
- MailWatch (GUI)
- ClamAV mit OLE2BlockMacros true
- Eine Menge Anpassungen in einer spamassassin.conf.local, da häufte sich was an über 3 Jahre hinweg 🙂
- Viele zusätzliche RBLs, etc.
- Heinlein Rules Addon
- DCC, Razor
- Let’s Encrypt Zertifikate für Port 25
- ESETS File Scanner als 2. AV Scanner
- Postgrey
- OpenDKIM
- Bind9 – MailGateways sind ihre eigenen DNS Server
Alle diese Komponenten galt es nach Rspamd zu übertragen. Ich hatte meinem Chef vorgeschlagen, lass es uns einmal mit Rspamd versuchen. Wenn wir unzufrieden sind, können wir immer noch auf eine proprietäre Lösung wie FortiMail o.ä. umsteigen. Kleiner Spoiler: Bisher ist niemand mit Rspamd unzufrieden.
Rspamd im Unternehmensumfeld
Alles was du über Rspamd wissen musst im Unterschied zu Mailscanner: Es gibt keine Quarantäne. E-Mails werden entweder zugelassen oder abgelehnt. Ich bin ein absoluter Fan davon, denn verdammt nochmal ich habe sowas von keine Lust mehr E-Mails aus einer Quarantäne zu fischen um sie einem Mitarbeiter zu zustellen. Okay wer Mailcow nutzt hat wieder eine Quarantäne denn dort wurde sie dazu entwickelt, aber auch dort werden quarantänisierte Mails mit reject abgelehnt.
Aber wie schafft man den Umstieg auf eine Quarantäne-Lose Umgebung? Ist gar nicht schwer. Beispielsweise blocken wir als E-Mail Attachement schon seit 2018 mittels ClamAV jegliche Makros (OLE2BlockMacro true), egal ob gut oder böse. Zusätzlich haben wir anstelle ESET AntiVirus (ESETS File Security) inzwischen die FortiGate Firewall mit einem AntiVirus Profil davor geschaltet, das erkennt bösartige E-Mails deutlich öfters als ESET im File Scanning Modus, denn leider bietet der ESET File Scanner kein File/URL Reputation und schon gar kein Anti Phishing an.
Zudem kann die FortiGate recht viele Schweinereien in Zusammenhang mit MS Office oder PDF Dokumenten, nicht nur Makros entfernen sind möglich sondern auch eingebettete Dateien oder Links usw. können auf Wunsch entschärft werden. Also wozu braucht man dann noch eine E-Mail Quarantäne? Gar nicht! Okay, vielleicht noch für verschlüsselte Datei-Anhänge macht eine Quarantäne Sinn, aber dann könnte man die auch gleich ablehnen. Bei uns werden Mails mit verschlüsselten Datei-Anhängen inzwischen sehr hoch bepunktet, ein husten mehr und die Mail wird als SPAM abgelehnt.
Ich glaube es ist fast am Einfachsten, ich erkläre anhand einer Tabelle den Unterschied von vorher zu nachher. Also wie vorher die Umgebung mit MailScanner aussah und mit welchen Komponenten jetzt Rspamd übernimmt. Darauf aufbauend kann ich hinterher die neue Rspamd Server Umgebung erklären:
Mailscanner (die letzten 3 Jahre) | Rspamd (seit 11/2021) |
Ubuntu Server 18.04 LTS | Ubuntu Server 20.04 LTS |
Ansible | Ansible |
Postfix | Postfix |
MX unterschiedlich gewichtet | MX beide Server gleich gewichtet |
nftables | nftables |
MailScanner | Rspamd |
MailWatch | Rspamd GUI + Clickhouse + Redash GUI |
MySQL | Redis + Clickhouse DB |
ClamAV mit OLE2BlockMacros true | ClamAV mit OLE2BlockMacros true |
Let’s Encrypt Zertifikate | Comodo Zertifikate (jährliche) |
ESET File Scanner AV | FortiGate AV Profile |
Postgrey | Greylist in Rspamd Core |
OpenDKIM | DKIM in Rspamd Core |
Bind9 | Unbound |
Apache | Nginx |
Installation & Anpassungen für mehr Performance
Für die Umstellung auf die neuen Rspamd Server konnte ich den Postfix-Anteil komplett aus meinem Ansible Playbook übernehmen. Beim Postfix hat sich nichts verändert bis auf den Unterschied, dass jetzt Milter aktiv ist und nicht mehr die ^HOLD Queue von MailScanner. Milter stellt bei einem Ausfall von Rspamd automatisch auf Durchzug, lässt also im technischen Notfall alle E-Mails passieren.
Auch meine kleine, zusätzliche nftables Server-Firewall wurde übernommen. Darüber hinaus ist jetzt fast alles neu.
Für die Grundlegende Inbetriebnahme von Rspamd reichen die offiziellen Anleitungen aus. Dann hat man erstmal ein Rspamd from Scratch. Jetzt beginnt die Arbeit erst recht, zumindest wenn man sein Rspamd Unternehmenstauglich machen möchte.
Dass man in einem Unternehmen auf eine Automatisierung setzt ist ja wohl klar. Ich nehme Ansible, man kann aber alles nutzen was man möchte. Puppet, Chef, CFEngine, what you want. Ob Rspamd in einen Container verfrachtet werden soll oder nicht ist jedem selbst überlassen. Es gäbe da noch das Projekt grandiose Mailcow, ein dockerized rspamd mit zusätzlichen Features. Das könnte man sich vorher einmal anschauen. Für eine reine MailGateway Umgebung vor einem Exchange finde ich MailCow mit seinen Dovecot & Co Funktionen einen Overkill.
Rspamd und Hochverfügbarkeit
Zuerst sollte Rspamd auf ein Redis Backend umgestellt werden. Wenn kein Redis benutzt wird läuft Rspamd nur mit SQLite und das ist nicht unbedingt performant. Natürlich spielte ich länger mit dem Gedanken, Redis als Hochverfügbare Instanzen zu konfigurieren. Ich hatte Redis sogar schon umgebaut auf einen Aktiv-Passiv Unterbau. Für eine echte Hochverfügbarkeitslösung reicht das nicht. Dazu braucht man 3 Server, nicht nur 2. Dieses Redis HA nennt sich Redis Sentinel. Ja ich könnte auch auf 3 oder 4 oder mehr Rspamd Instanzen hoch skalieren, aber muss ich das?
Prinzipiell macht Redis als Sentinel Cluster für Rspamd Sinn, wenn man folgende Komponenten über alle Server synchron haben möchte:
- Bayesan Filter
- Fuzzy Storage
- Greylisting Module
- Reply Rescoring (-4)
- Mail History
Aber für die Rspamd GUI braucht man keine HA Datenbank. Die Rspamd GUI hinter Nginx kann alle historischen E-Mails von allen Servern anzeigen, dazu ruft die GUI mit nur einem Klick auf „Historie“ von beiden Servern die Historie als .json Datei ab. Also lässt sich Rspamd GUI ohne HA bedienen.
Bleibt noch das Problem der oben erwähnten Module, die nicht synchron sind. Ich war der Meinung, ich kann vorerst darauf verzichten und so lernt jeder Server für sich selbst den Bayesan Wortfilter und den Fuzzy Storage (Spamtraps). Ob das so bleibt werden die nächsten Monate und Jahre zeigen. Vielleicht baue ich es dann nach Bedarf doch noch auf einen Redis Sentinel Cluster um.
Falls hier ein Leser sich befindet der mehr als 10’000 Mails pro Minute scannen muss: Ja, Rspamd lässt sich bis in die Unendlichkeit skalieren. Schon ein Server kann sehr viele Mails pro Sekunde scannen, Rspamd ist von Grund für paralleles Scannen jeglicher Mails ausgelegt.
Rspamd besteht aus mehreren Prozessen (Main, Proxy, Controller, Fuzzy), die sich bei Bedarf allesamt auf unterschiedliche Server auslagern lassen. Wer sich ernsthaft für eine riesige Rspamd AntiSpam Lösung interessiert (und damit meine ich wirklich riesig, im Sinne von Großkonzern 100’000+ Mitarbeiter riesig), bekommt bei den Rspamd Entwicklern auf Anfrage auch professionelle Unterstützung.
Rspamd und persistente E-Mail History
Bevor ich in die technischen Details wie RBLs, DCC, Razor, Pyzor und so weiter abschweife muss ich einen Exkurs zum Thema E-Mail Historie starten. Rspamd speichert keine E-Mails Historie für immer ab, die Historie ist flüchtig! Ein Klick auf „Reset“ löscht alle E-Mail Metadaten aus Redis bzw. SQLite.
Ich hatte an diesem Thema etwas länger zu knabbern, denn wir nutzten MailWatch GUI von MailScanner in Vergangenheit als Suchmaschine um zu prüfen, ob gewisse Bestell-E-Mails mit ganz spezifischen Betreffs versendet wurden oder nicht. Man könnte die Postfix Logs länger speichern und durchsuchen, aber Postfix speichert Default mäßig keine Betreffs ab und so einen Hack wollte ich auch gar nicht dort einbauen.
Die vollständige Implementation der endgültigen Lösung dauerte ein paar Tage, hat sich aber gelohnt: Clickhouse als äußerst performante SQL Datenbank (eine Erfindung von Yandex) und Redash als GUI um historische E-Mails zu durchsuchen. Clickhouse soll bis zu 250x schneller sein als MySQL oder MariaDB, ist aber im Kern auch eine SQL Datenbank.
Meine Dashboard für die erweiterte E-Mail Analyse ist noch nicht perfekt, es ist eher eine Art „Rohansicht“. Ich bin kein SQL Profi, muss mir da nochmal einen SQL Entwickler auf Arbeit zu Hilfe holen. Insbesondere die Darstellung der Symbolen, was im Hintergrund ein Array ist in der Clickhouse DB, damit bin ich noch sehr unzufrieden. Aber schon jetzt sind alle unsere Business-Cases vollständig mit Clickhouse DB und Redash abgedeckt.
Um Rspamd nach Clickhouse schreiben zu lassen, muss nur das Rspamd Clickhouse Modul aktiviert werden. Ab jetzt schreibt Rspamd alle 60 Sekunden oder nach 1000 E-Mails die E-Mail History nach Clickhouse SQL DB. Vorher muss Clickhouse aus einem offiziellen Repository installiert werden. Clickhouse besteht aus clickhouse-server und clickhouse-client, letzteres ist eine Kommandozeilen Applikation um auf den Server zu verbinden & SQL Queries abzusetzen.
Tipp: Um die Rspamd Symbols.Names geloggt zu bekommen, muss man zwingend in der clickhouse.conf „enable_symbols = true;“ setzen. Diese Option fehlt in der default config, es gibt sie aber aber im LUA Code. Ich musste ein paar Stunden suchen bis endlich gefunden… 🙂
Ich habe Clickhouse als lokale Instanz auf beiden Mail Gateways direkt drauf installiert. Geht man diesen Weg, hat man zwei Möglichkeiten damit Redash beide Clickhouse DBs zeitgleich anzapft: Entweder über ein RemoteSecure Query, also mit nur einem Query in Redash werden letztendlich beide Clickhosue Instanzen abgefragt (Clickhouse TLS/SSL Ports aktivieren und nutzen!), oder man konfiguriert Clickhouse als Cluster, eine sogn. Distributed table.
Am Ende hat man mit recht wenig Aufwand unter einer einzigen Redas GUI zwei oder mehr Clickhouse Backends vereint. Ziel erreicht.
Rspamd verbessern (RBLs, DCC, Razor, Pyzor, usw.)
Rspamd bringt schon recht viele gute Spamchecks mit. Man kann bzw. muss aber noch deutlich mehr dazu schalten. Im Business Umfeld wird ein reines Rspamd ohne Tuning nicht zufriedenstellend Spam abwehren, dazu muss man sich schon mit der Software beschäftigen und die Module für sein Umfeld gerecht anpassen.
Ich überfliege gerade mein Ansible Playbook, da sind schon eine recht große Menge an Configs die ich setze oder überschreibe.
- name: Upload Rspamd Global Configs template: src: "{{ item }}.j2" dest: /etc/rspamd/{{ item }} with_items: - rspamd.conf.local - rspamd.local.lua notify: reload rspamd tags: rspamd - name: Upload worker-controller.inc to define RSPAMD WebGui Password template: src: worker-controller.inc.j2 dest: /etc/rspamd/local.d/worker-controller.inc notify: reload rspamd tags: rspamd - name: Create DKIM Subfolder file: path: /var/lib/rspamd/dkim state: directory tags: rspamd - name: Upload DKIM Key copy: src: fqdn.de.key dest: /var/lib/rspamd/dkim/fqdn.de.key backup: no notify: reload rspamd tags: rspamd - name: Upload all other KA specific configurations to local.d template: src: "{{ item }}.j2" dest: /etc/rspamd/local.d/{{ item }} notify: reload rspamd tags: - rspamd - rspamdmini with_items: - history_redis.conf - redis.conf - options.inc - fuzzy_check.conf - mime_types.conf - metrics.conf - antivirus.conf - rbl.conf - rbl_group.conf - fuzzy_group.conf - worker-proxy.inc - external_services.conf - spamassassin.conf - composites.conf - spamtrap.conf - multimap.conf - url_redirector.conf - dkim_signing.conf - settings.conf - clickhouse.conf - mime_types_group.conf - statistic.conf - phishing.conf - surbl.conf - name: Create subfolder maps.d file: path: /etc/rspamd/local.d/maps.d state: directory tags: rspamd - name: Create subfolder maps.d file: path: /etc/rspamd/local.d/maps.d state: directory tags: rspamd - name: Upload maps.d files template: src: "{{ item }}.j2" dest: /etc/rspamd/local.d/maps.d/{{ item }} notify: reload rspamd tags: - rspamd - rspamdmini with_items: - ip_whitelist.map - sender_from_whitelist.map - phishing_whitelist.inc - ip_blacklist_15.map - recipient_rcpt_whitelist.map
Puuuhh, ich könnte mit all diesen Anpassungen vermutlich bis zu 5 Blogposts füllen. Alleine wenn ich schreiben würde welche zusätzlichen RBLs ich verwende und welche davon gut oder schlecht sind wäre ein Blogpost wert. Oder meine immer mehr werdenden Composite Rules wäre auch eine ausführliche Erklärung wert, damit kann ich nochmals deutlich mehr SPAM abfangen.
Oder das Einbinden von den Heinlein Rules als SpamAssassin Backwards Compatibility File, das wäre doch auch interessant zu verbloggen, denn ich mag die Heinlein Rules (danke Heinlein 🙂 !). Oder DKIM, wie ich ausgehende E-Mails DKIM signiere, denn was vorher OpenDKIM machte mit MailScanner macht jetzt Rspamd nativ.
Wichtig finde ich generell überhaupt die folgenden Zusatz Tools (die hatte ich schon mit MailScanner benutzt):
- DCC (Super)
- Razor (Super)
- Pyzor (Naja so mäh..)
Oder die geniale Spamtrap-Funktion könnte ich mal im Detail erklären. Wir schreiben nämlich jetzt auch Mails an Spamtraps in den lokalen Fuzzy Storage. Zeitgleich verwenden wir 3 weitere Fuzzy Storages: Rspamd (default), Mailcow, demnächst auch mein eigener von schroeffu.ch.
Da fällt mir ein – was ich noch überhaupt nicht erwähnt habe ist unser Spezialfall, dass die Fortigate auch schon Spamchecks durchführt. Findet die vorgeschaltete Firewall eine Spam-Mail, so habe ich ihr eingeprügelt sie soll einen X-Spam-Extra-Header setzen. Sobald dieser Header von Rspamd gefunden wird, fügt Rspamd schonmal 14 Punkte hinzu. Vorteil: Rspamd ist die führende AntiSpam GUI, ich brauche dazu nicht auch noch zusätzlich den FortiAnalyzer im Auge behalten.
Und sonst sind es die Kleinen Anpassungen in Rspamd, die zu weniger Spam führen können. Ich setzte beispielsweise für öffentliche E-Mail Adressen bewusst eine niedrigere REJECT Score Punktezahl als für normale Mitarbeiter Mailboxen, denn bei den Öffentlichen landet ja auch der meiste Spam.
Von so einer öffentlichen Mailbox hat sich ein Mitarbeiter beschwert, er bekäme zuviel Spam. Das war schon mit Mailscanner so. Jetzt mit Redash konnte ich ihm ein Dashboard bauen wo er selbst mit verfolgen kann, wie viel Spam für ihn abgewehrt wurde. Ist das nicht schön?
Zumindest führt es zu mehr Verständnis, dass wenn mal eine Spam E-Mail durchrutscht nicht mehr das Gefühl aufkommt, man würde nichts tun. Oh doch, Rspamd tut ne ganze Menge!
Detaillierte Anleitungen erwünscht?
Besteht unter meinen Lesern Interesse an einer detaillierteren Erklärung wie meine Rspamd Umgebung ganz konkret konfiguriert wurde? Ich könnte mein Ansible Playbook zur Verfügung stellen oder zumindest alles was in den Playbooks steht als technische Anleitung verbloggen.
Manchmal bin ich etwas zwiegespalten, ob das Sinn macht, immerhin blogge ich nur deutschsprachig und das schränkt die Reichweite extrem ein, und damit stellt sich bei mir die Frage der Sinnhaftigkeit.
Wie viele Rspamd Administratoren in Deutschland, Schweiz, Österreich gibt es die Interesse haben an Rspamd + Clickhouse + Redash? Nur mich? 🙂 Hmm… Na dann sollte ich ja ernsthaft darüber nachdenken, in Zukunft englisch zu bloggen. Wouldn’t that be a good idea..
15 Kommentare
Markus · 29. November 2021 um 14:56
Hallo,
vielen Dank für den tollen und ausführlichen Beitrag. Ich selber nutze auch rspamd im kleineren Rahmen für eine Community. Wenn Du, gerne mehr zu dem Thema schreiben möchtest, würde ich mich für meinen Teil sehr freuen mehr Informationen zu dem spannenden Thema zu erhalten.
Peter · 22. Februar 2022 um 15:09
Hallo, es besteht meinerseits sehr großes Interesse an einer detaillierteren Erklärung wie deine Rspamd Umgebung ganz konkret konfiguriert wurde. Bitte blogge dazu mehr 😃🙏
Gern in Deutsch weiter zu Rspamd + Clickhouse + Redash.
Schroeffu · 23. Februar 2022 um 18:35
Danke für euer Feedback. In wenigen Tagen sind rund 1 Millionen Mails durch das neue Rspamd gescannt worden (aktiv seit 11/2021), ein guter Zeitpunkt den aktuellen Stand bzw. die Configs etwas detaillierter zu verbloggen. Ich kann leider nichts zeitlich versprechen, bemühe mich aber das in den nächsten Wochen hinzubekommen.
Ab 1.7.2022 werde ich wieder mehr Zeit ins Bloggen investieren, spätestens danach kommt ganz sicher mehr zum Thema. Rück-Umzug von DE die CH. Mehr Zeit für die wirklich wichtigen Sachen im Leben: Bloggen hihi 🙂
Peter · 3. März 2022 um 21:17
Hallo. Das Ansible-Playbook mit den Configs und vor allem den RBLs wäre im Voraus hilfreich. Ich bin gerade dabei, Rspamd neu aufzusetzen und würde gerne deine Ansätze (Anzahl der Server, Cluster, etc.) direkt anwenden. Bis 1.7. ist noch so laaang 😅.
Markus · 7. Mai 2022 um 22:39
Hallo,
spiele gerade mit dem Gedanken dennSpamfilter von einem externen Anbieter wieder zurück ins Haus zu holen.
Dafür wäre dein Playbook sicher eine große Hilfe.
Danke uns schöne grüsse aus Südtirol 😉
Michael · 13. Oktober 2022 um 22:48
Ich würde mich auch über Dein Playbook freuen, weil meine rspamd Version noch nicht ganz gereift ist wie es aussieht 😉
Schroeffu · 7. März 2023 um 17:06
Gerade hatten wir das Thema Rspamd auf Arbeit, da sehe ich mein nie eingelöstes Versprechen hier in den Kommentaren. Ich hatte euch das Playbook versprochen.. Wer Interesse hat kann sich gerne bei mir direkt melden.
Da ich seit dem Wechsel DE>CH keine grössere Rspamd-Umgebung mehr verwalte, ist mein Interesse an einem „perfekt konfigurierten“ Rspamd gesunken. Privat nutze ich Rspamd weiterhin gerne und problemlos, ärgere mich aber auch nicht wenn einmal im Quartal ein Spam durchrutscht, ist ja nur noch Privat. In meiner privaten Umgebung, da reden wir von 50-200 Mails pro Tag.
oetti · 11. April 2023 um 15:14
Super Beitrag!
Ich habe mir Hilfe von den Kollegen von Heinlein geholt und unseren Cluster ebenfalls per Ansible-Playbook installiert. Jetzt kämpfe ich mit der Visualisierung der Daten und überlege welche Kombination ich einsetze. So richtig viel findet man dazu leider nicht im Netz. Technisch kommen ja nur Rspamd + Elasticsearch + Kibana, Rspamd + Clickouse + Redash oder Rspamd + Clickhouse + Grafana in Frage. Hast du Lust, deine Queries oder Dashboards mal zur Verfügung zu stellen?
Schroeffu · 11. April 2023 um 15:45
Hallo Oetti,
muss dich leider enttäuschen, ich habedurch den Arbeigeberwechsel keinen Zugriff mehr auf die Queries von Redash nach Clickhouse. Woran ich mich noch gut erinnere, die Queries waren eine Art Dopppel-Abfrage an den clickhouse-Server1 mit der enthaltenen Query-Abfrage des Clickhouse-Server2 zeitgleich. Aber das war eine Clickhouse-Einstellungssache, man hätte auch in der clichouse.conf einstellen können, dass Queries immer gegen beide Server zeitgleich geschossen werden.
Generell gibt es manchmal hilfreiche Leute im Rspamd Telegram Channel (inkl. dem Hauptentwickler der dort öfters einmal mitliest), ich meine sogar ich habe dort ein Beispiel Query erhalten damals und dann alles daran abgeleitet. Sofern ich mich richtig daran erinnere.
Was noch in Frage käme wäre Rspamd + Clickhouse + Metabase. Ich war mit redash nicht ganz zufrieden bei den Möglichkeiten der Tabellen-Visualisierung, aber es gibt inzwischen auch neure Redash Versionen. Womöglich aber wird Metabase als Redash-Konkurrent öfters benutzt da draussen, daher könnte es damit besser klappen.
Viele Grüsse
Schroeffu
Schroeffu · 12. April 2023 um 11:16
Hallo Oetti, ich habe noch Beispiel Queries gefunden. Das waren Raw-Queries die man auch per commandline abschiesst, für Redash kann man sie aber davon ableiten.
#Beispiel Suche nach Betrff „test“ (lower case), Port 9000 unencrypted
select Action, TS, From, SMTPRecipients, Subject, Size, Score from rspamd WHERE lower(Subject) LIKE '%test%'
#Dasselbe über 2 remoteSecure clickhouse DBs, 1 query 2 Abfragen 1 zusammengefasste Antwort:
select Action, TS, From, SMTPRecipients, Subject, Size, Score from remote('$IP_ADDRESS$:9000,$IP_ADDRESS$:9000', default.rspamd) WHERE lower(Subject) LIKE '%test%';
#Beispiel Suche nach Betrff „test“ (lower case), Port 9440 encrypted (configure Port 9440 on clickhouse with SSL Certs before)
select Action, TS, From, SMTPRecipients, Subject, Size, Score from remoteSecure('$IP_ADDRESS$:9440,$IP_ADDRESS$:9440', default.rspamd, 'default', 'SET_PASSWORD_HERE_FROM_PASSWORD_VAULT') WHERE lower(Subject) LIKE '%test%';
Für 2 Abfragen in einem Query muss config.xml beinhalten: https://seafile.schroeffu.ch/f/05c0a03080b04823857a/
Anstatt im Query 2 Server anzugeben, könnte man m.E. auch das Feature Distributed Tables nutzen, was ich aber nie machte. https://clickhouse.com/docs/en/engines/table-engines/special/distributed
oetti · 12. April 2023 um 12:35
Super, danke dafür. Das schaue ich mir mal an.
Martin · 25. Juli 2023 um 18:20
Hallo
Mit Rspamd habe ich gerade angefangen. Wir setzen als Mail-Server SmarterMail ein und Rspamd wird auf vielseitigen Wunsch unterstützt. Detaillierte Anleitungen wären echt der Hit.
Der Support von Rspamd läuft tatsächlich mit Telegram, was eher mühsam ist. Zudem darf man da nicht allzuviel erwarten und eilig darf man es nicht haben.Ich möchte dann auch gerne eigene Regeln schreiben. Ich merke nun, dass das Projekt Rspamd vermutlich ein grösseres Abenteuer geben wird.
Grüsse aus dem Zürioberland
Andre · 7. August 2023 um 17:41
Hi,
danke für den Beitrag!
Ich stelle meinen Mailserver aktuell auf Rspamd um. Hab vorher auch ESET genutzt.
Zwei Fragen:
1. Wie kommt man günstig auf die Lizenzen von FortiGate AV Profile? Auf deren Seite habe ich kein Produkt mit diesem Namen gefunden.
2. Nur aus Neugier. Was hat denn an Let’s Encrypt Zertifikaten gestört?
LG
Andre
Schroeffu · 7. August 2023 um 19:50
Ahoi Andre,
Zu 1.) Meines Wissens gibt es das FortiGate AV Profil nur im Preis einer FortiGate mit FortiGuard Lizenz inklusive, einen separaten Installer für AV unter Linux oder ähnliches gibt es meines Wissens nicht. Oder inklsive in der Lizenz FortiMail/FortiProxy/FortiSonstWas, bei uns waren es einfach die Firewall FortiGate + Standard Lizenz.
Zu 2.) Das Aufbrechen der eingehenden Mails übernahm die FortiGate, damals FortiOS 6.x, meines Wissens unterstützte diese damals noch keine LetsEncrypt Zertifikate. Seit FortiOS 7.0x sollte ACME klappen. Auf den Mail Gateways selbst konnte man auf selfsigned wechseln.
Vieli Grüess
Schroeffu
Michael · 14. Oktober 2023 um 13:51
Hi,
wie hast du das mit dem SPAM-Trap und dem eigenen Fuzzy-Storage gelöst?
Grüße Michael