Hallo Matthias, hallo Liste,
> Sch�ner w�re es nat�rlich, sowas in die ~/.procmailrc zu schreiben und
> die dann einzubinden. Ich bin damit leider gescheitert, weil procmail
> die ~/.procmailrc mit den Rechten des Users ausf�hrt. Und der darf
> cyrdeliever nat�rlich nicht benutzen.
>
> Falls jemand daf�r noch eine L�sung h�tte, w�re ich auch noch dran
> interessiert! ;-)
ich hatte das erst mit einem Shell-Script versucht, aber die werden ohne
Kernel-Hack nicht setuid ausgef�hrt (was auch Sinn macht).
Daher ein kleines C-Programm, welches ich cyrdeliver_wrapper genannt habe:
#include <pwd.h>
#include <sys/types.h>
#include <errno.h>
#include <unistd.h>
#include <string.h>
int main(int argc, char *argv[]){
struct passwd *userinfo;
/*if (argc != 2) return EINVAL;*/ /* invalid argument, too many/too
few args */
if (argc != 2) return ECANCELED; /* invalid argument, too many/too
few args; EINVAL is also returned
by execle */
userinfo = getpwuid(getuid()); /* get user info from /etc/passwd for
calling user */
execl("/usr/sbin/cyrdeliver", "cyrdeliver", "-a", userinfo->pw_name, "-m",
argv[1], NULL);
return errno; /* if execle fails, it sets errno; see man execle or man
execve */
/* Hm, I cannot see in man page, what cyrdeliver returns... */
}
Das ganze dann
-rwsr-sr-x 1 cyrus mail 5233 Sep 8 08:39
/usr/local/sbin/cyrdeliver_wrapper
Der Sinn: Damit nicht jeder in irgend eine beliebige Mailbox eines anderen
Users (-m) einsortieren darf, macht die User-Authentifizierung der wrapper
(-a). Wenn man in der Mailbox, die man als einzelnes Argument dem Wrapper
angibt, eine Mailbox w�hlt, in denen man keine post-Rechte hat, landet die
Mail in der INBOX des Users, s. man cyrdeliver. Ich denke, da� dies der Sinn
ist, weshalb cyrdeliver nicht f�r jeden executable ist.
Meine .procmailrc, sieht dann wie folgt aus (ach ja: wenn eine .procmailrc im
$HOME zu finden ist, w�hlt exim automatisch procmail zum zustellen, evt. mu�
man bei anderen MTAs noch etwas in die .forward schreiben):
LOGFILE=$HOME/.procmail/log
LOGABSTRACT=all
VERBOSE=yes
LOG="
"
THISUSER=$LOGNAME
DELIVERMAIL="/usr/local/sbin/cyrdeliver_wrapper"
IMAP="$DELIVERMAIL user.$THISUSER"
BACKUP="$DELIVERMAIL user.$THISUSER.Backup"
#:0c
#| $BACKUP
:0w
* ^X-Mailing-List: <debian-user-german@lists\.debian\.org>
| $IMAP.Linux.debian.debian-user-german
Das kann dann bis #| $BACKUP jeder User so �bernehmen. (Und zur Sicherheit
halt Backups von seinen E-Mails machen.)
So, wenn jemand Sicherheitsl�cken in dem C-Programm sieht oder sonst eine
Idee hat, ob man den Wrapper "�berreden" kann, in jede Mailbox
einzusortieren, w�re ich f�r Hinweise dankbar. Ansonsten hab ich auch schon
�berlegt, da� mal dem Maintainer zu schicken, vielleicht kann er ja mal noch
ne neue Version machen. (Sollte ich nen neuen Thread machen, da� evt.
mehrere das lesen?)
Achso: Ich hab hier cyrus-imapd 1.5.19-9, was neueres ist ja in der testing
noch nicht gelandet. Habe gelesen, da� ab Version 2 die cyrdeliver dann f�r
jedermann ausf�hrbar gemacht sein soll.
Nun, es ergeben sich allerdings auch ein paar Dinge, die es noch abzustellen
g�be:
(i) Die ~/.procmail/log sieht durcheinandergew�rfelt aus. Hat jemand eine
Idee, wie man die lock'en kann, aber so, da� es keine Zustellungen gibt,
die nicht mitgelogt werden?
(ii) Auf der Konsole sehe ich nicht mehr, wenn ich neue E-Mail bekommen
habe. Die meisten Programme schauen ja nach dem Datum von z.B.
/var/mail/user oder ~/Mail/...
(iii) Sollte man einen lokalen User ins Killfile gesteckt haben, kann er
einen trotzdem in der INBOX nerven. :)
(iv) -f�llt mir gerade nicht ein-
Nunja, das wollte ich lange schonmal diskutiert haben, hoffentlich gibt's
viele Antworten.
Ansonsten sch�nes Wochenende,
Mike
--
Haeufig gestellte Fragen und Antworten (FAQ):
http://www.de.debian.org/debian-user-german-FAQ/
Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)