[Gelöst] Sieve schickt Mails trotz Filter in die Inbox

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
Antworten
Benutzeravatar
Splendor
Beiträge: 41
Registriert: 14.02.2008 23:44:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: /home/splendor

[Gelöst] Sieve schickt Mails trotz Filter in die Inbox

Beitrag von Splendor » 27.11.2014 18:21:21

Hallo allerseits,

auf meinem Wheezy-Server laufen Postfix und Dovecot. Nun würde ich gerne die Mails mit Sieve filtern. Allerdings funktioniert das nicht. Meine Recherchen hier im Board und bei Tante Google haben mich leider auch nicht weitergebracht.

Die zuständigen Bereiche meiner dovecot.conf schauen so aus:

Code: Alles auswählen

protocols = imap pop3 sieve
mail_home = /var/vmail/%d/%n
lda_mailbox_autosubscribe = yes
lda_mailbox_autocreate = yes
protocol lda {
  auth_socket_path = /var/run/dovecot/auth-master
  mail_plugins = $mail_plugins sieve
  postmaster_address = postmaster@domain.de
}
plugin {
    sieve_before = /var/vmail/sieve/spamglobal.sieve
    sieve_dir = /var/vmail/sieve/scripts/%d/%n
}
Die Datei /var/vmail/sieve/spamglobal.sieve habe ich mit folgendem Inhalt angelegt

Code: Alles auswählen

require "fileinto";
if header :contains "X-Spam-Flag" "YES" {
  fileinto "Spam";
}
und mit sievec kompiliert, um später mal Spam automatisch wegzusotieren. Die Rechte für das Verzeichnis und die Dateien liegen bei vmail. So weit, so gut. Sollte man meinen.

Nun habe ich noch ManageSieve installiert und testweise via Thunderbird und Add-On einen Filter für max@mustermann.de geschrieben, der dessen Mails in den Ordner "Max" filtern soll:

Code: Alles auswählen

require ["fileinto"];
# rule:[Max]
if address :is "from" "max@mustermann.de"
{
	fileinto "Max";
}
Der Filter wird nun wie gewünscht auf dem Server im korrekten Verzeichnis erstellt, lässt sich editieren usw. Dummerweise landen die Mails von Max Mustermann immer noch in der Inbox.

Sieve scheint aber zu laufen. Im Log findet sich dazu folgendes:

Code: Alles auswählen

Nov 27 18:06:44 meinhost dovecot: lda(splendor@domain.de): sieve: msgid=<65665A0E.6080201@mustermann.de>: stored mail into mailbox 'INBOX'
Hat jemand eine Idee, wo hier der Fehler liegen könnte? Bin für jeden Hinweis dankbar! :?

Viele Grüße
Splendor
Zuletzt geändert von Splendor am 29.11.2014 18:24:28, insgesamt 1-mal geändert.

Benutzeravatar
weshalb
Beiträge: 1265
Registriert: 16.05.2012 14:19:49

Re: Sieve schickt Mails trotz Filter in die Inbox

Beitrag von weshalb » 28.11.2014 07:54:00

Du kannst tatsächlich Mails von der Adresse max@musterman.de empfangen oder verschicken?

Hier mal eine Sieveregel mittels Roundcube erstellt:

# rule:[Root]
if header :contains "From" "root@servername.fritz.box"
{
fileinto "root";
}

Benutzeravatar
Splendor
Beiträge: 41
Registriert: 14.02.2008 23:44:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: /home/splendor

Re: Sieve schickt Mails trotz Filter in die Inbox

Beitrag von Splendor » 28.11.2014 18:13:12

Moin,

besten Dank für Deine Antwort!
weshalb hat geschrieben:Du kannst tatsächlich Mails von der Adresse max@musterman.de empfangen oder verschicken?
Hehe... Nein, das war nur ein Beispiel. (Wäre aber tatsächlich schon fast spektakulär, diese Adresse.)
weshalb hat geschrieben: Hier mal eine Sieveregel mittels Roundcube erstellt:

# rule:[Root]
if header :contains "From" "root@servername.fritz.box"
{
fileinto "root";
}
An meinem Filter sollte es nicht liegen, der ist eigentlich korrekt.

Ich hab' aber jetzt mal die Logging Verbosity von Dovecot gefragt:

Code: Alles auswählen

mail_debug=yes
Und dann natürlich gesehen, dass bei Sieve noch nicht alles ganz koscher läuft. Hätte man ja auch vorher machen können. :roll:

Naja, vielleicht vergisst das ja vorher auch mal jemand und wird durch diesen Thread daran erinnert. :THX:

Ich gehe das alles noch mal durch und melde mich später mit einem ausführlichen Bericht.

Viele Grüße
Splendor

Benutzeravatar
Splendor
Beiträge: 41
Registriert: 14.02.2008 23:44:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: /home/splendor

Re: Sieve schickt Mails trotz Filter in die Inbox

Beitrag von Splendor » 29.11.2014 06:44:53

Guten Morgen!

So, da bin ich wieder. Ich habe das Dovecot-Wiki[1] nochmals studiert und alles neu geschrieben. Die zuständigen Stellen in der dovecot.conf schauen nun so aus:

Code: Alles auswählen

protocols = imap pop3 sieve
mail_home = /var/vmail/%d/%n
lda_mailbox_autosubscribe = yes
lda_mailbox_autocreate = yes
Das Plugin steht in der LDA-Konfiguration:

Code: Alles auswählen

protocol lda {
  auth_socket_path = /var/run/dovecot/auth-master
  mail_plugins = $mail_plugins sieve
  postmaster_address = postmaster@meinedomain.de
}
Das Sieve-Plugin ist wie folgt konfiguriert:

Code: Alles auswählen

plugin {
    sieve = /var/vmail/sieve/%d/%n/Default.sieve
    sieve_global_path = /var/vmail/sieve/global/global.sieve
    sieve_dir = /var/vmail/sieve/%d/%n/scripts
    sieve_global_dir = /var/vmail/sieve/global
    sieve_before = /var/vmail/sieve/global/global.sieve
}
Dann habe ich die Verzeichnisse vorbereitet:

Code: Alles auswählen

cd /var/vmail
mkdir sieve
cd sieve
mkdir global
cd global
Nun das Script für den globalen Filter (in dem Spam vorsotiert werden soll):

Code: Alles auswählen

nano global.sieve
Der Inhalt:

Code: Alles auswählen

require "fileinto";
if header :contains "X-Spam-Flag" "YES" {
  fileinto "Spam";
}
Kompiliert mit

Code: Alles auswählen

sievec global.sieve
Abschließend ein beherztes

Code: Alles auswählen

chown -R vmail:vmail /var/vmail/sieve/
sowie Neustart von Dovecot. Die Pakete dovecot-sieve und dovecot-managesieved sind natürlich schon vorher installiert gewesen.

Jetzt hat sich der User splendor@meinedomain.de mit Thunderbird plus Sieve-Add-On via ManageSieve am Server angemeldet und ein eigenes Script "Mailfilter" erstellt, um Mails vom User erna@meinedomain.de in den Ordner "Erna" so schieben:

Code: Alles auswählen

require ["fileinto"];
# rule:[Erna]
if address :is "from" "erna@meinedomain.de"
{
	fileinto "Erna";
}
Das Script wird wie gewünscht auf dem Server an folgendem Ort abgespeichert:

Code: Alles auswählen

/var/vmail/sieve/meinedomain.de/splendor/scripts/Mailfilter.sieve
Nun wird das Ganze mal getestet. Erna schickt mir eine E-Mail. Die Logfiles sagen:

Code: Alles auswählen

Debug: sieve: script file /var/vmail/sieve/meinedomain.de/splendor/Default.sieve not found
Debug: sieve: user's script /var/vmail/sieve/meinedomain.de/splendor/Default.sieve doesn't exist (using default script location instead)
Debug: sieve: executed before user's personal Sieve script(1): /var/vmail/sieve/global/global.sieve
Debug: sieve: using the following location for user's Sieve script: /var/vmail/sieve/global/global.sieve
Sieve findet also nicht die Datei Default.sieve. Ist ja auch logisch, da ich sie nie erstellt habe. Ich dachte aber, dass Dovecot bzw. Sieve sie ganz automatisch für mich erstellt und ich dann in Thunderbird den (leeren) Filter "Default" vorfinde und, sollte ich diesen nicht benutzen, dieser dann via Symlink auf den jeweils aktuellen Mailfilter verweist.

Aber statt dessen geht Sieve nach dieser Meldung auf den globalen Filter über und ignoriert den weiter oben mit Thunderbird und MagaeSieve erstellten.

Ich verstehe das nicht.

Wenn ich nun via Shell die Default.sieve erstelle und mit der Erna-Regel fülle, dann werden Ernas Mails natürlich gefiltert und in den gewünschten Ordner sortiert. Aber das kann ja nicht Sinn der Sache sein, denn so müsste ich für jeden User die Default.sieve händisch erstellen. Zudem müsste mir jeder User dann mitteilen, dass er ManageSieve nutzen möchte.

Und selbst dann kann der User "seine" Default.sieve nicht bearbeiten. Er sieht ja lediglich /var/vmail/sieve/%d/%n/scripts und die von ihm dort abgelegten Filter.

Sieve ignoriert alle selbst erstellten Filter, erstellt die Default.sieve nicht und macht aus dieser keinen Symlink auf die via ManageSieve in Thunderbird erstellten Filter.

Vielleicht hat ja von Euch noch jemand eine Idee, was hier falsch läuft, denn ich bin mit meinem Latein am Ende. Oder habe ich "sieve = /var/vmail/sieve/%d/%n/Default.sieve" komplett falsch verstanden? :?

Besten Dank für's Lesen! :THX: Bin für jede Hilfe dankbar! :hail:

Splendor

[1] http://wiki2.dovecot.org/Pigeonhole/Sieve

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Sieve schickt Mails trotz Filter in die Inbox

Beitrag von scientific » 29.11.2014 09:32:49

Ich stand gestern vor einem ähnlichen Problem...

In meiner 90-sieve.conf ist folgender Kommentar

Code: Alles auswählen

  # The path to the user's main active script. If ManageSieve is used, this the
  # location of the symbolic link controlled by ManageSieve.
  #sieve = ~/.dovecot.sieve
  sieve = /var/spool/dovecot/sieve/%n/%n.sieve
%n wird zu "User" aufgelöst. Die Frage, ob /var/spool/dovecot/sieve/User/User.sieve auch tatsächlich ein symbolischer Link ist, stellt sich nun.
Als es eine Datei war, funktionierte das Sieben nicht. Als es ein symbolischer Link war schon.

HTH
scientific

PS: Im Thunderbird-Sieve-Plugin wird in der Übersicht übrigens nicht der Name des symbolischen Links angezeigt, sondern der, des originalen Files!!!
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Sieve schickt Mails trotz Filter in die Inbox

Beitrag von rendegast » 29.11.2014 10:53:45

Einen Link

Code: Alles auswählen

/var/vmail/sieve/meinedomain.de/splendor/Default.sieve -> scripts/Mailfilter.sieve
?
(wird hier in der Kombination squirrelmail/avelsieve/dovecot-(manage)sieve -> scripts/phpscript.sieve automatisch erzeugt.
Dabei bekomme ich dann
/var/vmail/sieve/meinedomain.de/splendor/Default.svbin
)

require "fileinto";
pimpen?

Code: Alles auswählen

require ["fileinto","envelope","reject","vacation","imap4flags","relational","comparator-i;ascii-numeric","regex","body","date"];

plugin {
sieve = /var/vmail/sieve/%d/%n/Default.sieve
sieve_global_path = /var/vmail/sieve/global/global.sieve
sieve_dir = /var/vmail/sieve/%d/%n/scripts
habe ich hier in der Form

Code: Alles auswählen

plugin {
    sieve = ~/Default.sieve
    sieve_global_path = /var/vmail/sieve/global/global.sieve
    sieve_dir = ~/scripts

sieve_before = /var/vmail/sieve/global/global.sieve
Könnte nach dem Kommentar im template-Konfig auch als

Code: Alles auswählen

    sieve_before = /var/vmail/sieve/global
laufen, würde dabei alle in global/ liegenden Skripte ausführen.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
Splendor
Beiträge: 41
Registriert: 14.02.2008 23:44:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: /home/splendor

Re: Sieve schickt Mails trotz Filter in die Inbox

Beitrag von Splendor » 29.11.2014 18:23:42

Hallo ihr beiden,

vielen Dank für Eure Anregungen! :THX: :hail:

Ich hab' es jetzt doch geschafft. Und die Lösung ist so peinlich, dass ich sie hier eigentlich nicht hinschreiben sollte! :mrgreen:

Wie gesagt, ich hab – wie man das bei neuer Software so macht – brav die Dokumentation studiert etc. Und Sieve hat ja auch funktioniert. Nur hat Sieve nicht dafür gesorgt, dass der Symlink gesetzt wird:

Code: Alles auswählen

Default.sieve -> scripts/Mailfilter.sieve
Und wieso nicht? Na weil Sieve nicht dafür zuständig ist, sondern ManageSieve. Und ManageSieve macht ja herzlich wenig, wenn es nicht dazu aufgefordert wird. Da sollte man dann natürlich auch den via GUI erstellten Filter...hust...aktivieren...hust... :facepalm:

In Thunderbird gibt es ja einen kleinen grauen Pinöpel, der grün wird, wenn man draufklickt. :roll:

Klickt man drauf, wird der Symlink gesetzt. Deaktiviert man den Filter, wird er logischerweise wieder entfernt. :mrgreen:

So, das war's dann auch schon. Ich wünsche Euch ein schönes Wochenende! :D

Beste Grüße
Splendor

PS: Ein zweiter Fallstrick könnte übrigens das offenkundig nicht ganz so perfekt funktionierende ManageSieve-Plugin in Roundcube darstellen. Das hat aus
Von – ist gleich – erna@meinedomain.de
Nachricht verschieben nach – Erna
ein

Code: Alles auswählen

require ["fileinto"];
# rule:[Erna]
if header :is "from" "erna@meinedomain.de"
{
        fileinto "Erna";
}
gemacht. :roll: Aber das nur am Rande.

Benutzeravatar
Splendor
Beiträge: 41
Registriert: 14.02.2008 23:44:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: /home/splendor

Re: [Gelöst] Sieve schickt Mails trotz Filter in die Inbox

Beitrag von Splendor » 29.11.2014 18:42:14

@scientific und rendegast:

Eine kleine Sache ist mir trotzdem noch nicht klar geworden.

Sollte das Default-Script unter

Code: Alles auswählen

sieve = [...]
nicht automatisch erstellt werden? Dann könnte sich Dovecot doch die Meldung sparen, dass es nicht existiert (bei Usern, die keine eigenen Mailfilter installiert haben).

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: [Gelöst] Sieve schickt Mails trotz Filter in die Inbox

Beitrag von scientific » 29.11.2014 19:19:27

Ich muss gestehen, ich kenne mich mit dovecot noch sehr wenig aus, da ich erst gestern (also vor 24 Stunden) darauf umgestiegen bin...

Ich kämpfe noch mit IMAP-Verzeichnissen... die einen gibt es, die es nicht gibt, und die anderen, die es nicht gibt, gibt es... :)

Aber dein Problem konnte ich gestern bei mir schon erkennen und auch für mich lösen. :)

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Antworten