#include "log_oper.h"
#include "unistr.h"
#include "chomp.h"
+#include "send_mails.h"
enum action {
ALLOW,
}
static void
-send_denymail(struct mlmmj_list *list, const char *mlmmjsend,
- const char *cause, const char *subcause, char *causestr, const char *posteraddr,
- const char *subject, char *donemailname, const char *mailfile)
+send_denymail(struct mlmmj_list *list, const char *cause, const char *subcause,
+ char *causestr, const char *posteraddr, const char *subject,
+ char *donemailname, const char *mailfile)
{
char *fromaddr, *queuefilename;
text *txt;
+ struct mail_headers mh;
+ int queuefd;
fromaddr = concatstr(4, list->name, list->delim, "bounces-help@", list->fqdn);
txt = open_text(list, "deny", "post", cause, NULL, subcause);
register_originalmail(txt, donemailname);
queuefilename = prepstdreply(txt, list, "$listowner$", posteraddr, NULL, false);
MY_ASSERT(queuefilename);
+ queuefd = openat(list->queuefd, queuefilename, O_RDONLY);
close_text(txt);
unlink(donemailname);
unlink(mailfile);
myfree(donemailname);
myfree(causestr);
- execlp(mlmmjsend, mlmmjsend,
- "-l", "1",
- "-L", list->dir,
- "-T", posteraddr,
- "-F", fromaddr,
- "-m", queuefilename, (char *)NULL);
-
- log_error(LOG_ARGS, "execlp() of '%s' failed", mlmmjsend);
+ memset(&mh, 0, sizeof(mh));
+ mh.to = posteraddr;
+ mh.from = fromaddr;
+ if (send_single_mail(list, &mh, queuefd, queuefilename))
+ exit(EXIT_SUCCESS);
exit(EXIT_FAILURE);
}
myfree(maxmailsizestr);
exit(EXIT_SUCCESS);
}
- send_denymail(&list, mlmmjsend, "maxmailsize", "maxmailsize",
+ send_denymail(&list, "maxmailsize", "maxmailsize",
maxmailsizestr, posteraddr, subject, donemailname, mailfile);
}
}
myfree(donemailname);
exit(EXIT_SUCCESS);
}
- send_denymail(&list, mlmmjsend, "tocc", "notintocc", NULL,
+ send_denymail(&list, "tocc", "notintocc", NULL,
posteraddr, subject, donemailname, mailfile);
}
myfree(donemailname);
exit(EXIT_SUCCESS);
}
- send_denymail(&list, mlmmjsend, "access", "access",
+ send_denymail(&list, "access", "access",
NULL, posteraddr, subject, donemailname, mailfile);
} else if (accret == MODERATE) {
moderated = 1;
exit(EXIT_SUCCESS);
}
if (subonlypost) {
- send_denymail(&list, mlmmjsend, "subonlypost",
+ send_denymail(&list, "subonlypost",
"subonlypost", NULL, posteraddr, subject, donemailname,
mailfile);
} else if (modonlypost) {
- send_denymail(&list, mlmmjsend, "modonlypost",
+ send_denymail(&list, "modonlypost",
NULL, NULL, posteraddr, subject, donemailname,
mailfile);
}