Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 17 Jan 2006 11:48:13 +0900
From:      Hirohisa Yamaguchi <umq@ueo.co.jp>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   ports/91894: [maintainer] mail/dkim-milter startup script now can handle multiple instantiation
Message-ID:  <86d5ir6042.wl%umq@ueo.co.jp>
Resent-Message-ID: <200601170250.k0H2o3C7054860@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         91894
>Category:       ports
>Synopsis:       [maintainer] mail/dkim-milter startup script now can handle multiple instantiation
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          maintainer-update
>Submitter-Id:   current-users
>Arrival-Date:   Tue Jan 17 02:50:02 GMT 2006
>Closed-Date:
>Last-Modified:
>Originator:     Hirohisa Yamaguchi
>Release:        FreeBSD 7.0-CURRENT amd64
>Organization:
<organization of PR author (multiple lines)>
>Environment:
System: FreeBSD calliope.****.org 7.0-CURRENT FreeBSD 7.0-CURRENT #0: Mon Nov 7 17:32:33 JST 2005 root@calliope.****.org:/usr/obj/usr/src/sys/CALLIOPE64 amd64
>Description:
	In some cases, several instances of a milter with different
	configuration run simultaneously; e.g. different key with
	different selector, or domain for dkim-milter.

	This update enables multiple instantiation.
>How-To-Repeat:
>Fix:

	the patch folleos:

diff -rpu ports.orig/mail/dkim-milter/files/milter-dkim.sh.in ports/mail/dkim-milter/files/milter-dkim.sh.in
--- ports.orig/mail/dkim-milter/files/milter-dkim.sh.in	Wed Jan 11 22:50:22 2006
+++ ports/mail/dkim-milter/files/milter-dkim.sh.in	Tue Jan 17 10:45:17 2006
@@ -3,9 +3,9 @@
 # $FreeBSD: ports/mail/dkim-milter/files/milter-dkim.sh.in,v 1.1 2006/01/11 13:50:22 ehaupt Exp $
 #
 
-# PROVIDE: milterdkim
+# PROVIDE: milter-dkim
 # REQUIRE: DAEMON
-# BEFORE: sendmail
+# BEFORE: mail
 # KEYWORD: shutdown
 
 # Define these milterdkim_* variables in one of these files:
@@ -13,28 +13,83 @@
 #	/etc/rc.conf.local
 #	/etc/rc.conf.d/milterdkim
 #
+# milterdkim_enable (bool):   Set to "NO" by default.
+#                             Set it to "YES" to enable dkim-milter
+# milterdkim_profiles (list): Set to "" by default.
+#                             Define your profiles here.
+# milterdkim_socket (str):    Path to the milter socket.
+# milterdkim_domain (str):    Domainpart of From: in mails to sign.
+# milterdkim_key (str):       Path to the private key file to sign with.
+# milterdkim_flags (str):     Flags passed to start command.
+#
+# milterdkim_${profile}_* :   Variables per profile.
+#                             Sockets must be different from each other.
+#
 # DO NOT CHANGE THESE DEFAULT VALUES HERE
 #
 milterdkim_enable=${milterdkim_enable:-"NO"}
+milterdkim_profiles=${milterdkim_profiles:-}
 milterdkim_socket=${milterdkim_socket:-"local:/var/run/dkim-filter"}
-milterdkim_pid=${milterdkim_pid:-"/var/run/dkim-filter.pid"}
 milterdkim_domain=${milterdkim_domain:-"example.com"}
 milterdkim_key=${milterdkim_key:-"/var/db/domainkeys/default.key.pem"}
-milterdkim_flags=${milterdkim_flags:-"-d ${milterdkim_domain} -c nowsp -m MSA \
--s ${milterdkim_key} -S default"}
+## milterdkim_flags expands escaped variables later.
+milterdkim_flags=${milterdkim_flags:-"-d \${milterdkim_domain\} -c nowsp -m MSA \
+-s \${milterdkim_key\} -S default"}
 
 . %%RC_SUBR%%
 
 name="milterdkim"
-pidfile=${milterdkim_pid}
 rcvar=`set_rcvar`
+
+start_precmd="dkim_prepcmd"
+stop_postcmd="dkim_prepcmd"
 command="%%PREFIX%%/libexec/dkim-filter"
-command_args="-l -p ${milterdkim_socket} -P ${milterdkim_pid}"
-stop_postcmd="dkim_postcmd"
+_pidprefix="/var/run/dkim-filter"
+pidfile="${_pidprefix}.pid"
 
 load_rc_config $name
 
-dkim_postcmd ()
+if [ -n "$2" ]; then
+    profile="$2"
+    if [ "x${milterdkim_profiles}" != "x" ]; then
+	pidfile="${_pidprefix}.${profile}.pid"
+	eval milterdkim_enable="\${milterdkim_${profile}_enable:-${milterdkim_enable}}"
+	eval milterdkim_socket="\${milterdkim_${profile}_socket:-}"
+	if [ "x${milterdkim_socket}" = "x" ];then
+	    echo "You must define a socket (milterdkim_${profile}_socket)"
+	    exit 1
+	fi
+	eval milterdkim_domain="\${milterdkim_${profile}_domain:-${milterdkim_domain}}"
+	eval milterdkim_key="\${milterdkim_${profile}_key:-${milterdkim_key}}"
+	eval milterdkim_flags="\${milterdkim_${profile}_flags:-${milterdkim_flags}}"
+	command_args="-l -p ${milterdkim_socket} -P ${pidfile}"
+    else
+	echo "$0: extra argument ignored"
+    fi
+else
+    if [ "x${milterdkim_profiles}" != "x" -a "x$1" != "x" ]; then
+	if [ "x$1" != "xrestart" ]; then
+	    for profile in ${milterdkim_profiles}; do
+		echo "===> milterdkim profile: ${profile}"
+		%%PREFIX%%/etc/rc.d/milter-dkim.sh $1 ${profile}
+		retcode="$?"
+		if [ "0${retcode}" -ne 0 ]; then
+		    failed="${profile} (${retcode}) ${failed:-}"
+		else
+		    success="${profile} ${success:-}"
+		fi
+	    done
+	    exit 0
+	else
+	    restart_precmd=""
+	fi
+    else
+	milterdkim_flags=${milterdkim_flags}
+	command_args="-l -p ${milterdkim_socket} -P ${pidfile}"
+    fi
+fi
+
+dkim_prepcmd ()
 {
     if [ -S ${milterdkim_socket##local:} ] ; then
         rm -f ${milterdkim_socket##local:}
diff -rpu ports.orig/mail/dkim-milter/pkg-message ports/mail/dkim-milter/pkg-message
--- ports.orig/mail/dkim-milter/pkg-message	Wed Jan 11 22:50:22 2006
+++ ports/mail/dkim-milter/pkg-message	Tue Jan 17 05:47:36 2006
@@ -8,4 +8,8 @@ INPUT_MAIL_FILTER(`dkim-filter', `S=unix
 define(`confMILTER_MACROS_CONNECT', `j, {daemon_name}')
 define(`confMILTER_MACROS_ENVFROM', `i, {auth_type}')
 
+And to run the milter from startup, add milterdkim_enable="YES" in
+your /etc/rc.conf.
+Extra options can be found in startup script.
+
 ************************************************************************
>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?86d5ir6042.wl%umq>