PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Procmail liefert nicht an Cyrus aus



LordDarkmage
03.08.07, 15:09
Hallo zusammen,

bin echt kurz vor der Verzweiflung.

Kurz erklärt:
Hab mir vor gut einem Jahr einen Mailserver aufgesetzt. Postfix, Spamassassin und als Krönchen noch Cyrus-IMAP. Rennt auch alles prima. Nun ist es so, dass die Spamflut mitlerweile so hoch ist, dass es nicht mehr ausreicht Mails einfach zu markieren und vom Mailclient löschen/sortieren zu lassen. Ich möchte nun, dass Mail mit einem Score von mehr als 12 direkt ab nach /dev/null gehen. Zu dem Zweck hab ich mir zusätzlich Procmail installiert.


LOGFILE="/var/log/procmail"
VERBOSE=on
:0hfw
| /usr/bin/formail -I "From "

:0fw
* < 110000
| /usr/bin/spamc -u filter

:0
* ^X-Spam-Level: \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
{
LOG = "*** SPAM DELETED *** "
:0
/dev/null
}

INBOX="/usr/sbin/cyrdeliver -e -r ${sender} -m ${extension} ${user}"
:0w
| $INBOX

HOST

Im Postfix habe ich dann in der master.cf folgendes hinzugefügt:
Code:
mailbox_command = procmail -a "$EXTENSION"


Nun ist es so, dass Mail jetzt ankommen, vom Postfix an den Procmail gehen, dort die Prüfung mit dem Spamassassin auch stattfindet, ABER DANN die Auslieferung nicht ab zum Cyrus geht zum entsprechenden User, sonder ganz einfach nach /var/spool/mail/[usermailbox].

Kurzerhand also das Loggin im Procmail angeschmissen und dort steht folgendes:


procmail: [1421] Fri Aug 3 13:45:21 2007
procmail: Executing "/usr/bin/formail,-I,From "
procmail: [1421] Fri Aug 3 13:45:21 2007
procmail: Match on "< 110000"
procmail: Executing "/usr/bin/spamc,-u,filter"
procmail: [1421] Fri Aug 3 13:45:38 2007
procmail: No match on "^X-Spam-Level: \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*"
procmail: Assigning "INBOX=/usr/sbin/cyrdeliver -e -r -m "
procmail: Executing "/usr/sbin/cyrdeliver,-e,-r,-m"
421-4.3.0 usage: deliver [-C <alt_config> ] [-m mailbox] [-a auth] [-r return_path] [-l] [-D]^M
421 4.3.0 v2.1.18-IPv6-Debian-2.1.18-5.1
procmail: Error while writing to "/usr/sbin/cyrdeliver"
procmail: Program failure (75) of "/usr/sbin/cyrdeliver"
procmail: Assigning "LASTFOLDER=/usr/sbin/cyrdeliver -e -r -m"
procmail: Assigning "HOST"
procmail: HOST mismatched "lorddarkmage"
procmail: Assigning "PATH=/home/lastpegasus/bin:/usr/local/bin:/usr/bin:/bin"
procmail: Locking "/var/mail/lastpegasus.lock"
procmail: Assigning "LASTFOLDER=/var/mail/lastpegasus"
procmail: Opening "/var/mail/lastpegasus"
procmail: Acquiring kernel-lock
procmail: Unlocking "/var/mail/lastpegasus.lock"
procmail: Notified comsat: "lastpegasus@11791:/var/mail/lastpegasus"
Subject: Say "I can have sex all night long"!
Folder: /var/mail/lastpegasus 5158

In einem Forum habe ich dann gelesen, dass in die master.cf noch folgendes rien soll und procmail als User cyrus laufen soll:


procmail unix - n n - - pipe
flags=R user=cyrus argv=/usr/bin/procmail -t -m USER=${user} SENDER=${sender} EXT=${extension} SENDER=${sender} /etc/procmailrc

Trotzdem bekomme ich es nicht hin, dass die Mails in die Postfächer von Cyrus gehen. Es ist zum verzweifeln.

Jemand eine Idee wo der Fehler liegt?

Gruß
LordDarkmage

michaxyz
04.08.07, 13:21
Hi,

leider kann ich dir auch nicht sicher sagen, was es ist.
Ich habe aber mal folgende Ideen:

Der Fehlercode wird von Procmail nur weitergegeben, stammt also von deliver/cyrus. Dort heißt es:
75: temporary failure (na super)
Kann heißen:
* inbox über Quota
* Rechte-Problem auf irgendeiner Datei

Bestimmt gibts da noch mehr. Aber die beiden solltest du erste inmal ausschließen.

Das erste kannst du ausschließen, indem du deliver den Parameter "-q" mitgibst (s. man-page).
Beim zweiten weiß ich es leider auch nicht wirklich.
Wurden denn die eMials OHNE procmail an cyrus ausgeliefert? Wenn ja, wäre es ja klasse, diesen Aufruf zu kopieren, oder?

Eben fällt mir was auf, nachdem ich eine version der man-page von deliver gelesen habe. Dein Aufruf:

INBOX="/usr/sbin/cyrdeliver -e -r ${sender} -m ${extension} ${user}"

Laut man-page gibt es den Parameter "-e" nicht (Vielleicht eine Frage der Version?). Dazu wüde die Antwort

procmail: Executing "/usr/sbin/cyrdeliver,-e,-r,-m"
421-4.3.0 usage: deliver [-C <alt_config> ] [-m mailbox] [-a auth] [-r return_path] [-l] [-D]^M
421 4.3.0 v2.1.18-IPv6-Debian-2.1.18-5.1
passen.
Vielleicht schaust Du selbst mal in die bei dir installierte man-page?!

Mfg MIchael

LordDarkmage
04.08.07, 13:43
Hab die Auslieferung jetzt hinbekommen, aber dafür gleich ein zusätzliches Problem oben drauf.

Erstmal hier die Zeile für die Auslieferung:
:0 w
*^TO.*userhans@hansdomain\.de
| $DELIVERMAIL -e -a hans -m user.hans

Zwei dumme Nebeneffekte hat das aber jetzt.
1. ich muss für jedes Postfach was ich habe eine extra Zeile machen
2. es werden plötzlich Mails angenommen für Adressen, die es nicht gibt. Beispielsweise hab ich jetzt (das ist übrigens nicht in den IMAP gestopft worden) in /var/spool/mail/hans eine Mail drin, die an andereadresse@hansdomain.de geht, aber eigentlich ja nicht, denn die Adresse gibts ja net. Hätte doch abgelehnt werden müssen vom Postfix.

Ideen?

Benngun
04.08.07, 16:05
ich kenn mich zwar mit procmail gar nicht aus, aber eventuell könnte die eigentliche aufgabe auch sieve lösen. Sieve kann Filterregeln direkt auf dem IMAP server ablegen und laufen lassen. So das man egal welchen Client man benutzt nicht in allen Clients filterregeln nachpflegen muß.

https://www.ssl-id.de/wichmann-online.eu/mailserver_HT.php#kap8 ist ne kleine feine anleitung die eventuell weiterhelfen kann

michaxyz
04.08.07, 16:27
Hallo noch mal,

ok, ich habe in Reichweite einen Debian, auf dem cyrus installiert ist.
Dort liefert ein

# cyrdeliver
eben genau die Ausgabe


421-4.3.0 usage: deliver [-C <alt_config> ] [-m mailbox] [-a auth] [-r return_pa th] [-l] [-D]
421 4.3.0 v2.1.18-IPv6-Debian-2.1.18-5.2

wie bei dir im log.
Ergo: der Aufruf stimmt nicht.

Ich weiß nicht, ob Dir das weiterhilft. Erste Anlaufstelle wäre also meiner Meinung nach die man-page, dann sicher im Netz die Tuts.

Viel Erfolg, ich suche auch weiter.

Vielleicht vereinfachst Du erst einmal den Aufruf zu
| /usr/sbin/cyrdeliver -e -a $LOGNAME -m user.$LOGNAME

Siehe: http://entwickler-forum.de/showthread.php?t=34074


Mfg Michael