mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-29 12:03:03 +00:00
619b80c4e6
again." As an alternative to sendmail_enable=NONE, solve the boot time problem for non-sendmail users completely by moving all of the sendmail startup code from /etc/rc to /etc/rc.sendmail. The source for that script will be kept in src/etc/sendmail/rc.sendmail so make.conf's NO_SENDMAIL will prevent it from being installed. A new rc.conf variable, mta_start_script specifies the script to run to start the user's preferred MTA. For backward compatibility, it will default to /etc/rc.sendmail. The specified script is called out of /etc/rc after checking to make sure it exists. A new rc.sendmail.8 man page has also been added which now houses the sendmail_* variable descriptions formerly in rc.conf.5. Use /etc/rc.sendmail in /etc/mail/Makefile to reduce code duplication. Reviewed by: -current, -stable, obrien, peter, ru MFC after: 1 week
207 lines
5.5 KiB
Makefile
207 lines
5.5 KiB
Makefile
#
|
|
# $FreeBSD$
|
|
#
|
|
# This Makefile provides an easy way to generate the configuration
|
|
# file and database maps for the sendmail(8) daemon.
|
|
#
|
|
# The user-driven targets are:
|
|
#
|
|
# all - Build cf, maps and aliases
|
|
# cf - Build the .cf file from .mc file
|
|
# maps - Build the feature maps
|
|
# aliases - Build the sendmail aliases
|
|
# install - Install the .cf file as /etc/mail/sendmail.cf
|
|
#
|
|
# 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
|
|
# restart-mspq - Restart the sendmail MSP queue running daemon
|
|
#
|
|
# Calling `make' will generate the updated versions when either the
|
|
# aliases or one of the map files were changed.
|
|
#
|
|
# A `make install` is only necessary after modifying the .mc file. In
|
|
# this case one would normally also call `make restart' to allow the
|
|
# running sendmail to pick up the changes as well.
|
|
#
|
|
# ------------------------------------------------------------------------
|
|
#
|
|
# This makefile uses `<HOSTNAME>.mc' as the default .mc file. This can
|
|
# be changed by defining SENDMAIL_MC in /etc/make.conf, e.g.:
|
|
#
|
|
# SENDMAIL_MC=/etc/mail/myconfig.mc
|
|
#
|
|
# If '<HOSTNAME>.mc' does not exist, it is created using 'freebsd.mc'
|
|
# as a template.
|
|
# ------------------------------------------------------------------------
|
|
#
|
|
# The Makefile knows about the following maps:
|
|
# access, bitdomain, domaintable, genericstable, mailertable, userdb,
|
|
# uucpdomain, virtusertable
|
|
#
|
|
|
|
.ifndef SENDMAIL_MC
|
|
SENDMAIL_MC!= hostname
|
|
SENDMAIL_MC:= ${SENDMAIL_MC}.mc
|
|
|
|
${SENDMAIL_MC}:
|
|
cp freebsd.mc ${SENDMAIL_MC}
|
|
.endif
|
|
|
|
INSTALL_CF= ${SENDMAIL_MC:R}.cf
|
|
|
|
SENDMAIL_ALIASES?= /etc/mail/aliases
|
|
|
|
#
|
|
# This is the directory where the sendmail configuration files are
|
|
# located.
|
|
#
|
|
.if exists(/usr/share/sendmail/cf)
|
|
SENDMAIL_CF_DIR?= /usr/share/sendmail/cf
|
|
.elif exists(/usr/src/contrib/sendmail/cf)
|
|
SENDMAIL_CF_DIR?= /usr/src/contrib/sendmail/cf
|
|
.endif
|
|
|
|
#
|
|
# The sendmail startup script
|
|
#
|
|
SENDMAIL_START_SCRIPT?= /etc/rc.sendmail
|
|
|
|
#
|
|
# Some useful programs we need.
|
|
#
|
|
SENDMAIL?= /usr/sbin/sendmail
|
|
MAKEMAP?= /usr/sbin/makemap
|
|
M4?= /usr/bin/m4
|
|
|
|
# Set a reasonable default
|
|
.MAIN: all
|
|
|
|
#
|
|
# ------------------------------------------------------------------------
|
|
#
|
|
# The Makefile picks up the list of files from SENDMAIL_MAP_SRC and
|
|
# stores the matching .db filenames in SENDMAIL_MAP_OBJ if the file
|
|
# exists in the current directory. SENDMAIL_MAP_TYPE is the database
|
|
# type to use when calling makemap.
|
|
#
|
|
SENDMAIL_MAP_SRC+= mailertable domaintable bitdomain uucpdomain \
|
|
genericstable virtusertable access
|
|
SENDMAIL_MAP_OBJ=
|
|
SENDMAIL_MAP_TYPE?= hash
|
|
|
|
.for _f in ${SENDMAIL_MAP_SRC} userdb
|
|
.if exists(${_f})
|
|
SENDMAIL_MAP_OBJ+= ${_f}.db
|
|
.endif
|
|
.endfor
|
|
|
|
#
|
|
# The makemap command is used to generate a hashed map from the textfile.
|
|
#
|
|
.for _f in ${SENDMAIL_MAP_SRC}
|
|
.if (exists(${_f}.sample) && !exists(${_f}))
|
|
${_f}: ${_f}.sample
|
|
sed -e 's/^/#/' < ${.OODATE} > ${.TARGET}
|
|
.endif
|
|
|
|
${_f}.db: ${_f}
|
|
${MAKEMAP} ${SENDMAIL_MAP_TYPE} ${.TARGET} < ${.OODATE}
|
|
.endfor
|
|
|
|
userdb.db: userdb
|
|
${MAKEMAP} btree ${.TARGET} < ${.OODATE}
|
|
|
|
|
|
#
|
|
# The .cf file needs to be recreated if the templates were modified.
|
|
#
|
|
M4FILES!= find ${SENDMAIL_CF_DIR} -type f -name '*.m4' -print
|
|
|
|
#
|
|
# M4(1) is used to generate the .cf file from the .mc file.
|
|
#
|
|
.SUFFIXES: .cf .mc
|
|
|
|
.mc.cf: ${M4FILES}
|
|
${M4} -D_CF_DIR_=${SENDMAIL_CF_DIR}/ ${SENDMAIL_M4_FLAGS} \
|
|
${SENDMAIL_CF_DIR}/m4/cf.m4 ${@:R}.mc > ${.TARGET}
|
|
|
|
#
|
|
# Aliases are handled separately since they normally reside in /etc
|
|
# and can be rebuild without the help of makemap.
|
|
#
|
|
${SENDMAIL_ALIASES}.db: ${SENDMAIL_ALIASES}
|
|
${SENDMAIL} -bi
|
|
|
|
#
|
|
# ------------------------------------------------------------------------
|
|
#
|
|
|
|
all: cf maps aliases
|
|
|
|
clean:
|
|
|
|
depend:
|
|
|
|
cf: ${INSTALL_CF}
|
|
|
|
submit.cf: submit.mc
|
|
.ifdef SENDMAIL_SET_USER_ID
|
|
@echo ">>> ERROR: You should not create a submit.cf file if you are using a"
|
|
@echo " set-user-ID sendmail binary (SENDMAIL_SET_USER_ID is set"
|
|
@echo " in make.conf)."
|
|
@false
|
|
.endif
|
|
|
|
maps: ${SENDMAIL_MAP_OBJ}
|
|
|
|
aliases: ${SENDMAIL_ALIASES}.db
|
|
|
|
install: ${INSTALL_CF}
|
|
.if ${INSTALL_CF} != /etc/mail/sendmail.cf
|
|
${INSTALL} -c -m ${SHAREMODE} ${INSTALL_CF} /etc/mail/sendmail.cf
|
|
.endif
|
|
|
|
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)
|
|
.include "Makefile.local"
|
|
.endif
|