Hallo. Mein Mail-System: fetchmail, Postfix, Cyrus. Gnus verteilt per nnimap-split-rules die noch ungelesenen Mails in entsprechende Ordner auf dem Imap-Server. Das funktioniert hervorragend - trotzdem würde ich gerne procmail ausprobieren, zumal ich dann auch mit mutt dieselben Verhältnisse vorfinden würde (ungelesene Mails in verschiedenen Ordnern). Allerdings kenne ich procmail noch überhaupt nicht. Daher die Frage: kann ich zum Sortieren von Mails in unterschiedliche Ordner auf dem Imap-Server procmail benutzen? Wenn ja: wo und wie wird procmail da eingebaut? (sieve möchte ich nicht benutzen - das Regelwerk ist zu beschränkt) Regards/Grüße Christoph Werkhausen -- http://werkhausen.de
Hi Christoph, On 27 Dec 2001 at 15:07, Christoph Werkhausen wrote:
Mein Mail-System: fetchmail, Postfix, Cyrus.
Gnus verteilt per nnimap-split-rules die noch ungelesenen Mails in entsprechende Ordner auf dem Imap-Server.
Das funktioniert hervorragend - trotzdem würde ich gerne procmail ausprobieren, zumal ich dann auch mit mutt dieselben Verhältnisse vorfinden würde (ungelesene Mails in verschiedenen Ordnern).
Allerdings kenne ich procmail noch überhaupt nicht. Daher die Frage: kann ich zum Sortieren von Mails in unterschiedliche Ordner auf dem Imap-Server procmail benutzen? Wenn ja: wo und wie wird procmail da eingebaut?
Ja, kannst Du. Das 'Einbauen' ist auf mehreren Arten möglich. 1.) Du kannst jedem user eine .procmailrc in Sein ~ legen. 2.) Da sich ja gerade cyrus anbietet ein sealed System zu bauen, also die Mailbenutzerverwaltung von der Systembenutzerverwaltung zu trennen, könntest Du auch als eine generelle procmail bauen, welche dann wiederum auf einzelne Mailuser verweisst. Es gibt da jede Menge Möglichkeiten. Im Detail: mache procmail zu dem Programm welches Mail lokal ausliefert. Dafür sollte in Deiner master.cf sowas stehen: -- snipp -- procmail unix - n n - - pipe flags=R user=cyrus argv=/usr/bin/procmail -t -m USER=${user} EXT=${extension} /etc/procmailrc -- snapp -- Die letzten beiden Zeilen sind Eine. Eventuell musst Du Deine Pfade anpassen, ich kann das hier nicht ausprobieren, ich verwende sendmail. In Deine /etc/procmailrc oder ~/.procmailrc müssen jetzt entsprechende Regel gesetzt werden. Die gefilterte eMail wird dann dem cyrus-Eigenen Mailer 'deliver' übergeben. Aehm, ein Beispiel macht es vielleicht deutlicher: -- snipp -- DELIVERMAIL="/usr/cyrus/bin/deliver" FORMAIL="/usr/bin/formail" LOGFILE="/var/log/mails/jz.log" CYUSER="jz" SED="/bin/sed" IMAP="$DELIVERMAIL -e -a $CYUSER -m user.$CYUSER" FROM=`formail -x To:` TO=`formail -x From:` SUBJECT=`formail -x Subject:` STRIP="$FORMAIL -k" # erste Zeile des Headers fuer deliver abschneiden :0 fhw | $SED -e 1d # --- just 4 testing --- # :0 * ^Subject:.*teste procmail | $IMAP.tmp # alles andere ins Hauptpostfach :0 | $IMAP -- snapp -- mit freundlichen Grüßen Jörg Zimmermann ------------------------------------------- .xsiteing agentur für netzkommunikation 42117 wuppertal - friedrich-ebert-str. 141b tel: 0202/3097070 - fax: 0202/3097072
Hallo Jörg, vielen Dank für Deine Antwort. *** "Jörg Zimmermann" <j.zimmermann@xsiteing.de> wrote:
Im Detail: mache procmail zu dem Programm welches Mail lokal ausliefert. Dafür sollte in Deiner master.cf sowas stehen:
-- snipp -- procmail unix - n n - - pipe flags=R user=cyrus argv=/usr/bin/procmail -t -m USER=${user} EXT=${extension} /etc/procmailrc
Das stand in der master.cf ohnehin schon. Muss ich in der main.cf nicht noch mailbox_transport von cyrus auf procmail umstellen? Und kann ich in der master.cf statt /etc/procmailrc auch ~/.procmailrc nehmen?
sendmail. In Deine /etc/procmailrc oder ~/.procmailrc müssen jetzt entsprechende Regel gesetzt werden. Die gefilterte eMail wird dann dem cyrus-Eigenen Mailer 'deliver' übergeben.
Eine /etc/procmailrc existiert hier nicht. Ich habe eine .procmailrc in meinem ~ angelegt.
Aehm, ein Beispiel macht es vielleicht deutlicher:
-- snipp -- DELIVERMAIL="/usr/cyrus/bin/deliver" FORMAIL="/usr/bin/formail"
Die beiden Pfade sind hier identisch.
LOGFILE="/var/log/mails/jz.log"
jz steht bei Dir, nehme ich an, für Jörg Zimmermann.
CYUSER="jz"
Da mein user christoph ist, habe ich das entsprechend geändert.
SED="/bin/sed"
Liegt bei mir in /usr/bin - habe ich entsprechend geändert.
IMAP="$DELIVERMAIL -e -a $CYUSER -m user.$CYUSER"
Ich habe Postfix die diversen Änderungen einlesen lassen. Wenn ich in der main.cf den mailbox_transport auf cyrus lasse, bleibt alles beim alten, es wird also nichts sortiert. Kommentiere ich den Eintrag aus, landen die Mails in meiner mbox. Ändere ich den Eintrag auf procmail, landen Mails im Nirwana.
# erste Zeile des Headers fuer deliver abschneiden :0 fhw | $SED -e 1d
Braucht deliver das zwingend?
# --- just 4 testing --- # :0 * ^Subject:.*teste procmail | $IMAP.tmp
Nur, damit auch ich das verstehe: $IMAP.tpm ist in Deinem Beispiel auf dem Imap-Server der Ordner INBOX.tmp?
# alles andere ins Hauptpostfach :0 | $IMAP
Wäre dann INBOX? Tut mir leid, dass ich mich hier ein bisschen dumm anstelle... -- http://werkhausen.de
Hi Christoph, On 27 Dec 2001 at 17:50, Christoph Werkhausen wrote:
*** "Jörg Zimmermann" <j.zimmermann@xsiteing.de> wrote: Muss ich in der main.cf nicht noch mailbox_transport von cyrus auf procmail umstellen?
wie gesagt, ich verwende hier sendmail und kann's mit postfix nicht ausprobieren, aber AFAIR hast Du Recht.
Und kann ich in der master.cf statt /etc/procmailrc auch ~/.procmailrc nehmen?
ich denke nein, da ~ für postfix ja sein eigenes homes ist. Du kannst aber in der /etc/procmailrc für jeden Benutzer sowas machen: -- snipp -- # include files INCLUDERC=/etc/procmailrc/$CYUSER -- snapp -- Das setzt natürlich voraus, daß der user, also hier $CYUSER von Postfix an procmail übergeben wird. Wie gesagt, zur Konfiguration von Postfix kann ich fast nichts sagen.
sendmail. In Deine /etc/procmailrc oder ~/.procmailrc müssen jetzt entsprechende Regel gesetzt werden. Die gefilterte eMail wird dann dem cyrus-Eigenen Mailer 'deliver' übergeben.
Eine /etc/procmailrc existiert hier nicht. Ich habe eine .procmailrc in meinem ~ angelegt.
jaein. In der sendmail.cf wird procmail der recipient (user) übergeben. So weiss procmail erst welches das ~-Verzeichniss ist. Soetwas müsste es in der main.cf auch geben.
Aehm, ein Beispiel macht es vielleicht deutlicher:
-- snipp -- DELIVERMAIL="/usr/cyrus/bin/deliver" FORMAIL="/usr/bin/formail"
Die beiden Pfade sind hier identisch.
LOGFILE="/var/log/mails/jz.log"
jz steht bei Dir, nehme ich an, für Jörg Zimmermann.
CYUSER="jz"
Da mein user christoph ist, habe ich das entsprechend geändert.
ist ok.
SED="/bin/sed"
Liegt bei mir in /usr/bin - habe ich entsprechend geändert.
IMAP="$DELIVERMAIL -e -a $CYUSER -m user.$CYUSER"
Ich habe Postfix die diversen Änderungen einlesen lassen. Wenn ich in der main.cf den mailbox_transport auf cyrus lasse, bleibt alles beim alten, es wird also nichts sortiert. Kommentiere ich den Eintrag aus, landen die Mails in meiner mbox. Ändere ich den Eintrag auf procmail, landen Mails im Nirwana.
Ich denke das liegt daran, daß procmail den recipient nich von postfix übergeben bekommt. sao (Soll heissen, sie auch oben) Mhmm, es gab dieses Jahr einen Artikel zur Konfiguration von Postfix und cyrus und, soweit ich mich erinnern kann sogar mit amavis. Leider weis im Moment nicht mehr genau wo, möglich wären ( Linux Magazin, IX,CT, Linux user ..). In der Reihenfolge.
# erste Zeile des Headers fuer deliver abschneiden :0 fhw | $SED -e 1d
Braucht deliver das zwingend?
AFAIR ja.
# --- just 4 testing --- # :0 * ^Subject:.*teste procmail | $IMAP.tmp
Nur, damit auch ich das verstehe: $IMAP.tpm ist in Deinem Beispiel auf dem Imap-Server der Ordner INBOX.tmp?
ja.
# alles andere ins Hauptpostfach :0 | $IMAP
Wäre dann INBOX?
yep.
Tut mir leid, dass ich mich hier ein bisschen dumm anstelle...
Ganz im Gegenteil:) mit freundlichen Grüßen Jörg Zimmermann ------------------------------------------- .xsiteing agentur für netzkommunikation 42117 wuppertal - friedrich-ebert-str. 141b tel: 0202/3097070 - fax: 0202/3097072
Hallo Jörg. On Thu, 27 Dec 2001 21:49:01 +0100 Jörg Zimmermann wrote:
On 27 Dec 2001 at 17:50, Christoph Werkhausen wrote:
Tut mir leid, dass ich mich hier ein bisschen dumm anstelle...
Ganz im Gegenteil:)
Zunächst: nochmal vielen Dank für Deine Hilfe. Und dann: es läuft! Hier die Konfiguration für postfix - procmail - cyrus inkl. amavis (falls jemand das gleiche versuchen sollte): in /etc/postfix/main.cf: mailbox_transport = procmail in /etc/postfix/master.cf (Achtung: Zeilen umbrochen!): smtp inet n - n - - smtpd localhost:10025 inet n - n - - smtpd -o content_filter= pickup unix n n n 60 1 pickup cleanup unix - - n - 0 cleanup qmgr unix n - n 300 1 qmgr tlsmgr fifo - - n 300 1 tlsmgr rewrite unix - - n - - trivial-rewrite bounce unix - - n - 0 bounce defer unix - - n - 0 bounce flush unix - - n 1000? 0 flush smtp unix - - n - - smtp showq unix n - n - - showq error unix - - n - - error local unix - n n - - local lmtp unix - - n - - lmtp cyrus unix - n n - - pipe flags=R user=cyrus argv=/usr/cyrus/bin/deliver -e -m ${extension} ${user} uucp unix - n n - - pipe flags=F user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient) ifmail unix - n n - - pipe flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient) bsmtp unix - n n - - pipe flags=F. user=foo argv=/usr/local/sbin/bsmtp -f $sender $nexthop $recipient vscan unix - n n - 10 pipe user=vscan argv=/usr/sbin/amavis ${sender} ${recipient} procmail unix - n n - - pipe flags=R user=cyrus argv=/usr/bin/procmail -t -m USER=${user} EXT=${extension} /etc/procmailrc folgende /etc/procmailrc angelegt: DELIVERMAIL="/usr/cyrus/bin/deliver" FORMAIL="/usr/bin/formail" LOGFILE="/var/log/imap/$USER.log" IMAP="$DELIVERMAIL -e -a $USER -m user.$USER" FROM=`formail -x To:` TO=`formail -x From:` SUBJECT=`formail -x Subject:` STRIP="$FORMAIL -k" INCLUDERC=/home/$USER/.procmailrc EXITCODE= :0w | $DELIVERMAIL -a $USER -e -q -m $EXTENSION $USER :0w | $DELIVERMAIL -a $USER -e -q $USER :0 e { EXITCODE=$? HOST } eine ~/.procmailrc angelegt mit Einträgen wie: :0 * ^X-Mailinglist: suse-linux | $IMAP.privat.maillists.suse :0 * ^X-Mailinglist: suse-applix | $IMAP.privat.maillists.suse-applix :0 * ^X-Mailinglist: suse-isdn | $IMAP.privat.maillists.suse-isdn :0 * ^X-Mailinglist: suse-multimedia | $IMAP.privat.maillists.suse-multimedia (Da sind wohl noch überflüssige Einträge drin, z.B. FROM, TO usw. Oder werden die intern noch irgendwo gebraucht?) Dann noch Postfix die neue Konfiguration einlesen lassen: rcpostfix reload (als root) und schon funktioniert es. Also nochmal vielen Dank für Deine Anregungen. -- http://werkhausen.de
participants (2)
-
Christoph Werkhausen
-
Jörg Zimmermann