diff options
author | Andrey Slusar <anray@FreeBSD.org> | 2006-01-17 14:10:08 +0000 |
---|---|---|
committer | Andrey Slusar <anray@FreeBSD.org> | 2006-01-17 14:10:08 +0000 |
commit | 28b5848449e83c6ed5c18d72a1ec29f3f4e75d55 (patch) | |
tree | 97f0a4d1960a92e10544805ebf605a1abf477326 /mail/dk-milter | |
parent | 2265e438583f3942fdf308bc32400289b6e66f2a (diff) | |
download | ports-28b5848449e83c6ed5c18d72a1ec29f3f4e75d55.tar.gz ports-28b5848449e83c6ed5c18d72a1ec29f3f4e75d55.zip |
In some cases, several instances of a milter with different
configuration run simultaneously; e.g. different key with
different selector, or domain for dk-milter.
This patch enables multiple instantiation.
Almost the same as ports/91894
PR: ports/91895
Submitted by: Hirohisa Yamaguchi <umq@ueo.co.jp>
Notes
Notes:
svn path=/head/; revision=153740
Diffstat (limited to 'mail/dk-milter')
-rw-r--r-- | mail/dk-milter/Makefile | 2 | ||||
-rw-r--r-- | mail/dk-milter/files/milter-dk.sh.in | 73 | ||||
-rw-r--r-- | mail/dk-milter/pkg-message | 4 |
3 files changed, 69 insertions, 10 deletions
diff --git a/mail/dk-milter/Makefile b/mail/dk-milter/Makefile index 369d81467ec3..e26e405feea0 100644 --- a/mail/dk-milter/Makefile +++ b/mail/dk-milter/Makefile @@ -7,7 +7,7 @@ PORTNAME= dk-milter PORTVERSION= 0.3.2 -PORTREVISION= 1 +PORTREVISION= 2 CATEGORIES= mail MASTER_SITES= ${MASTER_SITE_SOURCEFORGE} MASTER_SITE_SUBDIR= dk-milter diff --git a/mail/dk-milter/files/milter-dk.sh.in b/mail/dk-milter/files/milter-dk.sh.in index d6eb86a11494..03143f79ccde 100644 --- a/mail/dk-milter/files/milter-dk.sh.in +++ b/mail/dk-milter/files/milter-dk.sh.in @@ -3,9 +3,9 @@ # $FreeBSD$ # -# PROVIDE: milterdk +# PROVIDE: milter-dk # REQUIRE: DAEMON -# BEFORE: sendmail +# BEFORE: mail # KEYWORD: shutdown # Define these milterdk_* variables in one of these files: @@ -13,28 +13,83 @@ # /etc/rc.conf.local # /etc/rc.conf.d/milterdk # +# milterdk_enable (bool): Set to "NO" by default. +# Set it to "YES" to enable dk-milter +# milterdk_profiles (list): Set to "" by default. +# Define your profiles here. +# milterdk_socket (str): Path to the milter socket. +# milterdk_domain (str): Domainpart of From: in mails to sign. +# milterdk_key (str): Path to the private key file to sign with. +# milterdk_flags (str): Flags passed to start command. +# +# milterdk_${profile}_* : Variables per profile. +# Sockets must be different from each other. +# # DO NOT CHANGE THESE DEFAULT VALUES HERE # milterdk_enable=${milterdk_enable:-"NO"} +milterdk_profiles=${milterdk_profiles:-} milterdk_socket=${milterdk_socket:-"local:/var/run/dk-filter"} -milterdk_pid=${milterdk_pid:-"/var/run/dk-filter.pid"} milterdk_domain=${milterdk_domain:-"example.com"} milterdk_key=${milterdk_key:-"/var/db/domainkeys/default.key.pem"} -milterdk_flags=${milterdk_flags:-"-d ${milterdk_domain} -c nofws -H -m MSA \ --s ${milterdk_key} -S default"} +## milterdk_flags expands escaped variables later. +milterdk_flags=${milterdk_flags:-"-d \${milterdk_domain\} -c nofws -H -m MSA \ +-s \${milterdk_key\} -S default"} . %%RC_SUBR%% name="milterdk" -pidfile=${milterdk_pid} rcvar=`set_rcvar` + +start_precmd="dk_prepcmd" +stop_postcmd="dk_prepcmd" command="%%PREFIX%%/libexec/dk-filter" -command_args="-l -p ${milterdk_socket} -P ${milterdk_pid}" -stop_postcmd="dk_postcmd" +_pidprefix="/var/run/dk-filter" +pidfile="${_pidprefix}.pid" load_rc_config $name -dk_postcmd () +if [ -n "$2" ]; then + profile="$2" + if [ "x${milterdk_profiles}" != "x" ]; then + pidfile="${_pidprefix}.${profile}.pid" + eval milterdk_enable="\${milterdk_${profile}_enable:-${milterdk_enable}}" + eval milterdk_socket="\${milterdk_${profile}_socket:-}" + if [ "x${milterdk_socket}" = "x" ];then + echo "You must define a socket (milterdk_${profile}_socket)" + exit 1 + fi + eval milterdk_domain="\${milterdk_${profile}_domain:-${milterdk_domain}}" + eval milterdk_key="\${milterdk_${profile}_key:-${milterdk_key}}" + eval milterdk_flags="\${milterdk_${profile}_flags:-${milterdk_flags}}" + command_args="-l -p ${milterdk_socket} -P ${pidfile}" + else + echo "$0: extra argument ignored" + fi +else + if [ "x${milterdk_profiles}" != "x" -a "x$1" != "x" ]; then + if [ "x$1" != "xrestart" ]; then + for profile in ${milterdk_profiles}; do + echo "===> milterdk profile: ${profile}" + %%PREFIX%%/etc/rc.d/milter-dk.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 + milterdk_flags=${milterdk_flags} + command_args="-l -p ${milterdk_socket} -P ${pidfile}" + fi +fi + +dk_prepcmd () { if [ -S ${milterdk_socket##local:} ] ; then rm -f ${milterdk_socket##local:} diff --git a/mail/dk-milter/pkg-message b/mail/dk-milter/pkg-message index 97cb833f5a16..c7131c128645 100644 --- a/mail/dk-milter/pkg-message +++ b/mail/dk-milter/pkg-message @@ -8,4 +8,8 @@ INPUT_MAIL_FILTER(`dk-filter', `S=unix:/var/run/dk-filter, F=T, T=R:2m') define(`confMILTER_MACROS_CONNECT', `j, {daemon_name}') define(`confMILTER_MACROS_ENVFROM', `i, {auth_type}') +And to run the milter from startup, add milterdk_enable="YES" in +your /etc/rc.conf. +Extra options can be found in startup script. + ************************************************************************ |