Changeset View
Changeset View
Standalone View
Standalone View
mail/opendkim/files/milter-opendkim.in
#!/bin/sh | #!/bin/sh | ||||
# | # | ||||
# $FreeBSD$ | |||||
skozlov: Please rebase, this has been removed lately everywhere | |||||
# | |||||
# PROVIDE: milter-opendkim | # PROVIDE: milter-opendkim | ||||
# REQUIRE: DAEMON | # REQUIRE: DAEMON | ||||
# BEFORE: mail | # BEFORE: mail | ||||
# KEYWORD: shutdown | # KEYWORD: shutdown | ||||
# | |||||
# Define these milteropendkim_* variables in one of these files: | # Define these milteropendkim_* variables in one of these files: | ||||
# /etc/rc.conf | # /etc/rc.conf | ||||
# /etc/rc.conf.local | # /etc/rc.conf.local | ||||
# /etc/rc.conf.d/milteropendkim | # /etc/rc.conf.d/milteropendkim | ||||
# | # | ||||
# milteropendkim_enable (bool): Set to "NO" by default. | # milteropendkim_enable (bool): Set to "NO" by default. | ||||
# Set it to "YES" to enable dkim-milter | # Set it to "YES" to enable dkim-milter | ||||
# milteropendkim_uid (str): Set username to run milter. | # milteropendkim_uid (str): Set username to run milter. | ||||
Show All 16 Lines | |||||
# milteropendkim_alg (str): Algorithm to use when signing | # milteropendkim_alg (str): Algorithm to use when signing | ||||
# milteropendkim_flags (str): Flags passed to start command. | # milteropendkim_flags (str): Flags passed to start command. | ||||
. /etc/rc.subr | . /etc/rc.subr | ||||
name="milteropendkim" | name="milteropendkim" | ||||
rcvar=milteropendkim_enable | rcvar=milteropendkim_enable | ||||
extra_commands="reload" | |||||
start_precmd="dkim_prepcmd" | |||||
start_postcmd="dkim_start_postcmd" | |||||
stop_postcmd="dkim_postcmd" | |||||
command="%%PREFIX%%/sbin/opendkim" | |||||
_piddir="/var/run/milteropendkim" | |||||
pidfile="${_piddir}/pid" | |||||
sig_reload="USR1" | |||||
load_rc_config $name | load_rc_config $name | ||||
# | # | ||||
# DO NOT CHANGE THESE DEFAULT VALUES HERE | # DO NOT CHANGE THESE DEFAULT VALUES HERE | ||||
# | # | ||||
: ${milteropendkim_enable="NO"} | : ${milteropendkim_enable:="NO"} | ||||
: ${milteropendkim_uid="mailnull"} | : ${milteropendkim_uid:="mailnull"} | ||||
: ${milteropendkim_gid="mailnull"} | : ${milteropendkim_gid:="mailnull"} | ||||
: ${milteropendkim_cfgfile="%%PREFIX%%/etc/mail/opendkim.conf"} | : ${milteropendkim_cfgfile:="%%PREFIX%%/etc/mail/opendkim.conf"} | ||||
: ${milteropendkim_socket_perms="0755"} | : ${milteropendkim_socket_perms="0755"} | ||||
# Options other than above can be set with $milteropendkim_flags. | # Options other than above can be set with $milteropendkim_flags. | ||||
# see dkim-milter documentation for detail. | # 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 | if [ -n "$2" ]; then | ||||
profile="$2" | profile="$2" | ||||
if [ "x${milteropendkim_profiles}" != "x" ]; then | if [ -n "${milteropendkim_profiles}" ]; then | ||||
pidfile="${_piddir}/${profile}.pid" | |||||
eval milteropendkim_enable="\${milteropendkim_${profile}_enable:-${milteropendkim_enable}}" | eval milteropendkim_enable="\${milteropendkim_${profile}_enable:-${milteropendkim_enable}}" | ||||
eval milteropendkim_socket="\${milteropendkim_${profile}_socket:-}" | eval milteropendkim_socket="\${milteropendkim_${profile}_socket:-}" | ||||
eval milteropendkim_socket_perms="\${milteropendkim_${profile}_socket_perms:-}" | 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)" | echo "You must define a socket (milteropendkim_${profile}_socket)" | ||||
exit 1 | exit 1 | ||||
fi | fi | ||||
eval milteropendkim_cfgfile="\${milteropendkim_${profile}_cfgfile:-${milteropendkim_cfgfile}}" | eval milteropendkim_cfgfile="\${milteropendkim_${profile}_cfgfile:-${milteropendkim_cfgfile}}" | ||||
eval milteropendkim_domain="\${milteropendkim_${profile}_domain:-${milteropendkim_domain}}" | eval milteropendkim_domain="\${milteropendkim_${profile}_domain:-${milteropendkim_domain}}" | ||||
eval milteropendkim_key="\${milteropendkim_${profile}_key:-${milteropendkim_key}}" | eval milteropendkim_key="\${milteropendkim_${profile}_key:-${milteropendkim_key}}" | ||||
eval milteropendkim_selector="\${milteropendkim_${profile}_selector:-${milteropendkim_selector}}" | eval milteropendkim_selector="\${milteropendkim_${profile}_selector:-${milteropendkim_selector}}" | ||||
eval milteropendkim_alg="\${milteropendkim_${profile}_alg:-${milteropendkim_alg}}" | eval milteropendkim_alg="\${milteropendkim_${profile}_alg:-${milteropendkim_alg}}" | ||||
eval milteropendkim_flags="\${milteropendkim_${profile}_flags:-${milteropendkim_flags}}" | eval milteropendkim_flags="\${milteropendkim_${profile}_flags:-${milteropendkim_flags}}" | ||||
if [ -f "${milteropendkim_cfgfile}" ];then | if [ -f "${milteropendkim_cfgfile}" ];then | ||||
milteropendkim_cfgfile="-x ${milteropendkim_cfgfile}" | milteropendkim_cfgfile="-x ${milteropendkim_cfgfile}" | ||||
else | else | ||||
milteropendkim_cfgfile="" | milteropendkim_cfgfile="" | ||||
fi | fi | ||||
if [ "x${milteropendkim_socket}" != "x" ];then | if [ -n "${milteropendkim_socket}" ]; then | ||||
_socket_prefix="-p" | _socket_prefix="-p" | ||||
fi | fi | ||||
if [ "x${milteropendkim_uid}" != "x" ];then | if [ -n "${milteropendkim_uid}" ]; then | ||||
_uid_prefix="-u" | _uid_prefix="-u" | ||||
if [ "x${milteropendkim_gid}" != "x" ];then | if [ -n "${milteropendkim_gid}" ]; then | ||||
milteropendkim_uid=${milteropendkim_uid}:${milteropendkim_gid} | milteropendkim_uid=${milteropendkim_uid}:${milteropendkim_gid} | ||||
fi | fi | ||||
fi | fi | ||||
if [ "x${milteropendkim_domain}" != "x" ];then | if [ -n "${milteropendkim_domain}" ]; then | ||||
milteropendkim_domain="-d ${milteropendkim_domain}" | milteropendkim_domain="-d ${milteropendkim_domain}" | ||||
fi | fi | ||||
if [ "x${milteropendkim_key}" != "x" ];then | if [ -n "${milteropendkim_key}" ]; then | ||||
milteropendkim_key="-k ${milteropendkim_key}" | milteropendkim_key="-k ${milteropendkim_key}" | ||||
fi | fi | ||||
if [ "x${milteropendkim_selector}" != "x" ];then | if [ -n "${milteropendkim_selector}" ]; then | ||||
milteropendkim_selector="-s ${milteropendkim_selector}" | milteropendkim_selector="-s ${milteropendkim_selector}" | ||||
fi | fi | ||||
if [ "x${milteropendkim_alg}" != "x" ];then | if [ -n "${milteropendkim_alg}" ]; then | ||||
milteropendkim_alg="-S ${milteropendkim_alg}" | milteropendkim_alg="-S ${milteropendkim_alg}" | ||||
fi | 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}" | command_args="-l ${_socket_prefix} ${milteropendkim_socket} ${_uid_prefix} ${milteropendkim_uid} -P ${pidfile} ${milteropendkim_cfgfile} ${milteropendkim_domain} ${milteropendkim_key} ${milteropendkim_selector} ${milteropendkim_alg}" | ||||
else | else | ||||
echo "$0: extra argument ignored" | echo "$0: extra argument ignored" | ||||
fi | fi | ||||
else | else | ||||
if [ "x${milteropendkim_profiles}" != "x" -a "x$1" != "x" ]; then | if [ -n "${milteropendkim_profiles}" -a -n "$1" ]; then | ||||
if [ "x$1" != "xrestart" ]; then | case "$1" in | ||||
restart) | |||||
restart_precmd="" | |||||
;; | |||||
*) | |||||
for profile in ${milteropendkim_profiles}; do | for profile in ${milteropendkim_profiles}; do | ||||
echo "===> milteropendkim profile: ${profile}" | echo "===> milteropendkim profile: ${profile}" | ||||
%%PREFIX%%/etc/rc.d/milter-opendkim $1 ${profile} | %%PREFIX%%/etc/rc.d/milter-opendkim $1 ${profile} | ||||
retcode="$?" | retcode="$?" | ||||
if [ "0${retcode}" -ne 0 ]; then | if [ "${retcode}" -ne 0 ]; then | ||||
failed="${profile} (${retcode}) ${failed:-}" | failed="${profile} (${retcode}) ${failed}" | ||||
else | else | ||||
success="${profile} ${success:-}" | success="${profile} ${success}" | ||||
fi | fi | ||||
done | done | ||||
exit 0 | exit 0 | ||||
;; | |||||
esac | |||||
else | else | ||||
restart_precmd="" | |||||
fi | |||||
else | |||||
if [ -f "${milteropendkim_cfgfile}" ];then | if [ -f "${milteropendkim_cfgfile}" ]; then | ||||
milteropendkim_cfgfile="-x ${milteropendkim_cfgfile}" | milteropendkim_cfgfile="-x ${milteropendkim_cfgfile}" | ||||
else | else | ||||
milteropendkim_cfgfile="" | milteropendkim_cfgfile="" | ||||
fi | fi | ||||
if [ "x${milteropendkim_socket}" != "x" ];then | if [ -n "${milteropendkim_socket}" ]; then | ||||
_socket_prefix="-p" | _socket_prefix="-p" | ||||
fi | fi | ||||
if [ "x${milteropendkim_uid}" != "x" ];then | if [ -n "${milteropendkim_uid}" ]; then | ||||
_uid_prefix="-u" | _uid_prefix="-u" | ||||
if [ "x${milteropendkim_gid}" != "x" ];then | if [ -n "${milteropendkim_gid}" ];then | ||||
milteropendkim_uid=${milteropendkim_uid}:${milteropendkim_gid} | milteropendkim_uid=${milteropendkim_uid}:${milteropendkim_gid} | ||||
fi | fi | ||||
fi | fi | ||||
if [ "x${milteropendkim_domain}" != "x" ];then | if [ -n "${milteropendkim_domain}" ];then | ||||
milteropendkim_domain="-d ${milteropendkim_domain}" | milteropendkim_domain="-d ${milteropendkim_domain}" | ||||
fi | fi | ||||
if [ "x${milteropendkim_key}" != "x" ];then | if [ -n "${milteropendkim_key}" ];then | ||||
milteropendkim_key="-k ${milteropendkim_key}" | milteropendkim_key="-k ${milteropendkim_key}" | ||||
fi | fi | ||||
if [ "x${milteropendkim_selector}" != "x" ];then | if [ -n "${milteropendkim_selector}" ];then | ||||
milteropendkim_selector="-s ${milteropendkim_selector}" | milteropendkim_selector="-s ${milteropendkim_selector}" | ||||
fi | fi | ||||
if [ "x${milteropendkim_alg}" != "x" ];then | if [ -n "${milteropendkim_alg}" ];then | ||||
milteropendkim_alg="-S ${milteropendkim_alg}" | milteropendkim_alg="-S ${milteropendkim_alg}" | ||||
fi | 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}" | command_args="-l ${_socket_prefix} ${milteropendkim_socket} ${_uid_prefix} ${milteropendkim_uid} -P ${pidfile} ${milteropendkim_cfgfile} ${milteropendkim_domain} ${milteropendkim_key} ${milteropendkim_selector} ${milteropendkim_alg}" | ||||
fi | fi | ||||
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 [ "x${milteropendkim_socket}" != "x" ] ; 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 [ "x${milteropendkim_socket}" != "x" ] ; 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" | run_rc_command "$1" |
Please rebase, this has been removed lately everywhere