Wie arbeiten Exim4 und Spamassassin zusammen?
Wie arbeiten Exim4 und Spamassassin zusammen?
Für die Konfiguration gibt es zahlreiche Anleitungen und Beschreibungen zu finden. Aber nirgendwo habe ich gesehen, wie die Sache jetzt genau funktioniert.
Früher (wenn ich das richtig verstanden habe) lief das so:
- Exim leitete eingehende E-Mails an Spamassassin weiter (transport_filter = /usr/bin/spamc)
- Spamassassin fügte die Headerzeile "spam-scanned" hinzu und schickte die E-Mail wieder an Exim
- Exim stellte fest, dass die E-Mail bereits gescannt ist und verarbeitete sie je nach Spam-Punkten
Aber jetzt gibt es nur noch eine Zeile:
- spamd_address = 127.0.0.1 783
Was passiert da genau?
Hintergrund meiner Frage ist, dass ich gerade von Squeeze auf Stretch umstelle. Inzwischen läuft bei mir (fast) alles, auch mein selbstgebasteltes Filter-Plugin funktioniert schon wieder, aber die Befehle zum Einfügen von zusätzlichen Header-Zeilen ( $pms->set_tag () ) sind wirkungslos.
Irgend etwas scheint da anders zu laufen als früher. Leider sind längst nicht alle Anleitungen auf dem neuesten Stand. Man muss ja schon froh sein, wenn irgendwo "dieser Text enthält zum Teil überholte Informationen" steht.
Früher (wenn ich das richtig verstanden habe) lief das so:
- Exim leitete eingehende E-Mails an Spamassassin weiter (transport_filter = /usr/bin/spamc)
- Spamassassin fügte die Headerzeile "spam-scanned" hinzu und schickte die E-Mail wieder an Exim
- Exim stellte fest, dass die E-Mail bereits gescannt ist und verarbeitete sie je nach Spam-Punkten
Aber jetzt gibt es nur noch eine Zeile:
- spamd_address = 127.0.0.1 783
Was passiert da genau?
Hintergrund meiner Frage ist, dass ich gerade von Squeeze auf Stretch umstelle. Inzwischen läuft bei mir (fast) alles, auch mein selbstgebasteltes Filter-Plugin funktioniert schon wieder, aber die Befehle zum Einfügen von zusätzlichen Header-Zeilen ( $pms->set_tag () ) sind wirkungslos.
Irgend etwas scheint da anders zu laufen als früher. Leider sind längst nicht alle Anleitungen auf dem neuesten Stand. Man muss ja schon froh sein, wenn irgendwo "dieser Text enthält zum Teil überholte Informationen" steht.
Re: Wie arbeiten Exim4 und Spamassassin zusammen?
Wenn ich diese Seite https://www.exim.org/exim-html-current/ ... _time.html richtig verstehe, kann man überhaupt keine eigenen Headerzeilen mehr einfügen, denn es gibt nur noch die aufgelisteten fünf Variablen, über die Spamassassin den Exim über zusätzliche Headerzeilen informiert.
Ich müsste eigene Headerzeilen also an die Variable $spam_report dranhängen.
Sehe ich das so richtig, oder gibt es doch noch einen anderen Weg?
Ich müsste eigene Headerzeilen also an die Variable $spam_report dranhängen.
Sehe ich das so richtig, oder gibt es doch noch einen anderen Weg?
Re: Wie arbeiten Exim4 und Spamassassin zusammen?
Du hast viele Fragen formuliert, lass mich mal mit Antworten und möglichen Lösungen beginnen:
Deinen "früheren" Weg kannst du nach wie vor weiterhin problemlos einsetzen:
Letztendlich musst du entscheiden, an welcher Stelle du Spamassassin für dich einsetzt, beide Varianten sind möglich, beide Varianten haben Ihre Vor- und Nachteile.
Deinen "früheren" Weg kannst du nach wie vor weiterhin problemlos einsetzen:
Plenz hat geschrieben:19.02.2019 00:08:19Früher (wenn ich das richtig verstanden habe) lief das so:
- Exim leitete eingehende E-Mails an Spamassassin weiter (transport_filter = /usr/bin/spamc)
- Spamassassin fügte die Headerzeile "spam-scanned" hinzu und schickte die E-Mail wieder an Exim
- Exim stellte fest, dass die E-Mail bereits gescannt ist und verarbeitete sie je nach Spam-Punkten
Darüber hast du die Möglichkeit, wenn du sie nutzen möchtest, den Spam-Erkennung innerhalb des SMTP-Dialoges (DATA-Phase) zu nutzen, den Weg gibt es übrigens auch schon in Jessie (Exim 4.84).Plenz hat geschrieben:19.02.2019 00:08:19Aber jetzt gibt es nur noch eine Zeile:
- spamd_address = 127.0.0.1 783
Letztendlich musst du entscheiden, an welcher Stelle du Spamassassin für dich einsetzt, beide Varianten sind möglich, beide Varianten haben Ihre Vor- und Nachteile.
Re: Wie arbeiten Exim4 und Spamassassin zusammen?
Danke für deine Antwort. Mir geht es hauptsächlich darum, mein eigenes Plugin eigene Headerzeilen hinzufügen zu lassen, das wäre meine wichtigste Frage. Wenn das mit der alten Methode einfacher ist als mit der neuen Methode, dann werde ich es so machen wie früher.
Re: Wie arbeiten Exim4 und Spamassassin zusammen?
Ich würde einfach die alte Methode weiter verwenden.
Re: Wie arbeiten Exim4 und Spamassassin zusammen?
Danke für die Ermutigung
Es klappt leider nur teilweise. Die zusätzlichen Headerzeilen von meinem Plugin werden jetzt einwandfrei hinzugefügt. Aber die entscheidende Zeile mit "spam-scanned" wird NICHT eingebaut. Die Folge ist, dass die E-Mail wieder und wieder gescannt wird, bis Exim dank eines weisen Programmierers das Drama abbricht, wenn der Header zu viele Received-Zeilen enthält.
Da mein alter Server noch läuft, kann ich alle möglichen Einstellungen vergleichen, aber ich finde keine Unterschiede.
Die oberste Received-Zeile sollte so lauten:
Received: from mail by <SERVERNAME> with spam-scanned (Exim 4.80 #2 (Debian))
aber sie lautet jetzt:
Received: from mail by <SERVERNAME> with local-bsmtp (Exim 4.89)
Hast du trotz kaputter Kristallkugel eine spontane Idee?
Ich könnte natürlich auch mein Plugin eine Headerzeile mit "spam-scanned" einfügen lassen, aber wirklich sauber wäre das nicht...

Es klappt leider nur teilweise. Die zusätzlichen Headerzeilen von meinem Plugin werden jetzt einwandfrei hinzugefügt. Aber die entscheidende Zeile mit "spam-scanned" wird NICHT eingebaut. Die Folge ist, dass die E-Mail wieder und wieder gescannt wird, bis Exim dank eines weisen Programmierers das Drama abbricht, wenn der Header zu viele Received-Zeilen enthält.
Da mein alter Server noch läuft, kann ich alle möglichen Einstellungen vergleichen, aber ich finde keine Unterschiede.
Die oberste Received-Zeile sollte so lauten:
Received: from mail by <SERVERNAME> with spam-scanned (Exim 4.80 #2 (Debian))
aber sie lautet jetzt:
Received: from mail by <SERVERNAME> with local-bsmtp (Exim 4.89)
Hast du trotz kaputter Kristallkugel eine spontane Idee?
Ich könnte natürlich auch mein Plugin eine Headerzeile mit "spam-scanned" einfügen lassen, aber wirklich sauber wäre das nicht...
Re: Wie arbeiten Exim4 und Spamassassin zusammen?
Kannst du deine Exim4.conf posten? Dann kann ich da mal einen Blick drauf werfen.
Re: Wie arbeiten Exim4 und Spamassassin zusammen?
Herzlichen Dank für dein Angebot
Die Datei ist jedoch zu groß, um hier hochgeladen zu werden. Ich beschränke mich erst mal auf zwei Ausschnitte:

Die Datei ist jedoch zu groß, um hier hochgeladen zu werden. Ich beschränke mich erst mal auf zwei Ausschnitte:
Code: Alles auswählen
#####################################################
### router/110_exim4-config_spamassassin_check
#####################################################
### router/110_exim4-config_spamassassin_check
#################################
# SpamAssassin
spamcheck_director:
driver = accept
condition = "${if and { {!def:h_X-Spam-Flag:} {!eq {$received_protocol}{spam-scanned}} {!eq {$received_protocol}{local}} } {1}{0}}"
retry_use_local_part
transport = spamcheck
no_verify
# do not use this director when verifying a local-part at SMTP-time
# When to scan a message :
# - it isn't already flagged as spam
# - it isn't already scanned
# - it didn't originate locally (as long as I don't harbor spammers :-))
spamkill_director:
driver = accept
check_local_user
condition = "${if def:h_X-Spam-Flag: {1}{0}}"
transport = spamkill
no_verify
newsletter_director:
driver = accept
check_local_user
condition = "${if eq {$h_X-Spam-Paul-Marker:} {NEWSLETTER}}"
transport = markernewsletter
no_verify
facebook_director:
driver = accept
check_local_user
condition = "${if eq {$h_X-Spam-Paul-Marker:} {FACEBOOK}}"
transport = markerfacebook
no_verify
#####################################################
### end router/110_exim4-config_spamassassin_check
#####################################################
Code: Alles auswählen
#####################################################
### transport/20_exim4-config_spamsassassin
#####################################################
spamcheck:
driver = pipe
envelope_to_add
batch_max = 100
command = /usr/sbin/exim4 -oMr spam-scanned -bS
current_directory = "/tmp"
group = mail
home_directory = "/tmp"
log_output
message_prefix =
message_suffix =
return_fail_output
no_return_path_add
transport_filter = /usr/bin/spamc
use_bsmtp
user = mail
# must use a privileged user to set $received_protocol
# in the second exim process!
spamkill:
driver = appendfile
file = ${if and {{exists{/home/${local_part}/mail/SpamTrash}} \
{eq {$h_X-Spam-Paul-Exhopp:}{NO}} \
} \
{/home/${local_part}/mail/SpamTrash} \
{/var/mail/trash} \
}
group = ${if and {{exists{/home/${local_part}/mail/SpamTrash}} \
{eq {$h_X-Spam-Paul-Exhopp:}{NO}} \
} \
{${local_part}} {mail} \
}
mode = 0664
no_mode_fail_narrower
return_path_add
user = ${if and {{exists{/home/${local_part}/mail/SpamTrash}} \
{eq {$h_X-Spam-Paul-Exhopp:}{NO}} \
} \
{${local_part}} {trash} \
}
markerfacebook:
driver = appendfile
file = ${if exists{/home/${local_part}/mail/Facebook} \
{/home/${local_part}/mail/Facebook} \
{/var/mail/${local_part}} \
}
group = ${if exists{/home/${local_part}/mail/Facebook} \
{${local_part}} {mail} \
}
mode = 0664
no_mode_fail_narrower
return_path_add
user = ${if exists{/home/${local_part}/mail/Facebook} \
{${local_part}} {mail} \
}
markernewsletter:
driver = appendfile
file = ${if exists{/home/${local_part}/mail/Newsletter} \
{/home/${local_part}/mail/Newsletter} \
{/var/mail/${local_part}} \
}
group = ${if exists{/home/${local_part}/mail/Newsletter} \
{${local_part}} {mail} \
}
mode = 0664
no_mode_fail_narrower
return_path_add
user = ${if exists{/home/${local_part}/mail/Newsletter} \
{${local_part}} {mail} \
}
#####################################################
### end transport/20_exim4-config_spamassassin.results
#####################################################
Re: Wie arbeiten Exim4 und Spamassassin zusammen?
Ist der User "mail" in der Option trusted_users enthalten?
Re: Wie arbeiten Exim4 und Spamassassin zusammen?
Das war's, vielen Dank!
Genau diese Sache hatte ich auch schon im Auge gehabt, aber da die Einbindung des Spamassassins über "spamd_address = 127.0.0.1 783" ja funktionierte, ohne dass man an trusted_user etwas machen musste, war ich davon wieder abgekommen, weil ich annahm, das funktioniert alles, weil (wie die Zeile ".ifndef MAIN_TRUSTED_USERS" suggeriert) diese Definition irgendwo anders gesetzt wird.
Auf deinen Hinweis habe ich noch mal in der alten Config nachgeschaut, und da steht "trusted_users = mail". Diese Zeile in die neue Config eingefügt, und nun läuft alles wie gewünscht.

Genau diese Sache hatte ich auch schon im Auge gehabt, aber da die Einbindung des Spamassassins über "spamd_address = 127.0.0.1 783" ja funktionierte, ohne dass man an trusted_user etwas machen musste, war ich davon wieder abgekommen, weil ich annahm, das funktioniert alles, weil (wie die Zeile ".ifndef MAIN_TRUSTED_USERS" suggeriert) diese Definition irgendwo anders gesetzt wird.
Auf deinen Hinweis habe ich noch mal in der alten Config nachgeschaut, und da steht "trusted_users = mail". Diese Zeile in die neue Config eingefügt, und nun läuft alles wie gewünscht.