aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Rees <crees@FreeBSD.org>2022-01-14 17:56:38 +0000
committerChris Rees <crees@FreeBSD.org>2022-01-14 18:01:28 +0000
commit0e46cdf18498118d3309812946e1df0245d62cb0 (patch)
tree98ac1b7512daa6607de89efc59857ea7ad8575a4
parente6a0cfac76fcbddc758dd31189ddcc280507317a (diff)
downloadports-0e46cdf18498118d3309812946e1df0245d62cb0.tar.gz
ports-0e46cdf18498118d3309812946e1df0245d62cb0.zip
mail/opendkim: Respect PidFile setting in opendkim.conf
While here, pet rclint a bit, though it doesn't like the profile parts not being in functions PR: ports/254762 Reported by: Rob LA LAU <freebsd@ohreally.nl> Reviewed by: skozlov (a previous iteration) Approved by: maintainer timeout, 9 months Differential Revision: https://reviews.freebsd.org/D29586
-rw-r--r--mail/opendkim/Makefile2
-rw-r--r--mail/opendkim/files/milter-opendkim.in98
2 files changed, 48 insertions, 52 deletions
diff --git a/mail/opendkim/Makefile b/mail/opendkim/Makefile
index 18cf989dcb06..620252c2fff5 100644
--- a/mail/opendkim/Makefile
+++ b/mail/opendkim/Makefile
@@ -2,7 +2,7 @@
PORTNAME= opendkim
PORTVERSION= 2.10.3
-PORTREVISION= 13
+PORTREVISION= 14
CATEGORIES= mail security
MASTER_SITES= SF/${PORTNAME} \
SF/${PORTNAME}/Previous%20Releases \
diff --git a/mail/opendkim/files/milter-opendkim.in b/mail/opendkim/files/milter-opendkim.in
index 930b91ee32d5..8d83197d8884 100644
--- a/mail/opendkim/files/milter-opendkim.in
+++ b/mail/opendkim/files/milter-opendkim.in
@@ -51,15 +51,55 @@ load_rc_config $name
#
# DO NOT CHANGE THESE DEFAULT VALUES HERE
#
-: ${milteropendkim_enable="NO"}
-: ${milteropendkim_uid="mailnull"}
-: ${milteropendkim_gid="mailnull"}
-: ${milteropendkim_cfgfile="%%PREFIX%%/etc/mail/opendkim.conf"}
-: ${milteropendkim_socket_perms="0755"}
+: ${milteropendkim_enable:="NO"}
+: ${milteropendkim_uid:="mailnull"}
+: ${milteropendkim_gid:="mailnull"}
+: ${milteropendkim_cfgfile:="%%PREFIX%%/etc/mail/opendkim.conf"}
+: ${milteropendkim_socket_perms:="0755"}
# Options other than above can be set with $milteropendkim_flags.
# see dkim-milter documentation for detail.
+extra_commands="reload"
+start_precmd="dkim_prepcmd"
+start_postcmd="dkim_start_postcmd"
+stop_postcmd="dkim_cleansockets"
+command="%%PREFIX%%/sbin/opendkim"
+sig_reload="USR1"
+
+dkim_cleansockets()
+{
+ rm -f "${milteropendkim_socket##local:}" "${milteropendkim_socket##unix:}"
+}
+
+dkim_get_pidfile()
+{
+ if get_pidfile_from_conf PidFile ${milteropendkim_cfgfile#-x }; then
+ pidfile="$_pidfile_from_conf"
+ else
+ pidfile="/var/run/milteropendkim/${profile:-pid}"
+ fi
+}
+
+dkim_prepcmd()
+{
+ dkim_cleansockets
+ dkim_get_pidfile
+ install -d -o ${milteropendkim_uid%:*} -g $milteropendkim_gid \
+ -m ${milteropendkim_socket_perms} ${pidfile%/*}
+}
+
+dkim_start_postcmd()
+{
+ if [ -n "${milteropendkim_socket}" ] ; then
+ # postcmd is executed too fast and socket is not created before checking...
+ sleep 1
+ chmod -f ${milteropendkim_socket_perms} \
+ ${milteropendkim_socket##local:} \
+ ${milteropendkim_socket##unix:}
+ fi
+}
+
if [ -n "$2" ]; then
profile="$2"
if [ -n "${milteropendkim_profiles}" ]; then
@@ -67,7 +107,7 @@ if [ -n "$2" ]; then
eval milteropendkim_enable="\${milteropendkim_${profile}_enable:-${milteropendkim_enable}}"
eval milteropendkim_socket="\${milteropendkim_${profile}_socket:-}"
eval milteropendkim_socket_perms="\${milteropendkim_${profile}_socket_perms:-}"
- if [ "x${milteropendkim_socket}" = "x" ];then
+ if [ -z "${milteropendkim_socket}" ];then
echo "You must define a socket (milteropendkim_${profile}_socket)"
exit 1
fi
@@ -103,6 +143,7 @@ if [ -n "$2" ]; then
if [ -n "${milteropendkim_alg}" ];then
milteropendkim_alg="-S ${milteropendkim_alg}"
fi
+ dkim_get_pidfile
command_args="-l ${_socket_prefix} ${milteropendkim_socket} ${_uid_prefix} ${milteropendkim_uid} -P ${pidfile} ${milteropendkim_cfgfile} ${milteropendkim_domain} ${milteropendkim_key} ${milteropendkim_selector} ${milteropendkim_alg}"
else
echo "$0: extra argument ignored"
@@ -155,49 +196,4 @@ else
fi
fi
-dkim_prepcmd ()
-{
- if [ -S "${milteropendkim_socket##local:}" ] ; then
- rm -f "${milteropendkim_socket##local:}"
- elif [ -S "${milteropendkim_socket##unix:}" ] ; then
- rm -f "${milteropendkim_socket##unix:}"
- fi
- if [ ! -d ${_piddir} ] ; then
- mkdir -p ${_piddir}
- fi
- if [ -n "${milteropendkim_uid}" ] ; then
- chown ${milteropendkim_uid} ${_piddir}
- fi
- if [ -n "${milteropendkim_gid}" ] ; then
- chgrp ${milteropendkim_gid} ${_piddir}
- fi
- chmod ${milteropendkim_socket_perms} ${_piddir}
-}
-
-dkim_start_postcmd ()
-{
- if [ -n "${milteropendkim_socket}" ] ; then
- # postcmd is executed too fast and socket is not created before checking...
- sleep 1
- if [ -S "${milteropendkim_socket##local:}" ] ; then
- chmod ${milteropendkim_socket_perms} ${milteropendkim_socket##local:}
- elif [ -S "${milteropendkim_socket##unix:}" ] ; then
- chmod ${milteropendkim_socket_perms} ${milteropendkim_socket##unix:}
- fi
- fi
-}
-
-dkim_postcmd()
-{
- if [ -n "${milteropendkim_socket}" ] ; then
- if [ -S "${milteropendkim_socket##local:}" ] ; then
- rm -f "${milteropendkim_socket##local:}"
- elif [ -S "${milteropendkim_socket##unix:}" ] ; then
- rm -f "${milteropendkim_socket##unix:}"
- fi
- fi
- # just if the directory is empty
- rmdir ${_piddir} > /dev/null 2>&1
-}
-
run_rc_command "$1"