exit(EXIT_SUCCESS);
}
+static void
+send_denymail(const char *listdir, const char *listaddr, const char *mlmmjsend,
+ const char *cause, const char *subcause, char *causestr, const char *posteraddr,
+ const char *subject, char *donemailname, const char *mailfile)
+{
+ char *listname, *listfqdn, *fromaddr, *queuefilename, *listdelim;
+ text *txt;
+
+ listdelim = getlistdelim(listdir);
+ listname = genlistname(listaddr);
+ listfqdn = genlistfqdn(listaddr);
+ fromaddr = concatstr(4, listname, listdelim, "bounces-help@", listfqdn);
+ txt = open_text(listdir, "deny", "post", cause, NULL, subcause);
+ MY_ASSERT(txt);
+ register_unformatted(txt, "subject", subject);
+ register_unformatted(txt, "posteraddr", posteraddr);
+ if (causestr != NULL)
+ register_unformatted(txt, cause, causestr);
+ register_originalmail(txt, donemailname);
+ queuefilename = prepstdreply(txt, listdir,
+ "$listowner$", posteraddr, NULL);
+ MY_ASSERT(queuefilename);
+ close_text(txt);
+ myfree(listdelim);
+ myfree(listname);
+ myfree(listfqdn);
+ unlink(donemailname);
+ unlink(mailfile);
+ myfree(donemailname);
+ myfree(causestr);
+ execlp(mlmmjsend, mlmmjsend,
+ "-l", "1",
+ "-L", listdir,
+ "-T", posteraddr,
+ "-F", fromaddr,
+ "-m", queuefilename, (char *)NULL);
+
+ log_error(LOG_ARGS, "execlp() of '%s' failed", mlmmjsend);
+ exit(EXIT_FAILURE);
+}
+
int main(int argc, char **argv)
{
int i, j, opt, noprocess = 0, moderated = 0, send = 0;
char *randomstr = NULL, *mqueuename, *omitfilename;
char *mlmmjsend, *mlmmjsub, *mlmmjunsub, *mlmmjbounce;
char *bindir, *subjectprefix, *discardname, *listaddr, *listdelim = NULL;
- char *listfqdn, *listname, *fromaddr;
- text *txt;
- char *queuefilename, *recipextra = NULL, *owner = NULL;
+ char *recipextra = NULL, *owner = NULL;
char *maxmailsizestr;
char *subject = NULL, *posteraddr = NULL;
char *envstr, *efrom;
myfree(maxmailsizestr);
exit(EXIT_SUCCESS);
}
-
- listdelim = getlistdelim(listdir);
- listname = genlistname(listaddr);
- listfqdn = genlistfqdn(listaddr);
- fromaddr = concatstr(4, listname, listdelim,
- "bounces-help@", listfqdn);
- txt = open_text(listdir, "deny", "post",
- "maxmailsize", NULL, "maxmailsize");
- MY_ASSERT(txt);
- register_unformatted(txt, "subject", subject);
- register_unformatted(txt, "posteraddr", posteraddr);
- register_unformatted(txt, "maxmailsize", maxmailsizestr);
- register_originalmail(txt, donemailname);
- queuefilename = prepstdreply(txt, listdir,
- "$listowner$", posteraddr, NULL);
- MY_ASSERT(queuefilename);
- close_text(txt);
- myfree(listdelim);
- myfree(listname);
- myfree(listfqdn);
- unlink(donemailname);
- unlink(mailfile);
- myfree(donemailname);
- myfree(maxmailsizestr);
- execlp(mlmmjsend, mlmmjsend,
- "-l", "1",
- "-L", listdir,
- "-T", posteraddr,
- "-F", fromaddr,
- "-m", queuefilename, (char *)NULL);
-
- log_error(LOG_ARGS, "execlp() of '%s' failed", mlmmjsend);
- exit(EXIT_FAILURE);
+ send_denymail(listdir, listaddr, mlmmjsend, "maxmailsize", "maxmailsize",
+ maxmailsizestr, posteraddr, subject, donemailname, mailfile);
}
}
myfree(donemailname);
exit(EXIT_SUCCESS);
}
- listdelim = getlistdelim(listdir);
- listname = genlistname(listaddr);
- listfqdn = genlistfqdn(listaddr);
- fromaddr = concatstr(4, listname, listdelim, "bounces-help@",
- listfqdn);
- txt = open_text(listdir, "deny", "post",
- "tocc", NULL, "notintocc");
- MY_ASSERT(txt);
- register_unformatted(txt, "subject", subject);
- register_unformatted(txt, "posteraddr", posteraddr);
- register_originalmail(txt, donemailname);
- queuefilename = prepstdreply(txt, listdir,
- "$listowner$", posteraddr, NULL);
- MY_ASSERT(queuefilename)
- close_text(txt);
- myfree(listdelim);
- myfree(listname);
- myfree(listfqdn);
- unlink(donemailname);
- myfree(donemailname);
- execlp(mlmmjsend, mlmmjsend,
- "-l", "1",
- "-L", listdir,
- "-T", posteraddr,
- "-F", fromaddr,
- "-m", queuefilename, (char *)NULL);
-
- log_error(LOG_ARGS, "execlp() of '%s' failed", mlmmjsend);
- exit(EXIT_FAILURE);
+ send_denymail(listdir, listaddr, mlmmjsend, "tocc", "notintocc", NULL,
+ posteraddr, subject, donemailname, mailfile);
}
access_rules = ctrlvalues(listdir, "access");
myfree(donemailname);
exit(EXIT_SUCCESS);
}
- listdelim = getlistdelim(listdir);
- listname = genlistname(listaddr);
- listfqdn = genlistfqdn(listaddr);
- fromaddr = concatstr(4, listname, listdelim,
- "bounces-help@", listfqdn);
- txt = open_text(listdir, "deny", "post",
- "access", NULL, "access");
- MY_ASSERT(txt);
- register_unformatted(txt, "subject", subject);
- register_unformatted(txt, "posteraddr", posteraddr);
- register_originalmail(txt, donemailname);
- queuefilename = prepstdreply(txt, listdir,
- "$listowner$", posteraddr, NULL);
- MY_ASSERT(queuefilename)
- close_text(txt);
- myfree(listaddr);
- myfree(listdelim);
- myfree(listname);
- myfree(listfqdn);
- unlink(donemailname);
- myfree(donemailname);
- myfree(randomstr);
- execlp(mlmmjsend, mlmmjsend,
- "-l", "1",
- "-L", listdir,
- "-T", posteraddr,
- "-F", fromaddr,
- "-m", queuefilename, (char *)NULL);
-
- log_error(LOG_ARGS, "execlp() of '%s' failed",
- mlmmjsend);
- exit(EXIT_FAILURE);
+ send_denymail(listdir, listaddr, mlmmjsend, "access", "access",
+ NULL, posteraddr, subject, donemailname, mailfile);
} else if (accret == MODERATE) {
moderated = 1;
modreason = ACCESS;
myfree(donemailname);
exit(EXIT_SUCCESS);
}
- listdelim = getlistdelim(listdir);
- listname = genlistname(listaddr);
- listfqdn = genlistfqdn(listaddr);
- fromaddr = concatstr(4, listname, listdelim,
- "bounces-help@", listfqdn);
if (subonlypost) {
- txt = open_text(listdir, "deny", "post",
- "subonlypost", NULL, "subonlypost");
+ send_denymail(listdir, listaddr, mlmmjsend, "subonlypost",
+ "subonlypost", NULL, posteraddr, subject, donemailname,
+ mailfile);
} else if (modonlypost) {
- txt = open_text(listdir, "deny", "post",
- "modonlypost", NULL, NULL);
+ send_denymail(listdir, listaddr, mlmmjsend, "modonlypost",
+ NULL, NULL, posteraddr, subject, donemailname,
+ mailfile);
}
- MY_ASSERT(txt);
- register_unformatted(txt, "subject", subject);
- register_unformatted(txt, "posteraddr", posteraddr);
- register_originalmail(txt, donemailname);
- queuefilename = prepstdreply(txt, listdir,
- "$listowner$", posteraddr, NULL);
- MY_ASSERT(queuefilename)
- close_text(txt);
- myfree(listaddr);
- myfree(listdelim);
- myfree(listname);
- myfree(listfqdn);
- unlink(donemailname);
- myfree(donemailname);
- execlp(mlmmjsend, mlmmjsend,
- "-L", listdir,
- "-l", "1",
- "-T", posteraddr,
- "-F", fromaddr,
- "-m", queuefilename, (char *)NULL);
-
- log_error(LOG_ARGS, "execlp() of '%s' failed", mlmmjsend);
- exit(EXIT_FAILURE);
}
}
}