Index: head/mail/milter-regex/Makefile =================================================================== --- head/mail/milter-regex/Makefile (revision 497761) +++ head/mail/milter-regex/Makefile (revision 497762) @@ -1,44 +1,44 @@ # Created by: trevor # $FreeBSD$ PORTNAME= milter-regex -PORTVERSION= 2.2 +PORTVERSION= 2.4 CATEGORIES= mail MASTER_SITES= https://www.benzedrine.ch/ MAINTAINER= dinoex@FreeBSD.org COMMENT= Milter plugin to sendmail for regular expression filtering LICENSE= BSD2CLAUSE LICENSE_FILE= ${FILESDIR}/COPYRIGHT USE_RC_SUBR= milterregex SUB_LIST= SPOOLDIR=${SPOOLDIR} PLIST_SUB= SPOOLDIR=${SPOOLDIR} MAILUSER?= mailnull SPOOLDIR?= /var/run/milter-regex .include .include "${PORTSDIR}/mail/sendmail/bsd.milter.mk" post-patch: ${REINPLACE_CMD} -e \ "s:/etc/milter-regex.conf:${PREFIX}/etc/milter-regex.conf:g; \ s:/var/spool/milter-regex:${SPOOLDIR}:g; \ s:_milter-regex:${MAILUSER}:g;" ${WRKSRC}/milter-regex.c ${REINPLACE_CMD} -e \ "s:/etc/milter-regex.conf:${PREFIX}/etc/milter-regex.conf:g; \ s:/var/spool/milter-regex:${SPOOLDIR}:g; \ s:mailstats 1:mailstats 8:;" ${WRKSRC}/milter-regex.8 ${REINPLACE_CMD} -e "s:-I/usr/src/gnu/usr.sbin/sendmail/include::g; \ s:-L/usr/local/lib:-L${LOCALBASE}/lib:g; \ s/-Werror//g" ${WRKSRC}/Makefile do-install: ${INSTALL_PROGRAM} ${WRKSRC}/milter-regex ${STAGEDIR}${PREFIX}/libexec/ ${INSTALL_MAN} ${WRKSRC}/milter-regex.8 ${STAGEDIR}${PREFIX}/man/man8/ ${MKDIR} ${STAGEDIR}${SPOOLDIR} .include Index: head/mail/milter-regex/distinfo =================================================================== --- head/mail/milter-regex/distinfo (revision 497761) +++ head/mail/milter-regex/distinfo (revision 497762) @@ -1,3 +1,3 @@ -TIMESTAMP = 1546371034 -SHA256 (milter-regex-2.2.tar.gz) = 67b7cbe04be7aff111750648ea4004927de9c40c53959cab32101833e7ecccdd -SIZE (milter-regex-2.2.tar.gz) = 20496 +TIMESTAMP = 1554320086 +SHA256 (milter-regex-2.4.tar.gz) = e6cafefa4d9f103a7b831afb8a0e99a3b8436be4367be6da3d0df5dad5429df9 +SIZE (milter-regex-2.4.tar.gz) = 20347 Index: head/mail/milter-regex/files/patch-milter-regex.8 =================================================================== --- head/mail/milter-regex/files/patch-milter-regex.8 (revision 497761) +++ head/mail/milter-regex/files/patch-milter-regex.8 (revision 497762) @@ -1,27 +1,27 @@ ---- milter-regex.8.orig 2018-09-25 20:51:47 UTC +--- milter-regex.8.orig 2019-04-02 15:47:26 UTC +++ milter-regex.8 @@ -36,7 +36,9 @@ .Sh SYNOPSIS .Nm .Op Fl d +.Op Fl q .Op Fl c Ar config +.Op Fl r Ar pid-file + .Op Fl f Ar facility .Op Fl j Ar dirname .Op Fl l Ar loglevel - .Op Fl m Ar number -@@ -58,9 +60,14 @@ The options are as follows: +@@ -59,9 +61,14 @@ The options are as follows: .It Fl d Don't detach from controlling terminal and produce verbose debug output on stdout. +.It Fl q +Don't send to syslog messages with priority higher than LOG_NOTICE. .It Fl c Ar config Use the specified configuration file instead of the default, /etc/milter-regex.conf. +.It Fl r Ar pid-file +Use the specified pid file to write to. Default is: +/var/spool/milter-regex/milter-regex.pid + .It Fl f Ar facility + Use the specified syslog facility instead of the default, daemon. .It Fl j Ar dirname - Change root to the specified directory. - .It Fl l Ar loglevel Index: head/mail/milter-regex/files/patch-milter-regex.c =================================================================== --- head/mail/milter-regex/files/patch-milter-regex.c (revision 497761) +++ head/mail/milter-regex/files/patch-milter-regex.c (revision 497762) @@ -1,82 +1,82 @@ ---- milter-regex.c.orig 2018-09-25 20:31:25 UTC +--- milter-regex.c.orig 2019-04-02 15:47:26 UTC +++ milter-regex.c -@@ -61,6 +61,7 @@ extern int parse_ruleset(const char *, +@@ -62,6 +62,7 @@ extern int parse_ruleset(const char *, static const char *rule_file_name = "/etc/milter-regex.conf"; static int debug = 0; +static int quiet = 0; static unsigned maxlines = 0; static pthread_mutex_t mutex; -@@ -98,6 +99,7 @@ static void msg(int, struct context *, +@@ -99,6 +100,7 @@ static void msg(int, struct context *, #define USER "_milter-regex" #define OCONN "unix:/var/spool/milter-regex/sock" +#define OPID "/var/spool/milter-regex/milter-regex.pid" #define RCODE_REJECT "554" #define RCODE_TEMPFAIL "451" #define XCODE_REJECT "5.7.1" -@@ -646,6 +648,9 @@ msg(int priority, struct context *contex +@@ -647,6 +649,9 @@ msg(int priority, struct context *contex va_list ap; char msg[8192]; + if (LOG_PRI(priority) > LOG_INFO && quiet) + return; + va_start(ap, fmt); if (context != NULL) snprintf(msg, sizeof(msg), "%s [%s]: ", context->host_name, -@@ -684,6 +689,7 @@ main(int argc, char **argv) +@@ -685,6 +690,7 @@ main(int argc, char **argv) { int ch, maskpri = LOG_INFO; const char *oconn = OCONN; + const char *pid_file_name = OPID; const char *user = USER; const char *jail = NULL; sfsistat r = MI_FAILURE; -@@ -691,8 +697,10 @@ main(int argc, char **argv) - const char *pgroup = NULL; +@@ -693,8 +699,10 @@ main(int argc, char **argv) const char *puser = NULL; mode_t pperm = 0600; + int facility = LOG_DAEMON; + pid_t pid; + FILE *pid_fd = NULL; -- while ((ch = getopt(argc, argv, "c:dj:l:m:p:u:G:P:U:")) != -1) { -+ while ((ch = getopt(argc, argv, "c:dj:l:m:p:qr:u:G:P:U:")) != -1) { +- while ((ch = getopt(argc, argv, "c:df:j:l:m:p:u:G:P:U:")) != -1) { ++ while ((ch = getopt(argc, argv, "c:df:j:l:m:p:qr:u:G:P:U:")) != -1) { switch (ch) { case 'c': rule_file_name = optarg; -@@ -712,6 +720,12 @@ main(int argc, char **argv) +@@ -724,6 +732,12 @@ main(int argc, char **argv) case 'p': oconn = optarg; break; + case 'q': + quiet = 1; + break; + case 'r': + pid_file_name = optarg; + break; case 'u': user = optarg; break; -@@ -833,6 +847,20 @@ main(int argc, char **argv) +@@ -845,6 +859,20 @@ main(int argc, char **argv) } msg(LOG_INFO, NULL, "started: %s", rcsid); + + umask(0006); + + if((pid_fd = fopen(pid_file_name, "w")) == NULL) { + msg(LOG_ERR, NULL, "can't open file: %s", pid_file_name); + goto done; + } else { + pid = getpid(); + fprintf(pid_fd, "%d", (int) pid); + fclose(pid_fd); + } + + umask(0117); /* make socket group writeable */ + r = smfi_main(); if (r != MI_SUCCESS) msg(LOG_ERR, NULL, "smfi_main: terminating due to error");