ManageSieve in public Folder

Moin,

aufbauend auf meine letzte Anfrage habe ich mir das Sieve-Plugin von
Dovecot installiert und damit herumgespielt. Das Plugin ist im Prinzip
das was ich suche. Damit ich die Regeln leichter erstellen kann, habe
ich mir einen Sieve-Client installiert (um genau zu sein läuft in einer
Jail Roundcube als Webgui für IMAP, und für Roundcube habe ich ein
Sieve-Clientplugin installiert).

Wie kann ich Sieve-Regeln auf Public-Folder anwenden? Der Grund warum
ich das gerne machen würde: Ich möchte Mails per getmail holen und per
„dovecot-lda -m Public.foobar“ in den Public-Folder foobar einsortieren
lassen. Dort soll dann von Dovecot die Sieveregel ausgeführt werden,
die Mails bestimmten (virtuellen) Usern zuteilt. Beispiel: Es kommt
eine Mail an frank.ebert@foo.bar. Diese wird von getmail über
dovecot-lda in den Ordner Public.foobar gestellt. Eine Sieve-Regel
erkennt, dass ich der Empfänger bin und stellt mir eine Kopie zu.

Regeln anlegen funktioniert mit dem Client wunderbar. Nur leider eben
nur auf die User-Maildirs. Geht das überhaupt? Gibt es elegantere
Lösungen für mein Vorhaben?

Gruß Frank

  • 18. November 2013

  • Frank Ebert

  • 13 Antworten

  1. Tobi sagt:

    Am 18.11.2013 19:34, schrieb Frank Ebert:
    > Moin,
    >
    > aufbauend auf meine letzte Anfrage habe ich mir das Sieve-Plugin von
    > Dovecot installiert und damit herumgespielt. Das Plugin ist im Prinzip
    > das was ich suche. Damit ich die Regeln leichter erstellen kann, habe
    > ich mir einen Sieve-Client installiert (um genau zu sein läuft in einer
    > Jail Roundcube als Webgui für IMAP, und für Roundcube habe ich ein
    > Sieve-Clientplugin installiert).
    >
    > Wie kann ich Sieve-Regeln auf Public-Folder anwenden? Der Grund warum
    > ich das gerne machen würde: Ich möchte Mails per getmail holen und per
    > „dovecot-lda -m Public.foobar“ in den Public-Folder foobar einsortieren
    > lassen. Dort soll dann von Dovecot die Sieveregel ausgeführt werden,
    > die Mails bestimmten (virtuellen) Usern zuteilt. Beispiel: Es kommt
    > eine Mail an frank.ebert@foo.bar. Diese wird von getmail über
    > dovecot-lda in den Ordner Public.foobar gestellt. Eine Sieve-Regel
    > erkennt, dass ich der Empfänger bin und stellt mir eine Kopie zu.
    >
    > Regeln anlegen funktioniert mit dem Client wunderbar. Nur leider eben
    > nur auf die User-Maildirs. Geht das überhaupt? Gibt es elegantere
    > Lösungen für mein Vorhaben?
    >
    > Gruß Frank
    >
    >
    > _______________________________________________
    > Dovecot Mailingliste
    > JPBerlin – Politischer Provider
    > Dovecot@listen.jpberlin.de
    > https://listen.jpberlin.de/mailman/listinfo/dovecot
    ist es keine Option dem getmail gleich den korrekten Empfänger
    (virtueller User) anzugeben?

    • Frank Ebert sagt:

      Moin,
      > ist es keine Option dem getmail gleich den korrekten Empfänger
      > (virtueller User) anzugeben?

      Doch, wäre es. Das war auch der erste Weg, den ich mir überlegt hatte.
      Das geht jedoch nur, wenn ich so etwas wie einen „Fallback“-Ordner
      habe: Mails die zB an info@ oder nonexistend.User@ gehen, sollen dann
      in den Public-Folder. Ich habe keine Option gefunden, wie ich das
      konfigurieren kann.

      Gruß und Danke
      Frank

  2. Peer Heinlein sagt:

    Am 18.11.2013 19:34, schrieb Frank Ebert:

    > Regeln anlegen funktioniert mit dem Client wunderbar. Nur leider eben
    > nur auf die User-Maildirs. Geht das überhaupt? Gibt es elegantere
    > Lösungen für mein Vorhaben?

    Richte einen Dummy-User ein und lege die mail_location vom Public-Folder
    in das Maildir des Dummy-Users.

    Peer


    Heinlein Support GmbH
    Schwedter Str. 8/9b, 10119 Berlin

    http://www.heinlein-support.de

    Tel: 030 / 405051-42
    Fax: 030 / 405051-19

    Zwangsangaben lt. §35a GmbHG: HRB 93818 B / Amtsgericht
    Berlin-Charlottenburg,
    Geschäftsführer: Peer Heinlein — Sitz: Berlin

    • Frank Ebert sagt:

      > Richte einen Dummy-User ein und lege die mail_location vom
      > Public-Folder in das Maildir des Dummy-Users.

      Schöne Idee! Das teste ich.

      Gruß Frank

      • Frank Ebert sagt:

        > > Richte einen Dummy-User ein und lege die mail_location vom
        > > Public-Folder in das Maildir des Dummy-Users.
        >
        > Schöne Idee! Das teste ich.

        Der Test ist durch. Es funktioniert leider nicht wie geplant. Die
        Publicfolder müssen ja noch ein Unterverzeichnis haben. Also
        geht /home/vmail/dummy/Maildir nicht.

        Ich kann mir irgendwie nicht vorstellen, dass mein Vorhaben so
        ungewöhnlich ist bzw. ein catch-all mit virtuellen Usern nicht
        funktioniert?! Ich hoffte, dass ich über sieve auf procmail verzichten
        kann.

        Gruß Frank

        • Werner Flamme sagt:

          —–BEGIN PGP SIGNED MESSAGE—–
          Hash: SHA1

          [20.11.2013 21:08] [Frank Ebert]:
          >>> Richte einen Dummy-User ein und lege die mail_location vom
          >>> Public-Folder in das Maildir des Dummy-Users.
          >>
          >> Schöne Idee! Das teste ich.
          >
          > Der Test ist durch. Es funktioniert leider nicht wie geplant. Die
          > Publicfolder müssen ja noch ein Unterverzeichnis haben. Also geht
          > /home/vmail/dummy/Maildir nicht.

          Wer stellt bei Dir zu? Ich habe in /etc/dovecot/15-lda.conf die Einträge

          lda_mailbox_autocreate = yes
          lda_mailbox_autosubscribe = yes
          protocol lda {
          mail_plugins = $mail_plugins sieve
          }

          > Ich kann mir irgendwie nicht vorstellen, dass mein Vorhaben so
          > ungewöhnlich ist bzw. ein catch-all mit virtuellen Usern nicht
          > funktioniert?! Ich hoffte, dass ich über sieve auf procmail
          > verzichten kann.

          Meine Sieve-Regeln in ~/.dovecot.sieve funktionieren jedenfalls 🙂

          saacht Werner

          – —

          —–BEGIN PGP SIGNATURE—–
          Version: GnuPG v2.0.19 (GNU/Linux)
          Comment: Using GnuPG with Thunderbird – http://www.enigmail.net/

          iQEcBAEBAgAGBQJSjhQcAAoJEOfJ7bNoiiCNLFkH+we95z6nGVXcQm5Y8kDiLrFV
          Gn47+DKAEHFcfEZy3RDRxEDCyKRxWKkLP0PXJLVcFaGw9TgHDnOVOb5kCMOr3Pi4
          X5JCwU3xKss1+OBR/WHX+YNUaYkD0uz8J1JExax3zbVy4YkkdPxWcIWC1fKWdv8y
          LmyeNKopJSAiRTP+k1DylhQAbi+V9WfH01DiCdjkY+PU6gHvgHFdhcmqZeX7XU3C
          rT+CtlWWc8D5+Ghk24DVji2PNzqY5qJe6qeCWpKwb1uNSfkT7qEOY8I83Y567Ol7
          lRX1gX9bsY2JnfucGaaZuFYmLwBI/dnHsypWbG14oZQRj8AMBwBFfFScWzM//tQ=
          =Vli6
          —–END PGP SIGNATURE—–

          • Frank Ebert sagt:

            —–BEGIN PGP SIGNED MESSAGE—–
            Hash: SHA1

            Hi,

            sorry für die späte Rückmeldung. Ich hatte jedoch einen Fehler in der
            Konfiguration gefunden, den ich zuerst lösen wollte: Ich konnte mich
            wegen einer falschen passdb-Konfiguration mit einem falschen
            Kennwort/ohne Kennwort einloggen. Ist aber nun behoben.

            > Wer stellt bei Dir zu? Ich habe in /etc/dovecot/15-lda.conf die
            > Einträge

            Das kommt darauf an. Interne Mails werden von Postfix an lmtp
            übergeben. Die Mails um die es mir jetzt hier geht, werden von getmail
            an dovecot-lda übergeben.

            >
            > lda_mailbox_autocreate = yes
            > lda_mailbox_autosubscribe = yes
            > protocol lda {
            > mail_plugins = $mail_plugins sieve
            > }

            Meine Konfiguration ist bei „protocol lda“ identisch. Die beiden ersten
            Zeilen sind bei mir noch (aus)kommentiert. Es geht jedoch um eine
            bestehende Mailbox, kann hier also nicht das Problem sein. Ich überlege
            dennoch mal, ob ich die Funktion auch brauchen kann.

            > Meine Sieve-Regeln in ~/.dovecot.sieve funktionieren jedenfalls 🙂

            Meine Sieve-Regeln an sich funktionieren auch. Ich habe es jetzt auch
            insgesamt anders gelöst, auch wenn das eher ein hässlicher Workaround
            ist: getmail stellt mit dovecot-lda die Mails an einen eigenen User zu.
            Dort werden dann sieve-Regeln ausgeführt: Für jeden User eine eigene
            Regel (die Mail wird damit zum User verschoben) und eine
            „Auffangregel“, die alle anderen Mails in den Public-Folder schiebt.

            Hässlich, aber funktioniert. Ich sehe mir trotzdem nochmal den
            Vorschlag von Tobi an. Da gibt es sicherlich auch einen Weg. Ich muss
            ihn nur finden 🙂

            Gruß und Danke
            Frank
            —–BEGIN PGP SIGNATURE—–
            Version: GnuPG v2.0.22 (FreeBSD)

            iEYEARECAAYFAlKR6GEACgkQp4BsMlunaLkpDgCeJG178hXZtCclgpKaau5QFxdN
            R0UAnA/qIA+1MQJ9rVadT1O68A8MI7El
            =dgOC
            —–END PGP SIGNATURE—–

          • Frank Ebert sagt:

            —–BEGIN PGP SIGNED MESSAGE—–
            Hash: SHA1

            Hi nochmal,

            > Das kommt darauf an. Interne Mails werden von Postfix an lmtp
            > übergeben. Die Mails um die es mir jetzt hier geht, werden von getmail
            > an dovecot-lda übergeben.

            Wen auch immer es interessiert… 🙂 Das habe ich nun umgestellt.
            Getmail übergibt an procmail, procmail erstellt ein lockfile und cached
            mit formail -D die Message-ID, was den Vorteil hat, dass die Mails
            nicht mehrfach an den selben Empfänger ausgeliefert werden, wenn
            mehrere Empfänger im To-Feld stehen. Direkt danach wird das
            sendmail aufgerufen, das zu Postfix gehört (mit -oi -t), womit das
            Zustellproblem gelöst ist. Ich muss jetzt zwar für jede Mailadresse im
            Active Directory einen Benutzer anlegen, das hat allerdings den
            Vorteil, dass ich weg von dem Catch-all komme.

            Viele Grüße
            Frank
            —–BEGIN PGP SIGNATURE—–
            Version: GnuPG v2.0.22 (FreeBSD)

            iEYEARECAAYFAlKSMh8ACgkQp4BsMlunaLkkpwCfTWM0CWUDogJgLvNwnyrYvrTW
            OR4AmwXZngrZdGAtFQSN3okbia2/HCZC
            =c4Pz
            —–END PGP SIGNATURE—–

          • Peer Heinlein sagt:

            Am 20.11.2013 15:09, schrieb Frank Ebert:

            >>> Richte einen Dummy-User ein und lege die mail_location vom
            >>> Public-Folder in das Maildir des Dummy-Users.
            >>
            >> Schöne Idee! Das teste ich.

            > Der Test ist durch. Es funktioniert leider nicht wie geplant. Die
            > Publicfolder müssen ja noch ein Unterverzeichnis haben.

            Ich habe das eben extra nochmal nachgebaut. Das klappt. Wunderbar.
            Einwandfrei.

            Den Satz „müssen ja noch ein Unterverzeichnis haben“ verstehe ich nicht.
            Der Public-Namespace ist ein ganz normales Maildir.

            > Also geht /home/vmail/dummy/Maildir nicht.

            Doch. Genau das geht und liegt auch genau so vor mir.

            Peer


            Heinlein Support GmbH
            Schwedter Str. 8/9b, 10119 Berlin

            http://www.heinlein-support.de

            Tel: 030 / 405051-42
            Fax: 030 / 405051-19

            Zwangsangaben lt. §35a GmbHG: HRB 93818 B / Amtsgericht
            Berlin-Charlottenburg,
            Geschäftsführer: Peer Heinlein — Sitz: Berlin

          • Frank Ebert sagt:

            > >>> Richte einen Dummy-User ein und lege die mail_location vom
            > >>> Public-Folder in das Maildir des Dummy-Users.
            > >>
            > >> Schöne Idee! Das teste ich.
            >
            > > Der Test ist durch. Es funktioniert leider nicht wie geplant. Die
            > > Publicfolder müssen ja noch ein Unterverzeichnis haben.
            >
            > Ich habe das eben extra nochmal nachgebaut. Das klappt. Wunderbar.
            > Einwandfrei.
            >
            > Den Satz „müssen ja noch ein Unterverzeichnis haben“ verstehe ich
            > nicht. Der Public-Namespace ist ein ganz normales Maildir.

            Ich habe insgesamt nur virtuelle Benutzer, die sich via ldap an einem
            Active Directory authentifizieren sollen. Die userdb-Abfrage gibt als
            Wert den Zielpfad zurück den Dovecot verwenden soll. Bei
            mir dann im Ergebnis zB /home/vmail/dummy/Maildir/. Als prefix für den
            Public-Folder habe ich Public/ konfiguriert. Die location ist derzeit
            mit „maildir:/home/vmail/public“ konfiguriert. Damit die User Zugriff
            auf die Public folger haben, muss ich Unterverzeichnisse
            von /home/vmail/public anlegen. zB /home/vmail/public/.oeffentlich

            Unterhalb von .oeffentlich gibt es dann die üblichen
            Maildirverzeichnisse (cur/new etc). Ich habe nun aufgrund deines
            Vorschlages die location in ein Verzeichnis eines Users gelegt:
            „location = maildir:/home/vmail/dummy/public“.

            > > Also geht /home/vmail/dummy/Maildir nicht.
            >
            > Doch. Genau das geht und liegt auch genau so vor mir.

            Woher weiß dann dovecot welche Public-Folder ich haben möchte?
            in /home/vmail/dummy/Maildir liegt ja nur new/cur etc. Oder ignoriert
            dovecot diese und ich muss die Verzeichnisse dort anlegen? Das habe ich
            tatsächlich nicht getestet, weil es ungewöhnlich aussieht. Ich teste
            das, sobald die passdb-Abfrage funktioniert. Derzeit kann sich nur ein
            einziger User authentifizieren. Die anderen bekommen „invalid
            credentials“, obwohl die Berechtigungen im AD die selben sind. Aber ich
            finde den Grund noch 🙂

            Ich glaube der Groschen ist gerade gefallen: Der Prefix Public/ ist gar
            nicht der „Foldername“ sondern wird von Dovecot „virtuell“ (nicht auf
            Dateisystemebene) erzeugt, richtig?

            Gruß und Danke fürs Nachbauen! 🙂
            Frank

          • Peer Heinlein sagt:

            Am 27.11.2013 19:10, schrieb Frank Ebert:

            > Ich habe insgesamt nur virtuelle Benutzer, die sich via ldap an einem
            > Active Directory authentifizieren sollen. Die userdb-Abfrage gibt als
            > Wert den Zielpfad zurück den Dovecot verwenden soll. Bei
            > mir dann im Ergebnis zB /home/vmail/dummy/Maildir/. Als prefix für den

            Es ist KEINE gute Idee das „Maildir“ schon als Ergebnis der
            userdb-Abfrage ausgeben zu lassen. Setze das sauber (wie die Beispiele
            zeigen!!!!) in mail_location.

            Du brauchst ein sauberes $HOME, weil auch Sieve-Scripte und andere auf
            $HOME verweisen (sieve_dir=~/sieve) u.a.

            Ich kann nur dringend empfehlen Beispiele und Beispielkonfigurationen
            ERNST zu nehmen. Die meisten Leute haben Probleme und kämpfen WEIL sie
            Beispielconfigs gedankenlos abändern und die Konsequenzen nicht sehen.

            Das heißt in der userdb_Abfrage „home“ und nicht „mail_location“. Das
            hat einen Grund!

            > Public-Folder habe ich Public/ konfiguriert. Die location ist derzeit
            > mit „maildir:/home/vmail/public“ konfiguriert. Damit die User Zugriff
            > auf die Public folger haben, muss ich Unterverzeichnisse
            > von /home/vmail/public anlegen. zB /home/vmail/public/.oeffentlich

            /home/vmail/public ist ein Maildir.

            Da gibt es

            cur new und tmp

            und ggf. Unterordner wie „.oeffentlich“.

            > Unterhalb von .oeffentlich gibt es dann die üblichen
            > Maildirverzeichnisse (cur/new etc). Ich habe nun aufgrund deines
            > Vorschlages die location in ein Verzeichnis eines Users gelegt:
            > „location = maildir:/home/vmail/dummy/public“.

            Wieso denn „public“ am Ende?

            Lege es GENAU UND NUR in das Maildir-Verzeichnis des Users. Der besagte
            User hier wird als Maildir-Verzeichnis doch wohl kaum am Ende den Ordner
            „dummy“ haben.

            Setze hier

            location = maildir:/home/vmail/dummy/Maildir

            und gut ist.

            > Woher weiß dann dovecot welche Public-Folder ich haben möchte?
            > in /home/vmail/dummy/Maildir liegt ja nur new/cur etc. Oder ignoriert
            > dovecot diese und ich muss die Verzeichnisse dort anlegen? Das habe ich

            Weder noch. Alles, was im Maildir des Dummy-Users ist, ist Dein Public.

            Peer


            Heinlein Support GmbH
            Schwedter Str. 8/9b, 10119 Berlin

            http://www.heinlein-support.de

            Tel: 030 / 405051-42
            Fax: 030 / 405051-19

            Zwangsangaben lt. §35a GmbHG: HRB 93818 B / Amtsgericht
            Berlin-Charlottenburg,
            Geschäftsführer: Peer Heinlein — Sitz: Berlin

          • Frank Ebert sagt:

            > > Ich habe insgesamt nur virtuelle Benutzer, die sich via ldap an
            > > einem Active Directory authentifizieren sollen. Die userdb-Abfrage
            > > gibt als Wert den Zielpfad zurück den Dovecot verwenden soll. Bei
            > > mir dann im Ergebnis zB /home/vmail/dummy/Maildir/. Als prefix für
            > > den
            >
            > Es ist KEINE gute Idee das „Maildir“ schon als Ergebnis der
            > userdb-Abfrage ausgeben zu lassen. Setze das sauber (wie die Beispiele
            > zeigen!!!!) in mail_location.

            Ich glaube das ist vielmehr ungenaue Ausdruckweise meinerseits. (siehe
            unten)

            > Du brauchst ein sauberes $HOME, weil auch Sieve-Scripte und andere auf
            > $HOME verweisen (sieve_dir=~/sieve) u.a.
            >
            > Ich kann nur dringend empfehlen Beispiele und Beispielkonfigurationen
            > ERNST zu nehmen. Die meisten Leute haben Probleme und kämpfen WEIL sie
            > Beispielconfigs gedankenlos abändern und die Konsequenzen nicht sehen.
            >
            > Das heißt in der userdb_Abfrage „home“ und nicht „mail_location“. Das
            > hat einen Grund!

            Das hattest du ja bereits geschrieben, ich habe es genau so umgesetzt:
            user_attrs = sAMAccountName=home=/home/vmail/%$/

            und in 10-mail.conf:
            mail_location = maildir:~/Maildir

            Mit Zielpfad meinte ich vielmehr „%$“ bzw. das Ergebnis aus der
            Konfiguration und der Abfrage, also: /home/vmail/foobar/Maildir. Sorry
            für die Verwirrung!

            > > Unterhalb von .oeffentlich gibt es dann die üblichen
            > > Maildirverzeichnisse (cur/new etc). Ich habe nun aufgrund deines
            > > Vorschlages die location in ein Verzeichnis eines Users gelegt:
            > > „location = maildir:/home/vmail/dummy/public“.
            >
            > Wieso denn „public“ am Ende?

            Der Groschen ist erst vorhin gefallen. Ich hatte das „public“ am Ende
            als obligatorisch angesehen.

            > Lege es GENAU UND NUR in das Maildir-Verzeichnis des Users. Der
            > besagte User hier wird als Maildir-Verzeichnis doch wohl kaum am Ende
            > den Ordner „dummy“ haben.
            >
            > Setze hier
            >
            > location = maildir:/home/vmail/dummy/Maildir
            >
            > und gut ist.

            Verstanden! 🙂

            > > Woher weiß dann dovecot welche Public-Folder ich haben möchte?
            > > in /home/vmail/dummy/Maildir liegt ja nur new/cur etc. Oder
            > > ignoriert dovecot diese und ich muss die Verzeichnisse dort
            > > anlegen? Das habe ich
            >
            > Weder noch. Alles, was im Maildir des Dummy-Users ist, ist Dein
            > Public.

            Ok, unschön. Dennoch teste ich es. Die passdb-Abfrage läuft inzwischen,
            ich hatte tatsächlich eingeschränkte Berechtigungen des Users, wie es
            die Fehlermeldung gesagt hat (hier: „anmelden an“ war zu sehr
            eingeschränkt).

            Herzlichen Dank für deine Ausführen! Ich hoffe, dass nicht nur ich
            davon profitieren kann! 🙂

            Gruß Frank

          • Frank Ebert sagt:

            > > Setze hier
            > >
            > > location = maildir:/home/vmail/dummy/Maildir
            > >

            > Ok, unschön. Dennoch teste ich es. Die passdb-Abfrage läuft
            > inzwischen, ich hatte tatsächlich eingeschränkte Berechtigungen des
            > Users, wie es die Fehlermeldung gesagt hat (hier: „anmelden an“ war
            > zu sehr eingeschränkt).

            So, ich habe das nun getestet. Es funktioniert tatsächlich. So unschön
            ist das Ergebnis nicht, ich lasse es jetzt erstmal so! 🙂

            Gruß und Danke nochmal
            Frank