do_all_the_voodoo_here.c mygetline.c gethdrline.c \
log_error.c controls.c dumpfd2fd.c \
subscriberfuncs.c memory.c log_oper.c \
- send_list.c readn.c unistr.c
+ send_list.c readn.c unistr.c \
+ send_mails.c checkwait_smtpreply.c \
+ mail-functions.c init_sockfd.c
mlmmj_sub_SOURCES = mlmmj.c mlmmj-sub.c mylocking.c \
chomp.c random-int.c strgen.c \
fromemails->emaillist[0], NULL, false);
MY_ASSERT(queuefilename);
close_text(txt);
- send_help(list, queuefilename,
- fromemails->emaillist[0], mlmmjsend);
+ send_help(list, queuefilename, fromemails->emaillist[0]);
return -1;
}
log_oper(list->dir, OPLOGFNAME, "mlmmj-sub: request for digest"
fromemails->emaillist[0], NULL, false);
MY_ASSERT(queuefilename);
close_text(txt);
- send_help(list, queuefilename,
- fromemails->emaillist[0], mlmmjsend);
+ send_help(list, queuefilename, fromemails->emaillist[0]);
return -1;
}
log_oper(list->dir, OPLOGFNAME, "mlmmj-sub: request for nomail"
fromemails->emaillist[0], NULL, false);
MY_ASSERT(queuefilename);
close_text(txt);
- send_help(list, queuefilename,
- fromemails->emaillist[0], mlmmjsend);
+ send_help(list, queuefilename, fromemails->emaillist[0]);
return -1;
}
log_oper(list->dir, OPLOGFNAME, "mlmmj-sub: request for both"
"$listowner$", fromemails->emaillist[0], NULL, false);
MY_ASSERT(queuefilename);
close_text(txt);
- send_help(list, queuefilename,
- fromemails->emaillist[0], mlmmjsend);
+ send_help(list, queuefilename, fromemails->emaillist[0]);
break;
/* listname+faq@domain.tld */
"$listowner$", fromemails->emaillist[0], NULL, false);
MY_ASSERT(queuefilename);
close_text(txt);
- send_help(list, queuefilename,
- fromemails->emaillist[0], mlmmjsend);
+ send_help(list, queuefilename, fromemails->emaillist[0]);
break;
/* listname+get-INDEX@domain.tld */
-/* Copyright (C) 2003 Mads Martin Joergensen <mmj at mmj.dk>
- *
- * $Id$
+/*
+ * Copyright (C) 2003 Mads Martin Joergensen <mmj at mmj.dk>
+ * Copyright (C) 2021 Baptiste Daroussin <bapt@FreeBSD.org>
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <unistd.h>
#include <fcntl.h>
-#include <sys/types.h>
-#include <sys/stat.h>
#include "mlmmj.h"
#include "send_help.h"
-#include "strgen.h"
-#include "find_email_adr.h"
-#include "log_error.h"
-#include "chomp.h"
-#include "wrappers.h"
-#include "mygetline.h"
-#include "prepstdreply.h"
#include "memory.h"
+#include "send_mails.h"
void send_help(struct mlmmj_list *list, const char *queuefilename,
- const char *emailaddr, const char *mlmmjsend)
+ const char *emailaddr)
{
+ struct mail_headers mh;
char *fromaddr;
+ int queuefd;
myasprintf(&fromaddr, "%s%sbounces-help@%s", list->name, list->delim,
list->fqdn);
-
- execlp(mlmmjsend, mlmmjsend,
- "-l", "1",
- "-L", list->dir,
- "-T", emailaddr,
- "-F", fromaddr,
- "-m", queuefilename, (char *)NULL);
-
- log_error(LOG_ARGS, "execlp() of '%s' failed", mlmmjsend);
+ memset(&mh, 0, sizeof(mh));
+ mh.to = emailaddr;
+ mh.from = fromaddr;
+ queuefd = openat(list->queuefd, queuefilename, O_RDONLY);
+ if (send_single_mail(list, &mh, queuefd, queuefilename))
+ exit(EXIT_SUCCESS);
exit(EXIT_FAILURE);
}