Benutzerkontext wechseln

05/03/2009 - 23:09 von Benedikt Gollatz | Report spam
Hallo,

ich habe:

*) postfix,
*) bogofilter,
*) dovecot LDA.

Ich möchte eingehende Mail durch bogofilter und den dovecot LDA leiten, und
zwar in der Art und Weise, dass bogofilter auf die Wortlisten des Benutzers
zugreift, an den die Mail zugestellt werden soll.

Leider kann postfix seine Transports nur mit fest eingestellten
Benutzerrechten ausfà¼hren und bogofilter hat keine Optionen, um auf die
Daten eines bestimmten Nutzers zuzugreifen. Meine Idee ist es also, ein
Shellscript zu schreiben, das

1) stdin liest,
2) in die Umgebung des empfangenden Nutzers wechselt (dessen Namen ich per
Kommandozeilenoption à¼bergeben kann),
3) das Gelesene durch bogofilter leitet,
4) in den Superuserkontext zurà¼ckkehrt,
5) die Ausgabe von bogofilter an den dovecot LDA weitergibt.

Ich suche dazu also eine einfache, nichtinteraktive Möglichkeit, temporà¤r
die Umgebung und Benutzerrechte zu wechseln, um bogofilter im richtigen
Kontext auszà¼fuhren. Ich dachte da an "sudo -i -u $USER bogofilter ...", nur
erlaubt mir das offenbar nicht "-i" /und/ ein auszufà¼hrendes Kommando zu
à¼bergeben ("cannot execute binary file").

Die Manpage von sudo là¤sst vermuten, dass das aber eigentlich gehen sollte,
là¤sst mich aber mit dem kryptischen Satz

| The command name argument given to the shell begins with a ‘-' to tell the
| shell to run as a login shell.

etwas im Regen stehen.

WeiàŸ jemand, wie ich sudo zum laufen bekomme, oder hat jemand eine bessere
Idee? Den C-Compiler wà¼rde ich nur ungern anwerfen.

Danke,
Benedikt

(fup2dcous)
 

Lesen sie die antworten

#1 Sascha Hüdepohl
05/03/2009 - 23:44 | Warnen spam
Hallo

Benedikt Gollatz schrieb:

ich habe:

*) postfix,
*) bogofilter,
*) dovecot LDA.



dir fehlt scheinbar:
*) maildrop


$ sudo postconf mailbox_command
mailbox_command = /usr/bin/maildrop


Auszug aus ~/.mailfilter:

xfilter 'bogofilter -p -u -e 2> /dev/null'

# if spam, file this into the "spam" folder and exit processing
if (/^X-Bogosity: (Spam|Yes)/)
{
to "|/usr/lib/dovecot/deliver -m INBOX.spam"
}


HTH
Sascha

Ähnliche fragen