Speichern von Dovecot Sieve-Skripts mit SQL-Datenbank

477
sebap123

Ich bin nicht sicher, wie Dovecot für die Verwendung der SQL-Datenbank für die Siebspeicherung eingerichtet wird. Bisher habe ich Pigeonhole mit diesem Tutorial gefunden - https://wiki.dovecot.org/Pigeonhole/Sieve/Configuration/Dict

Ich verstehe die Idee hier, Wörterbuch mit Sieve-Skripts zu verwenden, die in der SQL-Datenbank gespeichert sind. Aber ein Satz ist mir nicht klar

Wie bei der flachen Datei muss die Datenbankabfrage das Sieve-Skript in einer Zeile zurückgeben. Andernfalls werden die nachfolgenden Zeilen ignoriert.

Ist es in diesem Fall also möglich, nur Siebskripte für die angegebene E-Mail abzurufen? Ich versuche einen Weg zu finden, um 100 verschiedene Skripte für 100 verschiedene E-Mails sagen zu lassen. So würden einige so aussehen:

require ["envelope", "fileinto", "mailbox"]; if envelope "To" "personal@example.com" { fileinto :create "Personal"; } 

ein anderer so

 require ["envelope", "fileinto", "mailbox"];  if envelope "To" "office@example.com"  { redirect :copy "office@example.net"; } 

Wäre aber immer Toanders.

1

1 Antwort auf die Frage

0
harrymc

Ich habe keine Umgebung, daher werde ich versuchen, auf der Grundlage allgemeiner Datenbankkenntnisse zu antworten. So verstehe ich die Dokumentation in Ihrem Link.

Ich glaube, dass sich die Dokumentation auf eine SQL-Datenbank (mit welchem ​​Produkt?) Bezieht, die mit der Verbindungszeichenfolge von verbunden ist:

host=localhost dbname=dovecot user=dovecot password=password 

Dies bedeutet, dass der Datenbankserver auf demselben Computer ausgeführt werden soll, die zu benennende Datenbank dovecotund über ein Benutzerkonto dovecot mit dem Kennwort von verfügt password. Ich gehe davon aus, dass diese geändert werden können, da der connectString ein aktualisierbarer Parameter des Skripts ist.

Die Datenbank sollte eine Tabelle mit dem Namen enthalten user_sieve_scripts, die möglicherweise ein Parameter ist, der aus der Konfigurationsdatei stammt.

Die Tabelle sollte zwei Spalten haben (möglicherweise auch Konfigurationsparameter):

  • username: Der zu durchsuchende Schlüssel, der in Ihrem Fall das to Feld wäre,
  • id : Die Spalte, die das zu verwendende Skript enthält.

Das Skript muss vollständig in der idSpalte enthalten sein, da nur ein Datenbankzugriff auf die Tabelle ausgeführt wird. Diese Spalte muss also groß genug sein, um das längste Skript aufzunehmen.

Die idSpalte enthält vermutlich Zeilenvorschübe zwischen Zeilen oder keine, wenn die Skriptsprache Zeilen mit mehreren Befehlen unterstützt (ich kenne dieses Produkt nicht gut genug).

Ich hoffe, das kann Sie in die richtige Richtung weisen.