PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [postfix-procmail-spamassasin-cyrus] rechte-problem



keeney
31.10.04, 13:53
hallo,

ich hab postfix am laufen, der ueber eine systemweite /etc/procmailrc die mails an den user ausliefert. der user kann in der .procmailrc noch weiter filtern, bzw spamassasin ins spiel bringen. und hier gibts jetzt ein problem, dass spamassasin als user den user uebernimmt, mit dem procmail aufgerufen wird (cyrus), und spamassasin somit die userprefs und lockfiles etc. wo anders vermutet. ein weiteres problem ist, dass das log-file fuer procmail staendig als owner cyrus haben muss.
wie kann ich dem entgegengehn?

procmail.log


procmail: [16493] Sun Oct 31 13:33:04 2004
procmail: Assigning "DELIVERTO=/usr/cyrus/bin/deliver"
procmail: Assigning "USERINBOX=/usr/cyrus/bin/deliver -q -a keeney -m user.keene
y"
procmail: Match on "< 256000"
procmail: Locking "spamassassin.lock"
procmail: Error while writing to "_tBE.AuNhBB.m24s24"
procmail: Lock failure on "spamassassin.lock"
procmail: Executing "spamassassin"
Cannot write to /usr/cyrus/.spamassassin/user_prefs: No such file or directory
Failed to create default user preference file /usr/cyrus/.spamassassin/user_pref
s
procmail: [16493] Sun Oct 31 13:33:05 2004
procmail: No match on "^X-Spam-Level: \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*"
procmail: No match on "^X-Spam-Status: Yes"
procmail: No match on "^^rom[ ]"
procmail: Assigning "DROPPRIVS=yes"
procmail: Assuming identity of the recipient, VERBOSE=off
procmail: Executing "/usr/cyrus/bin/deliver,-q,-a,keeney,-m,user.keeney"
procmail: Assigning "LASTFOLDER=/usr/cyrus/bin/deliver -q -a keeney -m user.keen
ey"
Subject: Look better today
Folder: /usr/cyrus/bin/deliver -q -a keeney -m user.keeney


/etc/postfix/master.cf:
...
procmail unix - n n - - pipe
flags=R user=cyrus argv=/usr/bin/procmail -t -m USER=$(user) EXTENSION=$(e
xtension) /etc/procmailrc
...

/etc/procmailrc:
DELIVERTO="/usr/cyrus/bin/deliver"
USERINBOX="$DELIVERTO -a $USER -m user.$USER"
INCLUDERC=/home/$USER/.procmailrc
DROPPRIVS=yes

:0 w
| $USERINBOX

/home/user/.procmailrc:
LOGFILE=/home/keeney/procmail.log
VERBOSE=yes
DELIVERTO="/usr/cyrus/bin/deliver"
USERINBOX="$DELIVERTO -q -a $USER -m user.$USER"

:0fw: spamassassin.lock
* < 256000
| spamassassin

:0:
* ^X-Spam-Level: \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
| $USERINBOX.Spam

:0:
* ^X-Spam-Status: Yes
| $USERINBOX.Spam

Stormbringer
31.10.04, 18:50
Hi,

Du könntest die /etc/procmailrc etwas erweitern, und schauen, ob es dann funzt (ohne Gewähr - ich nutze es nicht!!!):


LOGFILE=/var/log/procmail/procmail.log
VERBOSE=yes
SHELL=/bin/bash
ANOMY=/usr/local/anomy/
DELIVER=/usr/lib/cyrus/bin/deliver
FORMAIL=/usr/bin/formail
#
SENDER=$1
RECIPIENT=$2
MAILBOX=$3
USER=$4
SHIFT=1
#
...
#
:0
| /usr/sbin/sendmail -i -f "$SENDER" -- "$@"

Ggf. sind die Infos in anderer Reihenfolge, dann halt auswerten und entsprechend anpassen.

Gruß

keeney
01.11.04, 09:06
danke fuer die antwort, stormbringer!
nein, funktioniert so leider nicht.
ich denke, dass bei meiner konfiguration das problem eben ist, dass schon procmail als user cyrus aufgerufen wird, welches dann auch spamassassin mit den falschen rechten aufruft.
ich seh hier irgendwo kein land!
arbeite ich ohne einer systemweiten procmailrc und den entsprechenden einstellungen in der master.cf, koennen die mails nicht mehr in die boxen zugestellt werden, da "deliver" ja mit user-rechten aufgerufen wird, was sich beisst. versuch ich's mit spamc->spamd, sucht spamd seine user_prefs im dem home, unter welchem user dieser aufgerufen wird (z.b. filter). einen kleinen ausweg hier seh ich in der uebergabe des (semi-obsoleten) parameter spamc -u in der .procmailrc, nur muessen die einzelnen user-einstellung dann auch schreibrechte fuer den spamd haben, und so recht klappt das auch nicht. binde ich spamassassin in den mta ein, werden user-einstellungen grundsaetzlich ignoriert, meiner erfahrung nach.
kann man also davon ausgehn, dass spamassassin mit cyrus-imap praktisch unbrauchbar ist??

Stormbringer
01.11.04, 09:25
Guten Morgen! :)

Ich nutze hier u. a. postfix, procmail & cyrus-imap, und ggf. hilft Dir die hier laufende Konfig.

/etc/postfix/master.cf:


...
smtp inet n - y - - smtpd -o content_filter=procmail:filter
...
cyrus unix - n n - - pipe
user=cyrus argv=/usr/lib/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}
...
procmail unix - n n - - pipe
flags=R user=nobody argv=/usr/bin/procmail -t -m /etc/procmailrc ${sender} ${recipient}


/etc/postfix/main.cf:


mailbox_transport = cyrus
mailbox_command =

(mailbox_command ist ohne Eintrag!)

/etc/procmailrc:


LOGFILE=/var/log/procmail/procmail.log
VERBOSE=yes
SHELL=/bin/bash
ANOMY=/usr/local/anomy/
DELIVER=/usr/lib/cyrus/bin/deliver
FORMAIL=/usr/bin/formail
#
SENDER=$1
RECIPIENT=$2
MAILBOX=$3
USER=$4
SHIFT=1
#
:0fw
| /usr/bin/spamassassin -P

:0 Wc
| /usr/bin/razor-check

:0
| /usr/sbin/sendmail -i -f "$SENDER" -- "$@"

Das Ganze läuft hier für vier reale Nutzer, und zusätzlich 5 virtuellen auf einem "EDV-Käfer" Marke SuSE 8.2 ... ;)

Gruß

keeney
01.11.04, 10:02
ohne das jetzt ausprobiert zu haben, aber hast du so die moeglichkeit, fuer einen benutzer spamassassin abzuschalten, falls er das wuenscht? bzw kann ein user so seine persoenlichen rules irgendwo unterbringen?

Stormbringer
01.11.04, 12:48
Nein ... zentral für alle Benutzer (darum ja auch /etc/procmailrc, und nicht ~/.procmail). Wobei ich aber nicht weiß, und keine Lust habe es nun nachzulesen, ob ein ~/.procmail die /etc/procmailrc over-ruled.

Gruß

keeney
01.11.04, 14:32
ich meinte auch spamassassin rules ;)

Stormbringer
01.11.04, 16:15
Ups ... welch ein Verleser ... ;)

Das sollte funzen (ohne es nun getestet zu haben), da spamassassin ohne Angabe einer Konfig aufgerufen wird, und somit ~/.spamassassin mit darin befindlichen Konfigs aufgerufen wird.
Da wir hier aber mit einer zentralen AS-Regelung arbeiten (SPAM Folder ist ein shared-folder in cyrus), kam bisher nie der Wunsch auf, etwas abzuschalten ...

Gruß

keeney
02.11.04, 12:07
die ~/.spamassassin auszulesen, macht spamd eben nur mit aufruf von spamc -u $USER. leider.
ich bin jetzt hergegangen und hab mal mit den rechten ein wenig gespielt:

drwxrwx--- 2 keeney filter 4096 Nov 2 11:57 .spamassassin/
-rw-rw---- 1 keeney filter 20480 Nov 2 11:57 auto-whitelist
-rw-rw---- 1 keeney filter 20480 Nov 2 11:57 bayes_seen
-rw-rw---- 1 keeney filter 163840 Nov 2 11:57 bayes_toks
-rw-rw---- 1 keeney filter 1450 Nov 2 02:29 user_prefs

~/.procmailrc:
...
:0fw
| /usr/local/bin/spamc -u keeney -f -s 5000000
...

in dieser filter-gruppe steckt eben auch der spamd. ein bisschen hacky, aber ne andere moeglichkeit seh ich nicht.