Fri Dec 16 15:56:05 2016 UTC ()
Add SMF manifest and method.


(hans)
diff -r1.34 -r1.35 pkgsrc/mail/spamass-milter/Makefile
diff -r0 -r1.1 pkgsrc/mail/spamass-milter/files/smf/manifest.xml
diff -r0 -r1.1 pkgsrc/mail/spamass-milter/files/smf/spamass-milter.sh

cvs diff -r1.34 -r1.35 pkgsrc/mail/spamass-milter/Makefile (expand / switch to context diff)
--- pkgsrc/mail/spamass-milter/Makefile 2016/12/07 00:36:24 1.34
+++ pkgsrc/mail/spamass-milter/Makefile 2016/12/16 15:56:05 1.35
@@ -1,7 +1,8 @@
-# $NetBSD: Makefile,v 1.34 2016/12/07 00:36:24 wiedi Exp $
+# $NetBSD: Makefile,v 1.35 2016/12/16 15:56:05 hans Exp $
 #
 
 DISTNAME=	spamass-milter-0.4.0
+PKGREVISION=	1
 CATEGORIES=	mail
 MASTER_SITES=	http://savannah.nongnu.org/download/spamass-milt/
 
@@ -19,6 +20,7 @@
 CPPFLAGS.SunOS+=	-Du_int8_t=uint8_t
 
 RCD_SCRIPTS=	spamass-milter
+SMF_METHODS=	spamass-milter
 
 .include "../../mail/libmilter/buildlink3.mk"
 .include "../../mk/pthread.buildlink3.mk"

File Added: pkgsrc/mail/spamass-milter/files/smf/manifest.xml
<?xml version="1.0"?>
<!--

This file and its contents are supplied under the terms of the
Common Development and Distribution License ("CDDL"), version 1.0.
You may only use this file in accordance with the terms of version
1.0 of the CDDL.
A full copy of the text of the CDDL should have accompanied this
source.  A copy of the CDDL is also available via the Internet at
http://www.illumos.org/license/CDDL.

-->
<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
<!--
  Copyright 2016 Hans Rosenfeld <rosenfeld@grumpf.hope-2000.org>
-->
<service_bundle type='manifest' name='@SMF_NAME@'>
  <service name='@SMF_PREFIX@/@SMF_NAME@' type='service' version='1'>
    <dependency name='filesystem_minimal' grouping='require_all' restart_on='none' type='service'>
      <service_fmri value='svc:/system/filesystem/local' />
    </dependency>
    <dependency name='loopback' grouping='require_any' restart_on='error' type='service'>
      <service_fmri value='svc:/network/loopback' />
    </dependency>
    <dependency name='network' grouping='optional_all' restart_on='error' type='service'>
      <service_fmri value='svc:/milestone/network' />
    </dependency>
    <dependency name='spamassassin' grouping='require_any' restart_on='error' type='service'>
      <service_fmri value='svc:/@SMF_PREFIX@/spamassassin' />
    </dependency>
    <instance name='default' enabled='false'>
      <exec_method type='method' name='start' exec='@PREFIX@/@SMF_METHOD_FILE.spamass-milter@ %m %i' timeout_seconds='60' />
      <exec_method type='method' name='stop' exec=':kill' timeout_seconds='60' />
      <!-- Default property settings for spamass-milter(1) instance. -->
      <property_group name='options' type='application'>
        <!--	socket-path: pathname for milter socket -->
        <propval name='socket-path' type='astring' value='/var/run/spamass-milter.sock' />
        <!--	reject-code: SMTP reject code for rejected spam -->
        <propval name='reject-code' type='astring' value='' />
        <!--	reject-text: message text for rejected spam -->
        <propval name='reject-text' type='astring' value='' />
        <!--	reject-threshold: minimum spam score for rejecting spam -->
        <propval name='reject-threshold' type='integer' value='' />
        <!--	ignore-nets: comma-separated list of IP nets that can send mail unchecked-->
        <propval name='ignore-nets' type='astring' value='' />
        <!--	ignore-auth: don't scan mail from authenticated users -->
        <propval name='ignore-auth' type='boolean' value='true' />
        <!--	default-user: fallback user, and alway pass receipient user name to spamc -->
        <propval name='default-user' type='astring' value='' />
        <!--	lookup-users: call sendmail to translate receipient to user -->
        <propval name='lookup-users' type='boolean' value='false' />
        <!--	spamc-flags: flags passed verbatim to spamc -->
        <propval name='spamc-flags' type='astring' value='' />
      </property_group>
    </instance>
    <stability value='Unstable' />
    <template>
      <common_name>
        <loctext xml:lang='C'>Spamassassin Milter</loctext>
      </common_name>
      <documentation>
        <manpage title='spamass-milter' section='8' manpath='@PREFIX@/@PKGMANDIR@' />
      </documentation>
    </template>
  </service>
</service_bundle>

File Added: pkgsrc/mail/spamass-milter/files/smf/spamass-milter.sh
#!@SMF_METHOD_SHELL@
#
# $NetBSD: spamass-milter.sh,v 1.1 2016/12/16 15:56:05 hans Exp $
#
# This file and its contents are supplied under the terms of the
# Common Development and Distribution License ("CDDL"), version 1.0.
# You may only use this file in accordance with the terms of version
# 1.0 of the CDDL.
#
# A full copy of the text of the CDDL should have accompanied this
# source.  A copy of the CDDL is also available via the Internet at
# http://www.illumos.org/license/CDDL.
#
# Copyright 2016 Hans Rosenfeld <rosenfeld@grumpf.hope-2000.org>
#

# smf_method(5) start/stop script required for spamass-milter

. /lib/svc/share/smf_include.sh


get_config ()
{   
    cmdopts=""
    # spamc-flags must be last
    properties="socket-path reject-code reject-text reject-threshold ignore-nets ignore-auth default-user lookup-users spamc-flags"

    for prop in $properties
    do
        value=`/usr/bin/svcprop -p options/${prop} ${SMF_FMRI}`
        if [ -z "${value}" -o "${value}" = '""' ]; then
            continue;
        fi

        case $prop in
        'socket-path')
            cmdopts="${cmdopts} -p ${value}"
            ;;
        'reject-code')
            cmdopts="${cmdopts} -C ${value}"
            ;;
        'reject-text')
            cmdopts="${cmdopts} -R ${value}"
            ;;
        'reject-threshold')
            if [ ${value} != "0" ]; then
                cmdopts="${cmdopts} -r ${value}"
            fi
            ;;
        'ignore-nets')
            cmdopts="${cmdopts} -i ${value}"
            ;;
        'ignore-auth')
            if [ ${value} = "true" ]; then
                cmdopts="${cmdopts} -a"
            fi
            ;;
        'default-user')
            cmdopts="${cmdopts} -u ${value}"
            ;;
        'lookup-users')
            if [ ${value} = "true" ]; then
                cmdopts="${cmdopts} -x"
            fi
            ;;
        'spamc-flags')
            value=`echo ${value} | sed -e 's/\\\\//g'`
            cmdopts="${cmdopts} -- ${value}"
            ;;
        esac
    done
}

result=${SMF_EXIT_OK}

# Set defaults; SMF_FMRI should have been set, but just in case.
if [ -z "$SMF_FMRI" ]; then
    SMF_FMRI="svc:/@SMF_PREFIX@/@SMF_NAME@:${instance}"
fi

get_config

# Execute spamd with relevant command line options.
ppriv -s A-all -s A+basic,net_privaddr,file_dac_read,file_dac_search,sys_resource,proc_setid -e @PREFIX@/sbin/spamass-milter -f ${cmdopts}

exit $?