--- ssmtp.orig.c 2004-07-23 00:58:48.000000000 -0500 +++ ssmtp.c 2008-07-14 16:03:08.000000000 -0500 @@ -76,6 +76,7 @@ int log_level = 1; #else int log_level = 0; #endif +int minuserid = MAXSYSUID+1; int port = 25; #ifdef INET6 int p_family = PF_UNSPEC; /* Protocol family used in SMTP connection */ @@ -641,7 +642,7 @@ char *rcpt_remap(char *str) { struct passwd *pw; if((root==NULL) || strlen(root)==0 || strchr(str, '@') || - ((pw = getpwnam(str)) == NULL) || (pw->pw_uid > MAXSYSUID)) { + ((pw = getpwnam(str)) == NULL) || (pw->pw_uid >= minuserid)) { return(append_domain(str)); /* It's not a local systems-level user */ } else { @@ -814,6 +815,17 @@ bool_t read_config() log_event(LOG_INFO, "Set Root=\"%s\"\n", root); } } + else if(strcasecmp(p, "MinUserId") == 0) { + if((r = strdup(q)) == (char *)NULL) { + die("parse_config() -- strdup() failed"); + } + + minuserid = atoi(r); + + if(log_level > 0) { + log_event(LOG_INFO, "Set MinUserId=\"%d\"\n", minuserid); + } + } else if(strcasecmp(p, "MailHub") == 0) { if((mailhost = strdup(q)) == (char *)NULL) { die("parse_config() -- strdup() failed");