]> git.ipfire.org Git - thirdparty/mlmmj.git/commitdiff
send_help: do not execute mlmmj-send
authorBaptiste Daroussin <bapt@FreeBSD.org>
Thu, 9 Dec 2021 07:56:40 +0000 (08:56 +0100)
committerBaptiste Daroussin <bapt@FreeBSD.org>
Thu, 9 Dec 2021 08:01:11 +0000 (09:01 +0100)
include/send_help.h
src/Makefile.am
src/listcontrol.c
src/send_help.c

index 8585481e45fcd063536e5f2fe5c44c7262bb67d3..15ecd60b239c9a9c138bfa85b77feb61e85beec7 100644 (file)
@@ -1,4 +1,6 @@
 /* Copyright (C) 2004 Mads Martin Joergensen <mmj at mmj.dk>
+ * Copyright (C) 2021 Baptiste Daroussin <bapt@FreeBSD.org>
+ *
  *
  * $Id$
  *
@@ -27,6 +29,6 @@
 #include "mlmmj.h"
 
 void send_help(struct mlmmj_list *list, const char *queuefilename,
-               const char *emailaddr, const char *mlmmjsend);
+               const char *emailaddr);
 
 #endif
index d675f88aa3df1e32fd3a217e376c308c5d1175c1..5c5bdaf1250c578a50ff29be5ea494de26fed37f 100644 (file)
@@ -28,7 +28,9 @@ mlmmj_process_SOURCES = mlmmj.c mlmmj-process.c  find_email_adr.c \
                        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 \
index 1db72adaf0b5dafe01481bb53a4bc2d9cf792306..1f85adda2576d2556fdc55a67a5e0f4cb38240bd 100644 (file)
@@ -229,8 +229,7 @@ int listcontrol(struct email_container *fromemails, struct mlmmj_list *list,
                                        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"
@@ -277,8 +276,7 @@ int listcontrol(struct email_container *fromemails, struct mlmmj_list *list,
                                        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"
@@ -325,8 +323,7 @@ int listcontrol(struct email_container *fromemails, struct mlmmj_list *list,
                                        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"
@@ -802,8 +799,7 @@ permit:
                                "$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 */
@@ -824,8 +820,7 @@ permit:
                                "$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 */
index dc65c89654e6b06d62e7148b1d5709100bfc5846..ac009ac911686b9ef8ffa79ad9056e23f1f3b776 100644 (file)
@@ -1,6 +1,6 @@
-/* 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);
 }