diff options
Diffstat (limited to 'etc')
-rw-r--r-- | etc/defaults/rc.conf | 27 | ||||
-rw-r--r-- | etc/mail/Makefile | 108 | ||||
-rw-r--r-- | etc/rc | 42 | ||||
-rw-r--r-- | etc/rc.sendmail | 193 | ||||
-rw-r--r-- | etc/sendmail/Makefile | 2 | ||||
-rw-r--r-- | etc/sendmail/rc.sendmail | 193 |
6 files changed, 448 insertions, 117 deletions
diff --git a/etc/defaults/rc.conf b/etc/defaults/rc.conf index 32bf9b3..b25d6ac 100644 --- a/etc/defaults/rc.conf +++ b/etc/defaults/rc.conf @@ -324,17 +324,12 @@ allscreens_kbdflags="" # Set this kbdcontrol mode for all virtual screens ############################################################## -### Miscellaneous administrative options ################### +### Mail Transfer Agent (MTA) options ###################### ############################################################## -cron_enable="YES" # Run the periodic job daemon. -cron_program="/usr/sbin/cron" # Which cron executable to run (if enabled). -cron_flags="" # Which options to pass to the cron daemon. -lpd_enable="NO" # Run the line printer daemon. -lpd_program="/usr/sbin/lpd" # path to lpd, if you want a different one. -lpd_flags="" # Flags to lpd (if enabled). -usbd_enable="NO" # Run the usbd daemon. -usbd_flags="" # Flags to usbd (if enabled). +mta_start_script="/etc/rc.sendmail" + # Script to start your chosen MTA, called by /etc/rc. +# Settings for /etc/rc.sendmail: sendmail_enable="NO" # Run the sendmail inbound daemon (YES/NO/NONE). # If NONE, don't start any sendmail processes. sendmail_flags="-L sm-mta -bd -q30m" # Flags to sendmail (as a server) @@ -346,6 +341,20 @@ sendmail_outbound_flags="-L sm-queue -q30m" # Flags to sendmail (outbound only) sendmail_msp_queue_enable="YES" # Dequeue stuck clientmqueue mail (YES/NO). sendmail_msp_queue_flags="-L sm-msp-queue -Ac -q30m" # Flags for sendmail_msp_queue daemon. + + +############################################################## +### Miscellaneous administrative options ################### +############################################################## + +cron_enable="YES" # Run the periodic job daemon. +cron_program="/usr/sbin/cron" # Which cron executable to run (if enabled). +cron_flags="" # Which options to pass to the cron daemon. +lpd_enable="NO" # Run the line printer daemon. +lpd_program="/usr/sbin/lpd" # path to lpd, if you want a different one. +lpd_flags="" # Flags to lpd (if enabled). +usbd_enable="NO" # Run the usbd daemon. +usbd_flags="" # Flags to usbd (if enabled). dumpdev="NO" # Device name to crashdump to (or NO). dumpdir="/var/crash" # Directory where crash dumps are to be stored savecore_flags="" # Used if dumpdev is enabled above, and present. diff --git a/etc/mail/Makefile b/etc/mail/Makefile index b92f6b3..238b906 100644 --- a/etc/mail/Makefile +++ b/etc/mail/Makefile @@ -12,13 +12,22 @@ # aliases - Build the sendmail aliases # install - Install the .cf file as /etc/mail/sendmail.cf # -# For the MTA daemon: -# start - Start the sendmail daemon with the flags defined in -# /etc/defaults/rc.conf or /etc/rc.conf -# stop - Stop the sendmail daemon -# restart - Restart the sendmail daemon -# -# For the MSP queue running daemon: +# For acting on both the MTA daemon and MSP queue running daemon: +# start - Start both the sendmail MTA daemon and MSP queue running +# daemon with the flags defined in /etc/defaults/rc.conf or +# /etc/rc.conf +# stop - Stop both the sendmail MTA daemon and MSP queue running +# daemon +# restart - Restart both the sendmail MTA daemon and MSP queue running +# daemon +# +# For acting on just the MTA daemon: +# start-mta - Start the sendmail MTA daemon with the flags defined in +# /etc/defaults/rc.conf or /etc/rc.conf +# stop-mta - Stop the sendmail MTA daemon +# restart-mta - Restart the sendmail MTA daemon +# +# For acting on just the MSP queue running daemon: # start-mspq - Start the sendmail MSP queue running daemon with the # flags defined in /etc/defaults/rc.conf or /etc/rc.conf # stop-mspq - Stop the sendmail MSP queue running daemon @@ -70,10 +79,9 @@ SENDMAIL_CF_DIR?= /usr/src/contrib/sendmail/cf .endif # -# The pid is used to stop and restart the running daemon. +# The sendmail startup script # -SENDMAIL_PIDFILE?= /var/run/sendmail.pid -SENDMAIL_MSPQ_PIDFILE?= /var/spool/clientmqueue/sm-client.pid +SENDMAIL_START_SCRIPT?= /etc/rc.sendmail # # Some useful programs we need. @@ -81,7 +89,6 @@ SENDMAIL_MSPQ_PIDFILE?= /var/spool/clientmqueue/sm-client.pid SENDMAIL?= /usr/sbin/sendmail MAKEMAP?= /usr/sbin/makemap M4?= /usr/bin/m4 -KILL?= /bin/kill # Set a reasonable default .MAIN: all @@ -172,65 +179,26 @@ install: ${INSTALL_CF} ${INSTALL} -c -m ${SHAREMODE} ${INSTALL_CF} /etc/mail/sendmail.cf .endif -start: - @(. /etc/defaults/rc.conf; source_rc_confs; \ - case "$${sendmail_enable}" in \ - [Nn][Oo][Nn][Ee]) \ - echo "ERROR: sendmail_enable is set to $${sendmail_enable}" \ - ;; \ - [Yy][Ee][Ss]) \ - ${SENDMAIL} $${sendmail_flags}; \ - echo "${SENDMAIL} $${sendmail_flags}" \ - ;; \ - *) \ - case "$${sendmail_submit_enable}" in \ - [Yy][Ee][Ss]) \ - ${SENDMAIL} $${sendmail_submit_flags}; \ - echo "${SENDMAIL} $${sendmail_submit_flags}" \ - ;; \ - *) \ - case "$${sendmail_outbound_enable}" in \ - [Yy][Ee][Ss]) \ - ${SENDMAIL} $${sendmail_outbound_flags}; \ - echo "${SENDMAIL} $${sendmail_outbound_flags}" \ - ;; \ - esac \ - ;; \ - esac \ - ;; \ - esac \ - ) - -stop: - ${KILL} -TERM `head -1 ${SENDMAIL_PIDFILE}` - -restart: - ${KILL} -HUP `head -1 ${SENDMAIL_PIDFILE}` - -start-mspq: - @(. /etc/defaults/rc.conf; source_rc_confs; \ - case "$${sendmail_enable}" in \ - [Nn][Oo][Nn][Ee]) \ - echo "ERROR: sendmail_enable is set to $${sendmail_enable}" \ - ;; \ - *) \ - if [ -r /etc/mail/submit.cf ]; then \ - case "$${sendmail_msp_queue_enable}" in \ - [Yy][Ee][Ss]) \ - ${SENDMAIL} $${sendmail_msp_queue_flags}; \ - echo "${SENDMAIL} $${sendmail_msp_queue_flags}" \ - ;; \ - esac \ - fi \ - ;; \ - esac \ - ) - -stop-mspq: - ${KILL} -TERM `head -1 ${SENDMAIL_MSPQ_PIDFILE}` - -restart-mspq: - ${KILL} -HUP `head -1 ${SENDMAIL_MSPQ_PIDFILE}` +start start-mta start-mspq: + @if [ -r ${SENDMAIL_START_SCRIPT} ]; then \ + echo -n 'Starting:'; \ + sh ${SENDMAIL_START_SCRIPT} $@; \ + echo '.'; \ + fi + +stop stop-mta stop-mspq: + @if [ -r ${SENDMAIL_START_SCRIPT} ]; then \ + echo -n 'Stopping:'; \ + sh ${SENDMAIL_START_SCRIPT} $@; \ + echo '.'; \ + fi + +restart restart-mta restart-mspq: + @if [ -r ${SENDMAIL_START_SCRIPT} ]; then \ + echo -n 'Restarting:'; \ + sh ${SENDMAIL_START_SCRIPT} $@; \ + echo '.'; \ + fi # User defined targets .if exists(Makefile.local) @@ -702,44 +702,10 @@ case ${usbd_enable} in ;; esac -# Note: Please keep the sendmail startup code here in sync with the code -# in src/etc/mail/Makefile. -case ${sendmail_enable} in -[Nn][Oo][Nn][Ee]) - ;; -[Yy][Ee][Ss]) - echo -n ' sendmail' - /usr/sbin/sendmail ${sendmail_flags} - ;; -*) - case ${sendmail_submit_enable} in - [Yy][Ee][Ss]) - echo -n ' sendmail-submit' - /usr/sbin/sendmail ${sendmail_submit_flags} - ;; - *) - case ${sendmail_outbound_enable} in - [Yy][Ee][Ss]) - echo -n ' sendmail-outbound' - /usr/sbin/sendmail ${sendmail_outbound_flags} - ;; - esac - ;; - esac - ;; -esac - -case ${sendmail_enable} in -[Nn][Oo][Nn][Ee]) - ;; -*) - if [ -r /etc/mail/submit.cf ]; then - case ${sendmail_msp_queue_enable} in - [Yy][Ee][Ss]) - echo -n ' sendmail-clientmqueue' - /usr/sbin/sendmail ${sendmail_msp_queue_flags} - ;; - esac +case ${mta_start_script} in +/*) + if [ -r ${mta_start_script} ]; then + sh ${mta_start_script} fi ;; esac diff --git a/etc/rc.sendmail b/etc/rc.sendmail new file mode 100644 index 0000000..0a79f91 --- /dev/null +++ b/etc/rc.sendmail @@ -0,0 +1,193 @@ +#!/bin/sh + +# +# Copyright (c) 2000, 2002 The FreeBSD Project +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# $FreeBSD$ +# + +# This script is used by /etc/rc at boot time to start sendmail. It +# is meant to be sendmail specific and not a generic script for all +# MTAs. It is only called by /etc/rc if the rc.conf mta_start_script is +# set to /etc/rc.sendmail. This provides the opportunity for other MTAs +# to provide their own startup script. + +# The script is also used by /etc/mail/Makefile to enable the +# start/stop/restart targets. + +# The source for the script can be found in src/etc/sendmail/rc.sendmail. + +if [ -r /etc/defaults/rc.conf ]; then + . /etc/defaults/rc.conf + source_rc_confs +elif [ -r /etc/rc.conf ]; then + . /etc/rc.conf +fi + +# The sendmail binary +sendmail_program=${sendmail_program:-/usr/sbin/sendmail} + +# The pid is used to stop and restart the running daemon(s). +sendmail_pidfile=${sendmail_pidfile:-/var/run/sendmail.pid} +sendmail_mspq_pidfile=${sendmail_mspq_pidfile:-/var/spool/clientmqueue/sm-client.pid} + +start_mta() +{ + case ${sendmail_enable} in + [Nn][Oo][Nn][Ee]) + ;; + [Yy][Ee][Ss]) + echo -n ' sendmail' + ${sendmail_program} ${sendmail_flags} + ;; + *) + case ${sendmail_submit_enable} in + [Yy][Ee][Ss]) + echo -n ' sendmail-submit' + ${sendmail_program} ${sendmail_submit_flags} + ;; + *) + case ${sendmail_outbound_enable} in + [Yy][Ee][Ss]) + echo -n ' sendmail-outbound' + ${sendmail_program} ${sendmail_outbound_flags} + ;; + esac + ;; + esac + ;; + esac +} + +stop_mta() +{ + if [ -r ${sendmail_pidfile} ]; then + echo -n ' sendmail' + kill -TERM `head -1 ${sendmail_pidfile}` + else + echo "$0: stop-mta: ${sendmail_pidfile} not found" + fi +} + +restart_mta() +{ + if [ -r ${sendmail_pidfile} ]; then + echo -n ' sendmail' + kill -HUP `head -1 ${sendmail_pidfile}` + else + echo "$0: restart-mta: ${sendmail_pidfile} not found" + fi +} + +start_mspq() +{ + case ${sendmail_enable} in + [Nn][Oo][Nn][Ee]) + ;; + *) + if [ -r /etc/mail/submit.cf ]; then + case ${sendmail_msp_queue_enable} in + [Yy][Ee][Ss]) + echo -n ' sendmail-clientmqueue' + ${sendmail_program} ${sendmail_msp_queue_flags} + ;; + esac + fi + ;; + esac +} + +stop_mspq() +{ + if [ -r ${sendmail_mspq_pidfile} ]; then + echo -n ' sendmail-clientmqueue' + kill -TERM `head -1 ${sendmail_mspq_pidfile}` + else + echo "$0: stop-mspq: ${sendmail_mspq_pidfile} not found" + fi +} + +restart_mspq() +{ + if [ -r ${sendmail_mspq_pidfile} ]; then + echo -n ' sendmail-clientmqueue' + kill -HUP `head -1 ${sendmail_mspq_pidfile}` + else + echo "$0: restart-mspq: ${sendmail_mspq_pidfile} not found" + fi +} + +# If no argument is given, assume we are being called at boot time. +_action=${1:-start} + +case ${_action} in +start) + start_mta + start_mspq + ;; + +stop) + stop_mta + stop_mspq + ;; + +restart) + restart_mta + restart_mspq + ;; + +start-mta) + start_mta + ;; + +stop-mta) + stop_mta + ;; + +restart-mta) + restart_mta + ;; + +start-mspq) + start_mspq + ;; + +stop-mspq) + stop_mspq + ;; + +restart-mspq) + restart_mspq + ;; + +*) + echo "Usage: `basename $0` {start|stop|restart}" >&2 + echo " `basename $0` {start-mta|stop-mta|restart-mta}" >&2 + echo " `basename $0` {start-mspq|stop-mspq|restart-mspq}" >&2 + exit 64 + ;; + +esac +exit 0 diff --git a/etc/sendmail/Makefile b/etc/sendmail/Makefile index dd87e16..3a39a1c 100644 --- a/etc/sendmail/Makefile +++ b/etc/sendmail/Makefile @@ -82,6 +82,8 @@ distribution: freebsd.cf freebsd.mc ${INSTALL_CF} @echo ">>> ERROR: Both SENDMAIL_CF and SENDMAIL_MC can not be set" @false .endif + ${INSTALL} ${COPY} -o ${BINOWN} -g ${BINGRP} -m 644 ${.CURDIR}/rc.sendmail \ + ${DESTDIR}/etc ${INSTALL} ${COPY} -o ${BINOWN} -g ${BINGRP} -m 644 ${.CURDIR}/freebsd.mc \ ${DESTDIR}/etc/mail/freebsd.mc ${INSTALL} ${COPY} -o ${BINOWN} -g ${BINGRP} -m 644 freebsd.cf \ diff --git a/etc/sendmail/rc.sendmail b/etc/sendmail/rc.sendmail new file mode 100644 index 0000000..0a79f91 --- /dev/null +++ b/etc/sendmail/rc.sendmail @@ -0,0 +1,193 @@ +#!/bin/sh + +# +# Copyright (c) 2000, 2002 The FreeBSD Project +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# $FreeBSD$ +# + +# This script is used by /etc/rc at boot time to start sendmail. It +# is meant to be sendmail specific and not a generic script for all +# MTAs. It is only called by /etc/rc if the rc.conf mta_start_script is +# set to /etc/rc.sendmail. This provides the opportunity for other MTAs +# to provide their own startup script. + +# The script is also used by /etc/mail/Makefile to enable the +# start/stop/restart targets. + +# The source for the script can be found in src/etc/sendmail/rc.sendmail. + +if [ -r /etc/defaults/rc.conf ]; then + . /etc/defaults/rc.conf + source_rc_confs +elif [ -r /etc/rc.conf ]; then + . /etc/rc.conf +fi + +# The sendmail binary +sendmail_program=${sendmail_program:-/usr/sbin/sendmail} + +# The pid is used to stop and restart the running daemon(s). +sendmail_pidfile=${sendmail_pidfile:-/var/run/sendmail.pid} +sendmail_mspq_pidfile=${sendmail_mspq_pidfile:-/var/spool/clientmqueue/sm-client.pid} + +start_mta() +{ + case ${sendmail_enable} in + [Nn][Oo][Nn][Ee]) + ;; + [Yy][Ee][Ss]) + echo -n ' sendmail' + ${sendmail_program} ${sendmail_flags} + ;; + *) + case ${sendmail_submit_enable} in + [Yy][Ee][Ss]) + echo -n ' sendmail-submit' + ${sendmail_program} ${sendmail_submit_flags} + ;; + *) + case ${sendmail_outbound_enable} in + [Yy][Ee][Ss]) + echo -n ' sendmail-outbound' + ${sendmail_program} ${sendmail_outbound_flags} + ;; + esac + ;; + esac + ;; + esac +} + +stop_mta() +{ + if [ -r ${sendmail_pidfile} ]; then + echo -n ' sendmail' + kill -TERM `head -1 ${sendmail_pidfile}` + else + echo "$0: stop-mta: ${sendmail_pidfile} not found" + fi +} + +restart_mta() +{ + if [ -r ${sendmail_pidfile} ]; then + echo -n ' sendmail' + kill -HUP `head -1 ${sendmail_pidfile}` + else + echo "$0: restart-mta: ${sendmail_pidfile} not found" + fi +} + +start_mspq() +{ + case ${sendmail_enable} in + [Nn][Oo][Nn][Ee]) + ;; + *) + if [ -r /etc/mail/submit.cf ]; then + case ${sendmail_msp_queue_enable} in + [Yy][Ee][Ss]) + echo -n ' sendmail-clientmqueue' + ${sendmail_program} ${sendmail_msp_queue_flags} + ;; + esac + fi + ;; + esac +} + +stop_mspq() +{ + if [ -r ${sendmail_mspq_pidfile} ]; then + echo -n ' sendmail-clientmqueue' + kill -TERM `head -1 ${sendmail_mspq_pidfile}` + else + echo "$0: stop-mspq: ${sendmail_mspq_pidfile} not found" + fi +} + +restart_mspq() +{ + if [ -r ${sendmail_mspq_pidfile} ]; then + echo -n ' sendmail-clientmqueue' + kill -HUP `head -1 ${sendmail_mspq_pidfile}` + else + echo "$0: restart-mspq: ${sendmail_mspq_pidfile} not found" + fi +} + +# If no argument is given, assume we are being called at boot time. +_action=${1:-start} + +case ${_action} in +start) + start_mta + start_mspq + ;; + +stop) + stop_mta + stop_mspq + ;; + +restart) + restart_mta + restart_mspq + ;; + +start-mta) + start_mta + ;; + +stop-mta) + stop_mta + ;; + +restart-mta) + restart_mta + ;; + +start-mspq) + start_mspq + ;; + +stop-mspq) + stop_mspq + ;; + +restart-mspq) + restart_mspq + ;; + +*) + echo "Usage: `basename $0` {start|stop|restart}" >&2 + echo " `basename $0` {start-mta|stop-mta|restart-mta}" >&2 + echo " `basename $0` {start-mspq|stop-mspq|restart-mspq}" >&2 + exit 64 + ;; + +esac +exit 0 |