Dies war meine endgültige Lösung nach Recherche und Hilfe von @tarleb
Meine E-Mail-Zustellung erfolgte über ein sendmail
Programm, das meiner E-Mail einige zusätzliche Header hinzufügte. Ich könnte einen Mitter (E-Mail-Filter) verwenden, um eingehende E-Mails zu filtern und die sendmail
Verwendung zu löschen. Ich habe mich jedoch entschlossen, für die Zustellung auf Dovecot LDA zu wechseln.
Mein ursprünglicher Filter war zu Beginn von Postfix master.cf
:
smtp inet n - - - - smtpd -o content_filter=spamassassin
Und am Ende der Datei:
spamassassin unix - n n - - pipe
user=debian-spamd argv=/usr/bin/spamc -f -e
/usr/sbin/sendmail -oi -f ${sender} ${recipient}
Ich habe das Ende der Datei geändert, um die lokale Übermittlung von Dovecot zu verwenden:
spamassassin unix - n n - - pipe
flags=DROhu user=vmail:vmail argv=/usr/bin/spamc -f -e
/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
Bearbeiten Sie nun die Postfixes main.cf
und fügen Sie sie hinzu (optional, aktivieren Sie (3) unten):
spamassassin_destination_recipient_limit = 1
Jetzt wird Ihre E-Mail ohne Änderungen an den Headern über Dovecot LDA zugestellt. Für die Neugierigen hier einige Details zu meiner Konfiguration:
- Diese Konfiguration kann mit Trennzeichen für Plusadressierung / Unteradressierung / Empfänger verwendet werden (E-Mails, an die adressiert
[email protected]
wird, werden in den [email protected]
Posteingang gesendet). Aus diesem Grund habe ich hinzugefügt -d ${user}@${nexthop}
, dass das +
und alles bis zur Domain entfernt wird. Um diese Funktion zu aktivieren, auch sicher sein hinzuzufügen recipient_delimiter = +
in main.cf
;
- Meine Flaggen
flags=DROhu
fügen nichts Ungewöhnliches hinzu, aber sie können hier verstanden werden: http://www.postfix.org/pipe.8.html ;
spamassassin_destination_recipient_limit = 1
ist erforderlich, um sicherzustellen, dass jeder Empfänger von Spamassassin individuell verarbeitet wird. Dies ist aufgrund des D
obigen Flags erforderlich (einschließlich X-Original-To
Header). Wenn Sie die D
Flagge haben und keine spamassassin_destination_recipient_limit = 1
E-Mail mit mehreren Zielen festlegen, wird diese nicht zugestellt! Wenn Sie sich nicht für diesen Header interessieren, können Sie das Flag entfernen und dies wird nicht benötigt.
Bearbeiten: Bonusinhalt - Verschieben Sie Ihren SPAM in den Junk
Ordner!
Sie können Dovecot auch so konfigurieren, dass als SPAM erkannte E-Mails in den Junk
IMAP-Ordner verschoben werden . Dies wird Ihnen mit Sicherheit das Leben leichter machen. Folgen Sie einfach diesem:
Bearbeiten /etc/dovecot/conf.d/15-mailboxes.conf
und kommentieren / fügen Sie den Junk
Ordner mit hinzu (sollte sich in dem namespace inbox
Abschnitt in der Nähe befinden mailbox Trash
):
mailbox Junk {
special_use = \Junk
}
Installieren dovecot-sieve
mit apt-get install dovecot-sieve
;
Bearbeiten /etc/dovecot/conf.d/90-sieve.conf
und kommentieren Sie die Zeile:#sieve = ~/.dovecot.sieve
Bearbeiten /etc/dovecot/conf.d/90-plugin.conf
als:
plugin {
sieve = /etc/dovecot/sieve/default.sieve
}
Bearbeiten /etc/dovecot/conf.d/15-lda.conf
und /etc/dovecot/conf.d/20-lmtp.conf
anpassen:
protocol lda/lmtp { # do not copy/paste this line!
mail_plugins = $mail_plugins sieve
}
WARNUNG : Möglicherweise haben Sie andere Einstellungen unter der protocol
Auswahl, behalten Sie diese bei. Die Zeile protocol lda/lmtp
ändert sich in den Dateien, behalten Sie das Original.
Ordner erstellen /etc/dovecot/sieve/
Datei /etc/dovecot/sieve/default.sieve
mit folgendem Inhalt erstellen :
require "fileinto";
if header :contains "X-Spam-Flag" "YES" {
fileinto "Junk";
}
Ändern Sie die Ordnerberechtigungen für Ihren virtuellen E-Mail-Benutzer und Ihre Gruppe wie folgt : chown vmail:vmail /etc/dovecot/sieve/ -R
. Wenn Sie diesen Taubenschlag verpassen, wird sich beschweren!
Starten Sie alles neu: service postfix restart; service dovecot restart; service spamassassin restart
Versuchen Sie, eine E-Mail an eine E-Mail auf dem Server (von einem externen Server) zu senden, zuerst eine normale E-Mail und dann eine andere mit diesem Betreff : XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
. Die zweite E-Mail sollte in den Junk
Ordner und die erste in Ihren Posteingang.
Wenn dies beim ersten Versuch nicht funktioniert, sehen Sie sich die Protokolle an: tail -f /var/log/mail.log
und senden Sie die E-Mail, während sie ausgeführt tail
wird. Ein gut funktionierendes Setup sollte stored mail into mailbox 'INBOX'
oder melden stored mail into mailbox 'Junk'
.
Received
Header, nur dieX-Spam-*
Header werden hinzugefügt ... Warum und wie?/usr/sbin/sendmail
.)