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)