mirror of
https://git.freebsd.org/ports.git
synced 2025-05-27 08:26:27 -04:00
mail is a proper category for openarc. PR: 264799 Reported by: Yoshiaki Kasahara <ykasap@gmail.com>
166 lines
5.5 KiB
Bash
166 lines
5.5 KiB
Bash
#!/bin/sh
|
|
|
|
# PROVIDE: milter-openarc
|
|
# REQUIRE: DAEMON
|
|
# BEFORE: mail
|
|
# KEYWORD: shutdown
|
|
|
|
# Define these milteropenarc_* variables in one of these files:
|
|
# /etc/rc.conf
|
|
# /etc/rc.conf.local
|
|
# /etc/rc.conf.d/milteropenarc
|
|
#
|
|
# milteropenarc_enable (bool): Set to "NO" by default.
|
|
# Set it to "YES" to enable arc-milter
|
|
# milteropenarc_uid (str): Set username to run milter.
|
|
# milteropenarc_gid (str): Set group to run milter.
|
|
# milteropenarc_profiles (list): Set to "" by default.
|
|
# Define your profiles here.
|
|
# milteropenarc_cfgfile (str): Configuration file. See openarc.conf(5)
|
|
#
|
|
# milteropenarc_${profile}_* : Variables per profile.
|
|
# Sockets must be different from each other.
|
|
#
|
|
# milteropenarc_socket_perms (str): Permissions for local|unix socket.
|
|
#
|
|
|
|
. /etc/rc.subr
|
|
|
|
name="milteropenarc"
|
|
rcvar=milteropenarc_enable
|
|
|
|
extra_commands="reload"
|
|
start_precmd="arc_prepcmd"
|
|
start_postcmd="arc_start_postcmd"
|
|
stop_postcmd="arc_postcmd"
|
|
command="/usr/local/sbin/openarc"
|
|
_piddir="/var/run/milteropenarc"
|
|
pidfile="${_piddir}/pid"
|
|
sig_reload="USR1"
|
|
|
|
load_rc_config $name
|
|
|
|
#
|
|
# DO NOT CHANGE THESE DEFAULT VALUES HERE
|
|
#
|
|
: ${milteropenarc_enable="NO"}
|
|
: ${milteropenarc_uid="mailnull"}
|
|
: ${milteropenarc_gid="mailnull"}
|
|
: ${milteropenarc_cfgfile="/usr/local/etc/mail/openarc.conf"}
|
|
: ${milteropenarc_socket_perms="0755"}
|
|
|
|
# Options other than above can be set with $milteropenarc_flags.
|
|
# see arc-milter documentation for detail.
|
|
|
|
if [ -n "$2" ]; then
|
|
profile="$2"
|
|
if [ "x${milteropenarc_profiles}" != "x" ]; then
|
|
pidfile="${_piddir}/${profile}.pid"
|
|
eval milteropenarc_enable="\${milteropenarc_${profile}_enable:-${milteropenarc_enable}}"
|
|
eval milteropenarc_socket="\${milteropenarc_${profile}_socket:-}"
|
|
eval milteropenarc_socket_perms="\${milteropenarc_${profile}_socket_perms:-}"
|
|
if [ "x${milteropenarc_socket}" = "x" ];then
|
|
echo "You must define a socket (milteropenarc_${profile}_socket)"
|
|
exit 1
|
|
fi
|
|
eval milteropenarc_cfgfile="\${milteropenarc_${profile}_cfgfile:-${milteropenarc_cfgfile}}"
|
|
if [ -f "${milteropenarc_cfgfile}" ];then
|
|
milteropenarc_cfgfile="-c ${milteropenarc_cfgfile}"
|
|
else
|
|
milteropenarc_cfgfile=""
|
|
fi
|
|
if [ "x${milteropenarc_socket}" != "x" ];then
|
|
_socket_prefix="-p"
|
|
fi
|
|
if [ "x${milteropenarc_uid}" != "x" ];then
|
|
_uid_prefix="-u"
|
|
if [ "x${milteropenarc_gid}" != "x" ];then
|
|
milteropenarc_uid=${milteropenarc_uid}:${milteropenarc_gid}
|
|
fi
|
|
fi
|
|
command_args="-l ${_socket_prefix} ${milteropenarc_socket} ${_uid_prefix} ${milteropenarc_uid} -P ${pidfile} ${milteropenarc_cfgfile}"
|
|
else
|
|
echo "$0: extra argument ignored"
|
|
fi
|
|
else
|
|
if [ "x${milteropenarc_profiles}" != "x" -a "x$1" != "x" ]; then
|
|
if [ "x$1" != "xrestart" ]; then
|
|
for profile in ${milteropenarc_profiles}; do
|
|
echo "===> milteropenarc profile: ${profile}"
|
|
/usr/local/etc/rc.d/milter-openarc $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
|
|
if [ -f "${milteropenarc_cfgfile}" ];then
|
|
milteropenarc_cfgfile="-c ${milteropenarc_cfgfile}"
|
|
else
|
|
milteropenarc_cfgfile=""
|
|
fi
|
|
if [ "x${milteropenarc_socket}" != "x" ];then
|
|
_socket_prefix="-p"
|
|
fi
|
|
if [ "x${milteropenarc_uid}" != "x" ];then
|
|
_uid_prefix="-u"
|
|
if [ "x${milteropenarc_gid}" != "x" ];then
|
|
milteropenarc_uid=${milteropenarc_uid}:${milteropenarc_gid}
|
|
fi
|
|
fi
|
|
command_args="-l ${_socket_prefix} ${milteropenarc_socket} ${_uid_prefix} ${milteropenarc_uid} -P ${pidfile} ${milteropenarc_cfgfile}"
|
|
fi
|
|
fi
|
|
|
|
arc_prepcmd ()
|
|
{
|
|
if [ -S ${milteropenarc_socket##local:} ] ; then
|
|
rm -f ${milteropenarc_socket##local:}
|
|
elif [ -S ${milteropenarc_socket##unix:} ] ; then
|
|
rm -f ${milteropenarc_socket##unix:}
|
|
fi
|
|
if [ ! -d ${_piddir} ] ; then
|
|
mkdir -p ${_piddir}
|
|
fi
|
|
if [ -n "${milteropenarc_uid}" ] ; then
|
|
chown ${milteropenarc_uid} ${_piddir}
|
|
fi
|
|
if [ -n "${milteropenarc_gid}" ] ; then
|
|
chgrp ${milteropenarc_gid} ${_piddir}
|
|
fi
|
|
chmod ${milteropenarc_socket_perms} ${_piddir}
|
|
}
|
|
|
|
arc_start_postcmd ()
|
|
{
|
|
if [ "x${milteropenarc_socket}" != "x" ] ; then
|
|
# postcmd is executed too fast and socket is not created before checking...
|
|
sleep 1
|
|
if [ -S ${milteropenarc_socket##local:} ] ; then
|
|
chmod ${milteropenarc_socket_perms} ${milteropenarc_socket##local:}
|
|
elif [ -S ${milteropenarc_socket##unix:} ] ; then
|
|
chmod ${milteropenarc_socket_perms} ${milteropenarc_socket##unix:}
|
|
fi
|
|
fi
|
|
}
|
|
|
|
arc_postcmd()
|
|
{
|
|
if [ "x${milteropenarc_socket}" != "x" ] ; then
|
|
if [ -S ${milteropenarc_socket##local:} ] ; then
|
|
rm -f ${milteropenarc_socket##local:}
|
|
elif [ -S ${milteropenarc_socket##unix:} ] ; then
|
|
rm -f ${milteropenarc_socket##unix:}
|
|
fi
|
|
fi
|
|
# just if the directory is empty
|
|
rmdir ${_piddir} > /dev/null 2>&1
|
|
}
|
|
|
|
run_rc_command "$1"
|