d0d307a
/*
d0d307a
 * Wrapper for cyrus 'deliver' to allow anyone to run it -
d0d307a
 * I hope this is secure!  Should be setgid mail.
d0d307a
 */
d0d307a
d0d307a
#include <stdio.h>
d0d307a
#include <unistd.h>
d0d307a
#include <pwd.h>
d0d307a
#include <sys/types.h>
d0d307a
#include <sysexits.h>
d0d307a
d0d307a
#ifndef LIBEXECDIR
d0d307a
#define LIBEXECDIR "/usr/lib/cyrus-imapd"
d0d307a
#endif
d0d307a
d0d307a
int main(int argc, char *argv[])
d0d307a
{
d0d307a
    char *const envp[] = { NULL };
d0d307a
    struct passwd *ent = getpwuid(getuid());
d0d307a
    const char *uname = (ent && ent->pw_name && ent->pw_name[0])
d0d307a
                              ? ent->pw_name : "anonymous";
d0d307a
    
d0d307a
    if (argc != 2) {
d0d307a
        fprintf(stderr, "Usage: %s mailbox\n", argv[0]);
d0d307a
        return EX_USAGE; 
d0d307a
    }
d0d307a
    
d0d307a
    execle(LIBEXECDIR"/deliver", "deliver", "-e",
d0d307a
           "-a", uname, "-m", argv[1],
d0d307a
           NULL, envp);
d0d307a
d0d307a
    perror("exec "LIBEXECDIR"/deliver");           
d0d307a
    return EX_OSERR; 
d0d307a
}