diff options
-rw-r--r-- | mail/milter-regex/Makefile | 14 | ||||
-rw-r--r-- | mail/milter-regex/files/milterregex.sh.in | 42 | ||||
-rw-r--r-- | mail/milter-regex/files/patch-milter-regex.8 | 25 | ||||
-rw-r--r-- | mail/milter-regex/files/patch-milter-regex.c | 85 | ||||
-rw-r--r-- | mail/milter-regex/pkg-install | 55 | ||||
-rw-r--r-- | mail/milter-regex/pkg-message | 11 | ||||
-rw-r--r-- | mail/milter-regex/pkg-plist | 3 |
7 files changed, 178 insertions, 57 deletions
diff --git a/mail/milter-regex/Makefile b/mail/milter-regex/Makefile index af01401bccd6..55b0df1b8df3 100644 --- a/mail/milter-regex/Makefile +++ b/mail/milter-regex/Makefile @@ -12,7 +12,7 @@ CATEGORIES= mail MASTER_SITES= http://www.benzedrine.cx/ DISTNAME= milter-regex-${PORTVERSION} -MAINTAINER= dhartmei@FreeBSD.org +MAINTAINER= ports@freebsd.org COMMENT= Milter plugin to sendmail for regular expression filtering WRKSRC= ${WRKDIR}/milter-regex @@ -21,6 +21,11 @@ MAN8= milter-regex.8 PLIST_FILES= libexec/milter-regex MAKE_ENV+= LDFLAGS="${LDFLAGS}" +USE_RC_SUBR= milterregex.sh + +SPOOLDIR= /var/run/milter-regex +SUB_LIST= SPOOLDIR=${SPOOLDIR} + .include <bsd.port.pre.mk> .if defined(SENDMAIL_MILTER_PORT) @@ -43,9 +48,11 @@ pre-everything:: 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:-lpthread:${PTHREAD_LIBS}:g; \ s:-I/usr/src/gnu/usr.sbin/sendmail/include:${PTHREAD_CFLAGS}:g; \ @@ -55,6 +62,9 @@ post-patch: do-install: @${INSTALL_PROGRAM} ${WRKSRC}/milter-regex ${PREFIX}/libexec @${INSTALL_MAN} ${WRKSRC}/milter-regex.8 ${PREFIX}/man/man8 - @${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL + @${INSTALL} -d -o ${MAILUSER} -g daemon -m 0700 ${SPOOLDIR} + +post-install: + @${CAT} ${PKGMESSAGE} .include <bsd.port.post.mk> diff --git a/mail/milter-regex/files/milterregex.sh.in b/mail/milter-regex/files/milterregex.sh.in new file mode 100644 index 000000000000..f869e5cabc5f --- /dev/null +++ b/mail/milter-regex/files/milterregex.sh.in @@ -0,0 +1,42 @@ +#!/bin/sh + +# Start or stop milterregex + +# PROVIDE: milterregex +# REQUIRE: DAEMON +# BEFORE: mail +# KEYWORD: FreeBSD shutdown +# +# NOTE for FreeBSD 5.0+: +# If you want this script to start with the base rc scripts +# move milterregex to /etc/rc.d/milterregex + +prefix=%%PREFIX%% +spooldir=%%SPOOLDIR%% + +# Define these milterregex_* variables in one of these files: +# /etc/rc.conf +# /etc/rc.conf.local +# /etc/rc.conf.d/milterregex +# +# DO NOT CHANGE THESE DEFAULT VALUES HERE +# +[ -z "$milterregex_enable" ] && milterregex_enable="NO" # Enable milter-regex +#milterregex_program="${prefix}/libexec/milter-regex" # Location of milter-regex +[ -z "$milterregex_flags" ] && milterregex_flags="" # Flags to milter-regex program + +. /etc/rc.subr + +name="milterregex" +rcvar=`set_rcvar` +command="${prefix}/libexec/milter-regex" +pidfile="${spooldir}/milter-regex.pid" +required_files="${prefix}/etc/milter-regex.conf" +stop_postcmd="milterregex_poststop" + +milterregex_poststop() { + /bin/rm -f ${pidfile} +} + +load_rc_config $name +run_rc_command "$1" diff --git a/mail/milter-regex/files/patch-milter-regex.8 b/mail/milter-regex/files/patch-milter-regex.8 new file mode 100644 index 000000000000..f89426009556 --- /dev/null +++ b/mail/milter-regex/files/patch-milter-regex.8 @@ -0,0 +1,25 @@ +*** milter-regex.8.orig Sat Mar 13 12:21:23 2004 +--- milter-regex.8 Wed Sep 6 16:15:59 2006 +*************** +*** 37,42 **** +--- 37,43 ---- + .Nm + .Op Fl d + .Op Fl c Ar config ++ .Op Fl r Ar pid-file + .Op Fl p Ar pipe + .Op Fl u Ar user + .Sh DESCRIPTION +*************** +*** 54,60 **** +--- 54,63 ---- + output on stdout. + .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 p Ar pipe + Use the specified pipe to interface + .Xr sendmail 8 . diff --git a/mail/milter-regex/files/patch-milter-regex.c b/mail/milter-regex/files/patch-milter-regex.c new file mode 100644 index 000000000000..f953d92c6bd0 --- /dev/null +++ b/mail/milter-regex/files/patch-milter-regex.c @@ -0,0 +1,85 @@ +*** milter-regex.c.orig Sun Mar 6 06:42:53 2005 +--- milter-regex.c Wed Sep 6 16:00:00 2006 +*************** +*** 86,93 **** + static void usage(const char *); + static void msg(int, struct context *, const char *, ...); + + #define USER "_milter-regex" + #define OCONN "unix:/var/spool/milter-regex/sock" + #define RCODE_REJECT "554" + #define RCODE_TEMPFAIL "451" + #define XCODE_REJECT "5.7.1" +--- 86,94 ---- + static void usage(const char *); + static void msg(int, struct context *, const char *, ...); + + #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" +*************** +*** 556,565 **** +--- 557,570 ---- + { + int ch; + const char *oconn = OCONN; ++ const char *pid_file_name = OPID; + const char *user = USER; + sfsistat r = MI_FAILURE; + const char *ofile = NULL; + ++ pid_t pid; ++ FILE *pid_fd = NULL; ++ + tzset(); + openlog("milter-regex", LOG_PID | LOG_NDELAY, LOG_DAEMON); + +*************** +*** 577,582 **** +--- 582,590 ---- + case 'u': + user = optarg; + break; ++ case 'r': ++ pid_file_name = optarg; ++ break; + default: + usage(argv[0]); + } +*************** +*** 638,646 **** + fprintf(stderr, "daemon: %s\n", strerror(errno)); + goto done; + } +- umask(0177); + + msg(LOG_INFO, NULL, "started: %s", rcsid); + r = smfi_main(); + if (r != MI_SUCCESS) + msg(LOG_ERR, NULL, "smfi_main: terminating due to error"); +--- 646,667 ---- + fprintf(stderr, "daemon: %s\n", strerror(errno)); + goto done; + } + + 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(0177); ++ + r = smfi_main(); + if (r != MI_SUCCESS) + msg(LOG_ERR, NULL, "smfi_main: terminating due to error"); diff --git a/mail/milter-regex/pkg-install b/mail/milter-regex/pkg-install deleted file mode 100644 index 1d4ae61441d0..000000000000 --- a/mail/milter-regex/pkg-install +++ /dev/null @@ -1,55 +0,0 @@ -#!/bin/sh -# -# $FreeBSD$ -# - -set -e -PATH=/bin:/usr/bin:/sbin:/usr/sbin -PREFIX=${PKG_PREFIX:-/usr/local} -MAILUSER=mailnull -SPOOLDIR=/var/spool/milter-regex - -do_notice() -{ - echo - echo "+---------------" - echo "| milter-regex has been installed as $PREFIX/libexec/milter-regex." - echo "| See milter-regex(8) for instructions on how to register the plugin." - echo "|" - echo "| To start the plugin automatically on startup, one can use:" - echo "|" - echo "| /etc/rc.conf.local" - echo "| milter_regex=YES" - echo "|" - echo "| /etc/rc.local" - echo "| if [ X\"\${milter_regex}\" == X\"YES\" -a \\" - echo "| -x $PREFIX/libexec/milter-regex ]; then" - echo "| echo -n ' milter-regex'" - echo "| $PREFIX/libexec/milter-regex" - echo "| fi" - echo "|" - echo "+---------------" - echo -} - -if [ $# -ne 2 ]; then - echo "usage: $0 distname { PRE-INSTALL | POST-INSTALL }" >&2 - exit 1 -fi - -case $2 in - PRE-INSTALL) - ;; - POST-INSTALL) - if [ ! -d $SPOOLDIR ]; then - install -d -o $MAILUSER -g daemon -m 0700 $SPOOLDIR - fi - do_notice - ;; - *) - echo "usage: $0 distname { PRE-INSTALL | POST-INSTALL }" >&2 - exit 1 - ;; -esac - -exit 0 diff --git a/mail/milter-regex/pkg-message b/mail/milter-regex/pkg-message new file mode 100644 index 000000000000..cfa1b4bb4b40 --- /dev/null +++ b/mail/milter-regex/pkg-message @@ -0,0 +1,11 @@ +===> INSTALL NOTES: + + To run milter-regex daemon on startup, add milterregex_enable="YES" + in your /etc/rc.conf. You will need to create a config file: + + /usr/local/etc/milter-regex.conf + + The plugin needs to be registered in the sendmail(8) configuration. + + See milter-regex(8) for details. + diff --git a/mail/milter-regex/pkg-plist b/mail/milter-regex/pkg-plist new file mode 100644 index 000000000000..461a9cb985c0 --- /dev/null +++ b/mail/milter-regex/pkg-plist @@ -0,0 +1,3 @@ +@exec mkdir -m 700 -p /var/run/milter-regex +@exec chown mailnull:daemon /var/run/milter-regex +@dirrmtry /var/run/milter-regex |