i'm not to understand well what you mean with patch?
here are the files i used on my server, if help:
cat /var/svc/manifest/network/smtp-sndm2.xml
<?xml version="1.0"?>
<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
<!--
        Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
        Use is subject to license terms.

        ident   "@(#)smtp-sndm2.xml     1.0     04/11/05 GPG"
-->

<service_bundle type='manifest' name='sndm2'>

<service
        name='network/smtp'
        type='service'
        version='1'>

        <single_instance />

        <dependency
            name='fs-local'
            grouping='require_all'
            restart_on='none'
            type='service'>
                <service_fmri value='svc:/system/filesystem/local' />
        </dependency>

        <dependency
            name='network-service'
            grouping='require_all'
            restart_on='none'
            type='service'>
                <service_fmri value='svc:/network/service' />
        </dependency>

        <dependency
            name='name-services'
            grouping='require_all'
            restart_on='refresh'
            type='service'>
                <service_fmri value='svc:/milestone/name-services' />
        </dependency>

        <dependency
            name='identity'
            grouping='optional_all'
            restart_on='refresh'
            type='service'>
                <service_fmri value='svc:/system/identity:domain' />
        </dependency>

        <dependency
            name='system-log'
            grouping='optional_all'
            restart_on='none'
            type='service'>
                <service_fmri value='svc:/system/system-log' />
        </dependency>

        <instance name='sndm2' enabled='true'>

                <dependency
                    name='config-file'
                    grouping='require_all'
                    restart_on='refresh'
                    type='path'>
                        <service_fmri
                            value='file://localhost/etc/mail/sendmail.cf' />
                </dependency>

                <dependency
                    name='nsswitch'
                    grouping='require_all'
                    restart_on='refresh'
                    type='path'>
                        <service_fmri
                            value='file://localhost/etc/nsswitch.conf' />
                </dependency>

                <!--
                If autofs is enabled, wait for it to get users' home
                directories.
                -->
                <dependency
                    name='autofs'
                    grouping='optional_all'
                    restart_on='none'
                    type='service'>
                        <service_fmri value='svc:/system/filesystem/autofs' />
                </dependency>

                <dependent
                        name='smtp-sndm2_multi-user'
                        grouping='optional_all'
                        restart_on='none'>
                                <service_fmri
                                    value='svc:/milestone/multi-user' />
                </dependent>

                <!--
                Sendmail is hard-coded to sleep for 60 seconds if it cannot
                determine the FQHN, so the timeout for start must be longer
                than that.  For details, see
                http://www.sendmail.org/vendor/sun/differences.html#3.2
                -->

                <exec_method
                        type='method'
                        name='start'
                        exec='/opt/smtp-sendmail start'
                        timeout_seconds='120' />

                <exec_method
                        type='method'
                        name='stop'
                        exec='/opt/smtp-sendmail stop %{restarter/contract}'
                        timeout_seconds='60' />

                <exec_method
                        type='method'
                        name='refresh'
                        exec='/opt/smtp-sendmail refresh'
                        timeout_seconds='60' />

                <property_group name='startd' type='framework'>
                        <propval name='ignore_error' type='astring'
                            value='core,signal' />
                </property_group>

                <template>
                        <common_name>
                                <loctext xml:lang='C'>
                                sndm2 SMTP mail transfer agent
                                </loctext>
                        </common_name>
                        <documentation>
                                <manpage title='sendmail' section='1'
                                    manpath='/usr/share/man' />
                        </documentation>
                </template>

        </instance>

        <stability value='Unstable' />

</service>

</service_bundle>


cat  /opt/smtp-sendmail 
#!/sbin/sh
#
# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
# Use is subject to license terms.
#
# ident "@(#)smtp-sendmail      1.26    06/08/01 SMI"

. /lib/svc/share/smf_include.sh

ERRMSG1='WARNING: /var/mail is NFS-mounted without setting actimeo=0,'
ERRMSG2='this can cause mailbox locking and access problems.'
SERVER_PID_FILE="/var/run/sendmail.pid"
SERVER_PID_FILE2="/var/run/sendmail2.pid"
CLIENT_PID_FILE="/var/spool/clientmqueue/sm-client.pid"
DEFAULT_FILE="/etc/default/sendmail"
ALIASES_FILE="/etc/mail/aliases"

check_queue_interval_syntax()
{
        default="15m"
        if [ $# -lt 1 ]; then
                answer=$default
                return
        fi
        if echo $1 | egrep '^([0-9]*[1-9][0-9]*[smhdw])+$' >/dev/null 2>&1; then
                answer=$1
        else
                answer=$default
        fi
}

check_and_kill()
{
        PID=`head -1 $1`
        kill -0 $PID > /dev/null 2>&1
        [ $? -eq 0 ] && kill $PID
}

case "$1" in 
'refresh')
        [ -f $SERVER_PID_FILE ] && kill -1 `head -1 $SERVER_PID_FILE`
        [ -f $CLIENT_PID_FILE ] && kill -1 `head -1 $CLIENT_PID_FILE`
        ;;

'start')
        if [ ! -f /usr/lib/sendmail -o ! -f /etc/mail/sendmail.cf ]; then
                exit $SMF_EXIT_ERR_CONFIG
        fi
        if [ ! -d /var/spool/mqueue ]; then
                /usr/bin/mkdir -m 0750 /var/spool/mqueue
                /usr/bin/chown root:bin /var/spool/mqueue
        fi
        if [ ! -f $ALIASES_FILE.db ] && [ ! -f $ALIASES_FILE.dir ] \
            && [ ! -f $ALIASES_FILE.pag ]; then
                /usr/sbin/newaliases
        fi
        MODE="-bd"
        [ -f $DEFAULT_FILE ] && . $DEFAULT_FILE
        #
        # * MODE should be "-bd" or null (MODE= or MODE="") or
        #   left alone.  Anything else and you're on your own.
        # * QUEUEOPTION should be "p" or null (as above).
        # * [CLIENT]QUEUEINTERVAL should be set to some legal value;
        #   sanity checks are done below.
        # * [CLIENT]OPTIONS are catch-alls; set with care.
        #
        if [ -n "$QUEUEOPTION" -a "$QUEUEOPTION" != "p" ]; then
                QUEUEOPTION=""
        fi
        if [ -z "$QUEUEOPTION" -o -n "$QUEUEINTERVAL" ]; then
                check_queue_interval_syntax $QUEUEINTERVAL
                QUEUEINTERVAL=$answer
        fi
        check_queue_interval_syntax $CLIENTQUEUEINTERVAL
        CLIENTQUEUEINTERVAL=$answer

        local=`/usr/bin/svcprop -p config/local_only $SMF_FMRI 2>/dev/null`
        if [ $? = 0 -a "$local" = "true" ]; then
                OPTIONS="$OPTIONS -C /etc/mail/local.cf"
        fi

        /usr/lib/sendmail $MODE -ODeliveryMode=queueonly 
-OQueueDirectory=/var/spool/mqueue.in -OPidFile=$SERVER_PID_FILE2 &
        /usr/lib/sendmail -q$QUEUEOPTION$QUEUEINTERVAL $OPTIONS &
        /usr/lib/sendmail -Ac -q$CLIENTQUEUEINTERVAL $CLIENTOPTIONS &

        #
        # ETRN_HOSTS should be of the form
        # "s1:c1.1,c1.2        s2:c2.1 s3:c3.1,c3.2,c3.3"
        # i.e., white-space separated groups of server:client where
        # client can be one or more comma-separated names; N.B. that
        # the :client part is optional; see etrn(1M) for details.
        # server is the name of the server to prod; a mail queue run
        # is requested for each client name.  This is comparable to
        # running "/usr/lib/sendmail -qRclient" on the host server.
        #
        # See RFC 1985 for more information.
        #
        for i in $ETRN_HOSTS; do
                SERVER=`echo $i | /usr/bin/sed -e 's/:.*$//'`
                CLIENTS=`echo $i | /usr/bin/sed -n -e 's/,/ /g' \
                    -e '/:/s/^.*://p'`
                /usr/sbin/etrn -b $SERVER $CLIENTS >/dev/null 2>&1 &
        done

        if /usr/bin/nawk 'BEGIN{s = 1}
            $2 == "/var/mail" && $3 == "nfs" && $4 !~ /actimeo=0/ &&
            $4 !~ /noac/{s = 0} END{exit s}' /etc/mnttab; then

                /usr/bin/logger -p mail.crit "$ERRMSG1"
                /usr/bin/logger -p mail.crit "$ERRMSG2"
        fi
        ;;

'stop')
        [ -f $SERVER_PID_FILE ] && check_and_kill $SERVER_PID_FILE
        if [ -f $CLIENT_PID_FILE ]; then
                check_and_kill $CLIENT_PID_FILE
                rm -f $CLIENT_PID_FILE
        fi
        # Need to kill the entire service contract to kill all sendmail related
        # processes
        smf_kill_contract $2 TERM 1 30
        ret=$?
        [ $ret -eq 1 ] && exit 1

        # Since sendmail spawns user processes out of .forward files, it is
        # possible that some of these are not responding to TERM.  If the
        # contract did not empty after TERM, move on to KILL.
        if [ $ret -eq 2 ] ; then
                smf_kill_contract $2 KILL 1
        fi
        ;;

*)
        echo "Usage: $0 { start | stop | refresh }"
        exit 1
        ;;
esac
exit 0
 
 
This message posted from opensolaris.org

Reply via email to