Ich habe Postfix so eingerichtet, dass von SMTPD eingehende E-Mails automatisch durch Spamassassin gefiltert werden (das sie mit hinzugefügten Headern wieder in die Mailwarteschlange einfügt).
Jetzt möchte ich zwei Dinge mit Nachrichten tun, die als Spam betrachtet werden:
- Wenn die Mail wieder abgeschickt wird (aufgrund von Aliasnamen), verwerfen Sie die Mail sofort
- Wenn die E-Mail für einen lokalen virtuellen Benutzer bestimmt ist, leiten Sie sie an Dovecot weiter, das sie in den Spam-Ordner verschiebt.
Kann ich Postfix auf diese Weise konfigurieren? Alle meine Alias- und Benutzerinformationen befinden sich in MySQL. Derzeit lösche ich alle Spam-Mails (mit einem header_checks in main.cf), aber ich würde die obige Situation bevorzugen.
Antwort1
Sie könnten einen weiteren SMTP-Listener-Prozess in Ihrer Datei master.cf einrichten, um Ihre ausgehenden E-Mails zu verwalten. So etwas wie das Folgende sollte Ihnen den Einstieg erleichtern und einen Prozess einrichten, der auf Port 26 lauscht:
26 inet n - n - 18 smtpd -o header_checks=[your checks] mydestination= relayhost=
Möglicherweise müssen Sie dies leicht anpassen, um die lokale Zustellung zu deaktivieren und keine E-Mails von anderen Orten als dem lokalen Host anzunehmen. Sie sollten dann Folgendes zu Ihrer main.cf hinzufügen
relayhost=127.0.0.1:26
Und löschen Sie natürlich Ihre Header-Checks aus dieser Datei.
Ausgehende Mails werden an den zweiten SMTP-Prozess am 26 weitergeleitet, der dann als Spam erkannte Nachrichten verwirft. Sie können in diesem Listener auch einen Relayhost angeben, wenn Sie Ihre Mails an einen Downstream-Server weiterleiten müssen, anstatt sie direkt zuzustellen.
Anschließend können Sie die restliche Filterung für Ihre lokalen Benutzer mit Dovecot einrichten, wie Sie bereits vorgeschlagen haben.
Sie sollten dabei natürlich berücksichtigen, wie viele Mail-Hops Sie Ihrer Nachricht hinzufügen, da einige Mail-Provider Nachrichten mit einer beträchtlichen Anzahl von Hops löschen (Gmail zum Beispiel löscht sie nach etwa 10 oder 15