On Sat, Feb 08, 2003 at 11:41:01PM +0100, Mike Dornberger wrote:

> 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 */

Bei Fehlern w�rde ich EX_TEMPFAIL an den MTA zur�ckgeben, damit die
Mail nicht gleich endg�ltig abgewiesen wird.

>   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);

Funktioniert das auch bei seltsamen Namen? Das Programm sollte
entsprechend reagieren, wenn EACCES zur�ckkommt oder -1. Siehe auch
man errno und popen().

>   return errno; /* if execle fails, it sets errno; see man execle or man
>                  execve */

siehe man errno

Eine Fehlermeldung auszugeben, w�re schon irgendwie sinnvoll :)

>   /* Hm, I cannot see in man page, what cyrdeliver returns... */
> 
> }

Ggf. gibt cyrdeliver einen permanenten Fehler zur�ck, wenn die Mailbox
�ber Quota ist. Au�erdem kann (bzw. wird) es eine Fehlermeldung nach
stdout (oder stderr?) ausgeben, die Du entsprechend an den MTA
weiterleiten m��test, damit dieser einen Bounce mit sinnvoller
Fehlermeldung erzeugen kann. Was es sonst noch zur�ckgibt, wei� ich
nicht, aber ich kann mir vorstellen, da� irgendwas kommt, wenn
z. B. die angesprochene Mailbox nicht existiert.

Ob die Fehlerbehandlung mit dem zwischen MTA und cyrdeliver h�ngenden
procmail funktioniert, sei dahingestellt ...

Wie stellst Du sicher, da� bei der Verwendung Deines Programms keine
Mails verlorengehen?


GH


-- 
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)

Antwort per Email an