diff options
author | Pav Lucistnik <pav@FreeBSD.org> | 2006-09-25 17:44:40 +0000 |
---|---|---|
committer | Pav Lucistnik <pav@FreeBSD.org> | 2006-09-25 17:44:40 +0000 |
commit | b4b077fb16ecef4253470e6afcb3d05b77785f7e (patch) | |
tree | 3b670cd454c0550f579fd97940fdf78ceb610d98 /mail/dk-milter/files | |
parent | 0bbeb8e1fd644d89c74e846bb670c04bb2760ed1 (diff) |
Notes
Diffstat (limited to 'mail/dk-milter/files')
-rw-r--r-- | mail/dk-milter/files/milter-dk.sh.in | 36 | ||||
-rw-r--r-- | mail/dk-milter/files/patch-vendor-postfix | 57 |
2 files changed, 75 insertions, 18 deletions
diff --git a/mail/dk-milter/files/milter-dk.sh.in b/mail/dk-milter/files/milter-dk.sh.in index 519e53d1dd05..25d103de5847 100644 --- a/mail/dk-milter/files/milter-dk.sh.in +++ b/mail/dk-milter/files/milter-dk.sh.in @@ -15,6 +15,7 @@ # # milterdk_enable (bool): Set to "NO" by default. # Set it to "YES" to enable dk-milter +# milterdk_uid (str): Set username to run milter. # milterdk_profiles (list): Set to "" by default. # Define your profiles here. # milterdk_socket (str): Path to the milter socket. @@ -37,24 +38,25 @@ load_rc_config $name # DO NOT CHANGE THESE DEFAULT VALUES HERE # milterdk_enable=${milterdk_enable:-"NO"} +milterdk_uid=${milterdk_uid:-"dkfilter"} milterdk_profiles=${milterdk_profiles:-} milterdk_socket=${milterdk_socket:-"local:/var/run/dk-filter"} milterdk_domain=${milterdk_domain:-"example.com"} milterdk_key=${milterdk_key:-"/var/db/domainkeys/default.key.pem"} milterdk_selector=${milterdk_selector:-"default"} -milterdk_flags=${milterdk_flags:-"-d ${milterdk_domain} -c nofws -H -m MSA \ --s ${milterdk_key} -S ${milterdk_selector}"} +## milterdk_flags expands escaped variables later. +milterdk_flags=${milterdk_flags:-'-d ${milterdk_domain} -c nofws -H -m MSA -s ${milterdk_key} -S ${milterdk_selector}'} start_precmd="dk_prepcmd" -stop_postcmd="dk_prepcmd" +stop_postcmd="dk_postcmd" command="%%PREFIX%%/libexec/dk-filter" -_pidprefix="/var/run/dk-filter" -pidfile="${_pidprefix}.pid" +_piddir="/var/run/milterdk" +pidfile="${_piddir}/pid" if [ -n "$2" ]; then profile="$2" if [ "x${milterdk_profiles}" != "x" ]; then - pidfile="${_pidprefix}.${profile}.pid" + pidfile="${_piddir}/${profile}.pid" eval milterdk_enable="\${milterdk_${profile}_enable:-${milterdk_enable}}" eval milterdk_socket="\${milterdk_${profile}_socket:-}" if [ "x${milterdk_socket}" = "x" ];then @@ -64,7 +66,7 @@ if [ -n "$2" ]; then 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}" + command_args="-l -p ${milterdk_socket} -u ${milterdk_uid} -P ${pidfile}" else echo "$0: extra argument ignored" fi @@ -87,7 +89,7 @@ else fi else milterdk_flags=${milterdk_flags} - command_args="-l -p ${milterdk_socket} -P ${pidfile}" + command_args="-l -p ${milterdk_socket} -u ${milterdk_uid} -P ${pidfile}" fi fi @@ -98,6 +100,24 @@ dk_prepcmd () elif [ -S ${milterdk_socket##unix:} ] ; then rm -f ${milterdk_socket##unix:} fi + if [ -d ${_piddir} ] ; then + return; + fi + mkdir -p ${_piddir} + if [ -n "${milterdk_uid}" ] ; then + chown ${milterdk_uid} ${_piddir} + fi +} + +dk_postcmd() +{ + if [ -S ${milterdk_socket##local:} ] ; then + rm -f ${milterdk_socket##local:} + elif [ -S ${milterdk_socket##unix:} ] ; then + rm -f ${milterdk_socket##unix:} + fi + # just if the directory is empty + rmdir ${_piddir} > /dev/null 2>&1 } run_rc_command "$1" diff --git a/mail/dk-milter/files/patch-vendor-postfix b/mail/dk-milter/files/patch-vendor-postfix index bfcd3bcb71a2..eaa27d69c7d4 100644 --- a/mail/dk-milter/files/patch-vendor-postfix +++ b/mail/dk-milter/files/patch-vendor-postfix @@ -1,12 +1,22 @@ -Index: dk-filter/dk-filter.c -=================================================================== -RCS file: /cvs/dk-filter/dk-filter.c,v -retrieving revision 1.158 -retrieving revision 1.159 -diff -u -r1.158 -r1.159 --- dk-filter/dk-filter.c 19 May 2006 21:42:05 -0000 1.158 -+++ dk-filter/dk-filter.c 26 Jun 2006 19:41:23 -0000 1.159 -@@ -1625,6 +1625,8 @@ ++++ dk-filter/dk-filter.c 31 Aug 2006 21:37:17 -0000 +@@ -1582,15 +1582,7 @@ + + dfc->mctx_jobid = smfi_getsymval(ctx, "i"); + if (dfc->mctx_jobid == NULL) +- { +- if (no_i_whine && dolog) +- { +- syslog(LOG_WARNING, +- "WARNING: sendmail symbol 'i' not available"); +- no_i_whine = FALSE; +- } + dfc->mctx_jobid = JOBIDUNKNOWN; +- } + + #if _FFR_REQUIRED_HEADERS + /* if requested, verify RFC2822-required headers */ +@@ -1625,6 +1617,8 @@ } #endif /* _FFR_REQUIRED_HEADERS */ @@ -15,7 +25,7 @@ diff -u -r1.158 -r1.159 /* find the Sender: or From: header */ memset(addr, '\0', sizeof addr); from = dkf_findheader(dfc, "Sender", 0); -@@ -1639,7 +1641,8 @@ +@@ -1639,7 +1633,8 @@ dfc->mctx_jobid); } @@ -25,7 +35,7 @@ diff -u -r1.158 -r1.159 dfc->mctx_headeronly = TRUE; dfc->mctx_status = DKF_STATUS_BADFORMAT; return SMFIS_CONTINUE; -@@ -1669,7 +1672,6 @@ +@@ -1669,7 +1664,6 @@ originok = FALSE; /* is it a domain we sign for? */ @@ -33,6 +43,33 @@ diff -u -r1.158 -r1.159 if (!msgsigned && domains != NULL && dfc->mctx_domain != NULL) { int n; +@@ -2075,6 +2069,26 @@ + assert(cc != NULL); + dfc = cc->cctx_msg; + assert(dfc != NULL); ++ ++ /* ++ ** If necessary, try again to get the job ID in case it came down ++ ** later than expected (e.g. postfix). ++ */ ++ ++ if (dfc->mctx_jobid == JOBIDUNKNOWN) ++ { ++ dfc->mctx_jobid = smfi_getsymval(ctx, "i"); ++ if (dfc->mctx_jobid == NULL) ++ { ++ if (no_i_whine && dolog) ++ { ++ syslog(LOG_WARNING, ++ "WARNING: sendmail symbol 'i' not available"); ++ no_i_whine = FALSE; ++ } ++ dfc->mctx_jobid = JOBIDUNKNOWN; ++ } ++ } + + /* get hostname; used in the X header and in new MIME boundaries */ + hostname = smfi_getsymval(ctx, "j"); Index: libdk/dk.c =================================================================== RCS file: /cvs/libdk/dk.c,v |