getmail, procmail, dovecot, postfix

Columbo0815

Kaffeemann
Teammitglied
Hallo,

folgendes Szenario: Hier steht ein "Mailserver", dessen Aufgabe es ist, Mails in die Postfächer der Benutzer (Systemuser auf der FreeBSD-Kiste) zuzustellen und Mails nach extern über postfix (per relayhost) zu versenden. Die Mails werden von dovecot2 im Maildir-Format ($HOME/Maildir) vorgehalten. Zusätzlich habe ich in dovecot eine "Shared Mailbox" konfiguriert (public Mailbox), die in /var/mail/public/.Eingang liegt (ebenfalls Maildir-Format).

Beim Versand der (internen) Mails (über postfix) werden diese (von postfix) per dovecot-lda in die INBOXen der User zugestellt. Beim Versand von externen Mails wird über den relayhost versendet.

Da die Kiste nur per normaler ADSL-Leitung Zugang zum Internet hat, nimmt sie die Mails von extern natürlich nicht direkt entgegen. Ich möchte diese Mails (*@foo.bar) mit einem eigenen Account per getmail (pop3) abholen (der User holt ALLES ab) und danach mit "deliver" (/usr/local/libexec/dovecot/deliver) in die Public-Mailbox bzw. zu dem User direkt zustellen. Ich möchte also nicht, dass procmail direkt in das Maildir der jeweiligen User schreibt.

Die Mails von getmail an procmail übergeben ist kein Problem. Nur in der Dokumentation finde ich nichts darüber, wie ich die Mails von Procmail an deliver übergebe, damit dieser sie korrekt ausliefert. Hier: http://wiki2.dovecot.org/procmail gibt es zwar etwas darüber, das Problem hierbei ist aber, dass alles in die gleiche INBOX geht, was ich ja nicht möchte.

Ein kleines Beispiel, dass es vielleicht klarer macht: Es exisitiert user1, user2 und mailholer. mailholer ist auch ein Systemuser, der getmail per crontab aufruft und neue Mails holt. getmail übergibt die Mails an procmail. procmail nimmt die mail user1@foo.bar und legt sie in /home/user1/Maildir/ ab. Mails an user2@foo.bar gehen an /home/user2/Maildir/. Mails an info@foo.bar sollen in /var/mail/public/.Eingang/.

Wie kann ich das umsetzen? Gibt es Denkfehler/andere Ansätze?

Viele Grüße
 
Da die Kiste nur per normaler ADSL-Leitung Zugang zum Internet hat, nimmt sie die Mails von extern natürlich nicht direkt entgegen. Ich möchte diese Mails (*@foo.bar) mit einem eigenen Account per getmail (pop3) abholen (der User holt ALLES ab) und danach mit "deliver" (/usr/local/libexec/dovecot/deliver) in die Public-Mailbox bzw. zu dem User direkt zustellen. Ich möchte also nicht, dass procmail direkt in das Maildir der jeweiligen User schreibt.

Kann jetzt leider kein konkretes Setup geben aber soetwas habe ich mal mit fetchmail + dovecot gemacht. Schau dir das mal an.

Rob
 
Ich hatte getmail ursprünglich genommen, weil es Maildir unterstützt. Nach deinem Hinweis habe ich jedoch ein wenig zu fetchmail gelesen. Hört sich gut an und es scheint tatsächlich Lösungen hierfür zu geben. Jedoch gibt es für mich ein aber, dass ich aktuell auch nicht lösen kann:

Mit procmail kann ich nicht nur filtern sondern auch automatisiert Kopien zustellen (mit :0c). Das fehlt mir bei der fetchmail-Lösung bzw. ich habe keine Idee, wie ich das dort umsetzen könnte...

Danke dennoch für die Idee!
 
Durch den Tipp mit fetchmail habe ich den Grund gefunden, warum ich die Mails, die ich per getmail an procmail übergebe, nicht zustellen konnte. procmail ruft deliver mit den Berechtigungen des Users auf, mit dem ich getmail starte. Ich habe das jetzt per sudo geregelt.

Jetzt hängt es aktuell an der Zustellung in das Public-Maildir sowie ein paar kleinere Berechtigungsprobleme (ich nutze für das Public-Maildir die Funktion "per-User \seen"). Sobald das alles läuft und Interesse besteht, stelle ich gerne die Konfiguration zusammen.
 
So, kleines Update: Die Probleme sind behoben, die Sache läuft soweit ich das sehe rund. Danke KobRheTilla, der Tipp mit fetchmail hat mich zu meiner Lösung geführt, auch wenn ich fetchmail nicht einsetze sondern bei getmail geblieben bin. :)
 
Zurück
Oben