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:
- 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.
- 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. 🙂