Jaja, ich hatte auch „Postfix und Cyrus mit Offentliche Ordner“ schreiben konnen, aber unter diese Begriffen sucht man ehr nach Problemlosungen

🙂

Ich habe damit jetzt noch mal ganz intensiv einen Tag lang gekampft und endlich funktioniert es.

Aufgabe: Offentliche Imap Ordner einrichten fur Mailkopien

Der Kunde wunschte eine Losung um Ausgehende Mails automatisch in Unterordner einsortieren zu lassen. Da dies mit Thunderbird nicht moglich ist,

wahlte ich eine globale Variante. Zwei Moglichkeiten ergaben sich mir:

  1. Mit Hilfe der Postfix Funktion „always_bcc = kopien@domain.foo“ die Mails auf einen Account laufen lassen und diese mit Sieve einsortieren.

Die User bekamen fur den Zugriff einen weiteren Imap Account.

Nachteile sind:

  • Jede Mail, also interne- , Fax-, Privat- und Systemmails würden kopiert

    werden.

  • Keine Rechtevergabe, jeder User hätte Vollzugriff

  • Zusätzliche Last für den Server

  • Auf Dauer nicht flexibel genug.

  1. Seit Postfix 2.1 gibt es die neuen Funktionen sender_bcc_maps und recipient_bcc_maps .

Damit lassen sich gezielt Mails kopieren und weiterverarbeiten.

Vorteile sind:

  • Gezieltes kopieren von Mails ganzer Domains od. nur einzelne.
  • Nutzbar für eingehende und ausgehende Mails
  • Geringere Systemlast
  • Hochflexibel
  • Rechtevergabe mir Cyrus-imapd ACL

Ich entschied mich für Variante Zwei. Das System bestand bereits aus Cyrus-Imapd,

Postfix und MySQL für die Userverwaltung. Hier also nun eine kleine Anleitung:

Cyrus-Imapd:

Mit cyradm die Ordner einrichten, Beispiel mit Kunden und Lieferanten:

Da ich ein Web-cyradm System

verwende, sehen meine Standard Konten so aus:

user/username.meine.foo

Es ist wichtig, das die offentlichen Ordner oberhalb von den normalen Benutzern angelegt werden, sonst lassen sie sich nicht abbonieren:

cm public.Kunden

cm public.Lieferanten

Damit jeder Mails hineinscheiben darf (auch Postfix), vergeben wir noch Rechte:

sam public.Kunden anyone p

sam public.Lieferanten anyone p

Und fur einen User vergeben wir vollstandige Rechte:

sam public.Kunden user.domain.foo all

sam public.Lieferanten user.meine.foo all

Eine sehr gute Einführung in Cyrus, findet sich hier auf http://www.linuxmaker.de

Nun melden wir uns per Imap auf den Server an und abbonieren die

neuen Ordner public.Kunden und public.Lieferanten. Dann werden die einzelnen Ordner angelegt, fur die jeweiligen Kunden und Lieferanten,

Beispielsweise mit Firmennamen, oder mit Domainnamen.

In cyradm, sollte das so aussehen:

public.Kunden (\HasChildren)

public.Kunden/Foo (\HasChildren)

public.Kunden/Foo/empfangen (\HasNoChildren)

public.Kunden/Foo/gesendet (\HasNoChildren)

public.Lieferanten (\HasChildren)

public.Lieferanten/Hello (\HasChildren)

public.Lieferanten/Hello/Empfangen (\HasNoChildren)

public.Lieferanten/Hello/Gesendet (\HasNoChildren)

Per Hand können wir schon Mails in die Ordner schieben/kopieren

und sie waren auf jedem Arbeitsplatz, verfugbar. Damit Postfix das aber alleine kann, mussen wir zwei neue Dateien in /etc/postfix/ anlegen:

touch /etc/postfix/{sender_bcc_maps,recipient_bcc_maps}

Diese Dateien werden nun gefullt, nach diesem Schema, Beispiel recipient_bcc_maps:

@domain.foo +public.Kunden/Foo/gesendet@meine.foo

Dies bedeutet, alle ausgehende Mails, die als Empfanger @domain.foo tragen, kommen in den offentlichen Ordner public.Kunden/Foo/gesendet. Fur

die sender_bcc_maps, gilt das selbe, jedoch fur eingehende Mails. Das + ist der recipient_delimiter, in der

/etc/postfix/main.cf , gibt es diesen nicht, muss er gesetzt werden :

recipient_delimiter = +

Wenn das + nicht gesetzt werden wurde, versucht Postfix die Mails an „user/public.Kunden/Foo/gesendet“ abzugeben.

Da es diesen Ordner nicht gibt, schlagt es mit „Mailbox not found“ fehl.

Sind die neuen Dateien gefullt worden, nicht vergessen mit:

postmap /etc/postfix/sender_bcc_maps

postmap /etc/postfix/recipient_bcc_maps

die Datenbank zu erstellen. Damit Postfix jetzt auch noch was von den neuen Maps weis, teilen wir ihm das nun in der /etc/postfix/main.cf mit:

sender_bcc_maps = hash:/etc/postfix/sender_bcc_maps

recipient_bcc_maps = hash:/etc/postfix/recipient_bcc_maps

Ein „postfix reload“ liest die neuen Dateien ein und es kann getestet werden. 🙂