Nach Empfänder-Domain ordnen mit Procmail - wie geht das?

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
Antworten
Archmage
Beiträge: 138
Registriert: 11.08.2003 03:15:01

Nach Empfänder-Domain ordnen mit Procmail - wie geht das?

Beitrag von Archmage » 22.08.2003 05:23:35

Ich habe nach der Anleitung hier: http://home.arcor.de/hm-gerhards/linux/how08.html (die sogar ein Anfänger wie ich verstanden habe) eine Fetcmail -> Exim -> Procmail -> Spamassasin -> Procmail - Cyrus - Konsturktion aufgesetzt, die eigentlich perfekt funktioniert.

Nun möchte ich aber für jede Email-Adresse nicht einen anderen Benutzer anlegen. (Also Hans1 für hans@gmx.de, Hans2 für hans@web.de und Hans3 für hans@lycos.de) sondern alle Email-Adresse des Benutzers in ein Postfach abholen (das geht per fetchmail) und dann über Procmail sortieren. So das ich nur Hans brauche, der aber Unterordner names GMX, WEB und Lycos hat in denen die entsprechenden Mails ankommen. Und das klappt leider nicht. :(

Ich dachte, dass ich alle Mails die "Received: from eupop.mail.spray.net [212.78.202.250]" (oder gibt es da eine bessere Möglichkeit die Mails zu sortieren?) haben einfach z.B. in die Mailbox Lycos schiebe. Das klappt aber leider nicht mit dem Eintrag:

Code: Alles auswählen

#In die Lycos Box
:0
* ^Received: from eupop.mail.spray.net [212.78.202.250]
| /bin/sed 1d | $LYCOS

# bei Fehler zurück in die Queue
:0 e
{ EXITCODE=75 HOST }
Wo liegt mein Fehler - könnt ihr mir helfen?

Zur besseren Übersicht hier noch mal die ganze /etc/procmailrc-Datei:

Code: Alles auswählen

# /etc/procmailrc
#
# Zuerst einige allgemeine Definitionen:
# 
# cyrdeliever sortiert die Mails in die Cyrus-Mailboxen ein:
DELIVERMAIL="/usr/sbin/cyrdeliver"
#
# Das Logfile, in das Fehlermeldungen etc. geloggt werden:
LOGFILE="/var/log/mail/procmail.log"
#
# Damit die procmailrc übersichtlicher bleibt, vergeben wir
# "Kurznamen" für einige Zustellbefehle. Auskunft über
# die genaue Syntax gibt die Manpage zu cyrdeliever.
IMAP="$DELIVERMAIL -e -a $LOGNAME -m user.$LOGNAME"
BACKUP="$DELIVERMAIL -e -a $LOGNAME -m user.$LOGNAME.BACKUP"
SPAMIT="$DELIVERMAIL -e -a $LOGNAME -m user.$LOGNAME.SPAM"
LYCOS="$DELIVERMAIL -e -a $LOGNAME -m user.$LOGNAME.Lycos"
#
# Um detailliertere Fehlermeldungen zu loggen, VERBOSE auf on setzen
VERBOSE=off

# Zur Sicherheit ein Backup, falls bei der Zustellung etwas
# schiefgeht:
#
# "/bin/sed 1d" dient dazu, den von Procmail gesetzten ungültigen
# "From"-Header wieder zu entfernen!
#
:0 c
| /bin/sed 1d | $BACKUP
# bei Fehler zurück in die Queue
:0 e
{ EXITCODE=75 HOST }


# Überprüfung durch Spam Assassin
#
:0fw
| /usr/bin/spamc

:0
* ^X-Spam-Status: Yes
| /bin/sed 1d | $SPAMIT

# bei Fehler zurück in die Queue
:0 e
{ EXITCODE=75 HOST }

#In die Lycos Box
:0
* ^Received: from eupop.mail.spray.net [212.78.202.250]
| /bin/sed 1d | $LYCOS

# bei Fehler zurück in die Queue
:0 e
{ EXITCODE=75 HOST }

# Zustellung in die INBOX des Users:
#
:0 w
| /bin/sed 1d | $IMAP

# bei Fehler zurück in die Queue
:0 e
{ EXITCODE=75 HOST }


# Das Ergebnis der Zustellung wird geloggt:
#
:0 w
{
EXITCODE=$?
HOST
}

Archmage
Beiträge: 138
Registriert: 11.08.2003 03:15:01

Beitrag von Archmage » 24.08.2003 03:05:32

Also ich habe das jetzt hingekriegt, indem ich alle Lücken mit ".*" ersetzt habe. Ist das so richtig oder mache ich da einen Fehler? Ein Stern sieht mir so sehr nach Wildcard aus.

BTW: Wieso gibt es eigentlich keine vernünftige Anleitung zu procmail im Netz? Oder ist das Format so selbsterklärend, dass es niemand braucht?

Code: Alles auswählen

  #In die Lycos Box
  :0 w
  *^Received.*from.*eupop.mail.spray.net.*[212.78.202.250]
  | /bin/sed 1d | $LYCOS
  # bei Fehler zurück in die Queue
  :0 e
  { EXITCODE=75 HOST }

Benutzeravatar
pdreker
Beiträge: 8298
Registriert: 29.07.2002 21:53:30
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Nürnberg

Beitrag von pdreker » 24.08.2003 04:52:48

Code: Alles auswählen

man procmailrc
man procmailex
man procmail
Zugegeben ist nicht ganz Standard, aber die man Pages sollte man immer als erstes testen..

Die ".*" Matchen belibig viele beliebige Zeichen. Theoretisch sollte das schon gehen, aber wenn Du es genauer haben willst, dann kannst Du statt ".*" evtl. auch "." benutzen (also ohne den Stern), das matched nur ein einzelnes belibiges Zeichen. Damit sollte es dann definitiv keine Probleme geben. Es gibt auch ein RegEx Ausdruck für explizite Spaces, aber ich weiss gerade nicht, wie der bei procmail heisst... :-(

Patrick
Definitely not a bot...
Jabber: pdreker@debianforum.de

Archmage
Beiträge: 138
Registriert: 11.08.2003 03:15:01

Beitrag von Archmage » 25.08.2003 07:41:14

pdreker hat geschrieben:Die ".*" Matchen belibig viele beliebige Zeichen. Theoretisch sollte das schon gehen, aber wenn Du es genauer haben willst, dann kannst Du statt ".*" evtl. auch "." benutzen (also ohne den Stern), das matched nur ein einzelnes belibiges Zeichen.
Ja, das dachte ich auch, dass ich es aus den Manpages rausgelesen habe, aber leider wurde der Filter dann nicht aktiviert, deswegen habe ich auf eine bessere Dokumentation gehofft. Aber naja, bleibe ich halt bei ".*" - so schlimm ist das ja auch nicht. Ich muss nur daran denken, dass dieses kein Platzhalter für ein Zeichen ist sondern beliebig viele und entsprechend vorsichtig filtern.

Olaf Dietsche
Beiträge: 520
Registriert: 12.06.2003 23:18:50
Wohnort: Siegburg

Re: Nach Empfänder-Domain ordnen mit Procmail - wie geht das

Beitrag von Olaf Dietsche » 25.08.2003 08:03:15

Archmage hat geschrieben:

Code: Alles auswählen

#In die Lycos Box
:0
* ^Received: from eupop.mail.spray.net [212.78.202.250]
| /bin/sed 1d | $LYCOS
[...] ist eine Menge, d.h. ein Zeichen, das aus dieser Menge stammt. Da die IP-Adresse nicht immer die selbe sein muß, würde ich sie entweder ganz weglassen

Code: Alles auswählen

:0
* ^received: from eupop.mail.spray.net
| /bin/sed 1d | $LYCOS
oder allgemeiner halten

Code: Alles auswählen

:0
* ^received: from eupop.mail.spray.net [0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\
| /bin/sed 1d | $LYCOS
Allerdings findest du in der Procmail Mailing Liste wahrscheinlich bessere Hilfe http://www.procmail.org/era/lists.html

Olaf Dietsche
Beiträge: 520
Registriert: 12.06.2003 23:18:50
Wohnort: Siegburg

Beitrag von Olaf Dietsche » 25.08.2003 08:06:51

Möglicherweise hattest du nur Probleme mit der Anzahl der Leerzeichen

Code: Alles auswählen

* ^received: *from *eupop.mail.spray.net

Archmage
Beiträge: 138
Registriert: 11.08.2003 03:15:01

Re: Nach Empfänder-Domain ordnen mit Procmail - wie geht das

Beitrag von Archmage » 25.08.2003 08:27:19

Olaf Dietsche hat geschrieben:Da die IP-Adresse nicht immer die selbe sein muß, würde ich sie entweder ganz weglassen

Code: Alles auswählen

:0
* ^received: from eupop.mail.spray.net
| /bin/sed 1d | $LYCOS
DAS läuft. Danke. Darauf kann ich jetzt erst einmal aufbauen - obwohl ich mich frage, warum es nicht gleich bei mir so funktioniert hat. Es war wohl irgendwo ein Leerzeichen zuviel.

Ich bin schon davon ausgegangen, dass man dort keine Leerzeichenn benutzen kann, aber zum Glück habe ich mich geirrt. Das vereinfacht das ganze natürlich.

Vielen Dank euch allen. Jetzt kann ich mir was vernüftiges basteln.

Antworten