diff --git a/etc/mail/Makefile b/etc/mail/Makefile index 238b906ba701..e5ab41c13c02 100644 --- a/etc/mail/Makefile +++ b/etc/mail/Makefile @@ -41,14 +41,19 @@ # running sendmail to pick up the changes as well. # # ------------------------------------------------------------------------ -# -# This makefile uses `.mc' as the default .mc file. This can -# be changed by defining SENDMAIL_MC in /etc/make.conf, e.g.: +# This Makefile uses `.mc' as the default MTA .mc file. This +# can be changed by defining SENDMAIL_MC in /etc/make.conf, e.g.: # # SENDMAIL_MC=/etc/mail/myconfig.mc # # If '.mc' does not exist, it is created using 'freebsd.mc' # as a template. +# +# It also uses 'freebsd.submit.mc' as the default mail submission .mc file. +# This can be changed by defining SENDMAIL_SUBMIT_MC in /etc/make.conf, +# e.g.: +# +# SENDMAIL_SUBMIT_MC=/etc/mail/mysubmit.mc # ------------------------------------------------------------------------ # # The Makefile knows about the following maps: @@ -64,8 +69,14 @@ ${SENDMAIL_MC}: cp freebsd.mc ${SENDMAIL_MC} .endif +SENDMAIL_SUBMIT_MC?= freebsd.submit.mc + INSTALL_CF= ${SENDMAIL_MC:R}.cf +.ifndef SENDMAIL_SET_USER_ID +INSTALL_SUBMIT_CF= ${SENDMAIL_SUBMIT_MC:R}.cf +.endif + SENDMAIL_ALIASES?= /etc/mail/aliases # @@ -160,24 +171,35 @@ clean: depend: -cf: ${INSTALL_CF} +cf: ${INSTALL_CF} ${INSTALL_SUBMIT_CF} -submit.cf: submit.mc +.ifdef SENDMAIL_SET_USER_ID +install: install-cf +.else +install: install-cf install-submit-cf +.endif + +install-cf: ${INSTALL_CF} +.if ${INSTALL_CF} != /etc/mail/sendmail.cf + ${INSTALL} -c -m ${SHAREMODE} ${INSTALL_CF} /etc/mail/sendmail.cf +.endif + + +install-submit-cf: ${INSTALL_SUBMIT_CF} .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 +.else +.if ${INSTALL_SUBMIT_CF} != /etc/mail/submit.cf + ${INSTALL} -c -m ${SHAREMODE} ${INSTALL_SUBMIT_CF} /etc/mail/submit.cf +.endif .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 +maps: ${SENDMAIL_MAP_OBJ} start start-mta start-mspq: @if [ -r ${SENDMAIL_START_SCRIPT} ]; then \ diff --git a/etc/sendmail/Makefile b/etc/sendmail/Makefile index 3a39a1c3e99f..6cc52568171b 100644 --- a/etc/sendmail/Makefile +++ b/etc/sendmail/Makefile @@ -37,9 +37,16 @@ INSTALL_CF= ${SENDMAIL_CF} .endif .endif -DEST_CF= ${DESTDIR}/etc/mail/sendmail.cf +.ifndef SENDMAIL_SET_USER_ID +.if defined(SENDMAIL_SUBMIT_MC) +INSTALL_SUBMIT_CF=${SENDMAIL_SUBMIT_MC:R}.cf +.endif +.endif -ALL+= ${INSTALL_CF} +DEST_CF= ${DESTDIR}/etc/mail/sendmail.cf +DEST_SUBMIT_CF= ${DESTDIR}/etc/mail/submit.cf + +ALL+= ${INSTALL_CF} ${INSTALL_SUBMIT_CF} # Make sure we don't remove /etc/mail/sendmail.cf on make clean # since this will break a running system during a buildworld. @@ -49,6 +56,12 @@ CLEANFILES+= ${INSTALL_CF} .endif .endif +.if defined(INSTALL_SUBMIT_CF) +.if ${INSTALL_SUBMIT_CF} != ${DEST_SUBMIT_CF} +CLEANFILES+= ${INSTALL_SUBMIT_CF} +.endif +.endif + # Additional .cf files to build .if defined(SENDMAIL_ADDITIONAL_MC) SENDMAIL_ADDITIONAL_CF= ${SENDMAIL_ADDITIONAL_MC:S/.mc$/.cf/g} @@ -60,7 +73,7 @@ all: ${ALL} depend: -install: ${INSTALL_CF} +install: ${INSTALL_CF} ${INSTALL_SUBMIT_CF} .if (defined(SENDMAIL_MC) && defined(SENDMAIL_CF)) @echo ">>> ERROR: Both SENDMAIL_CF and SENDMAIL_MC can not be set" @false @@ -70,14 +83,22 @@ install: ${INSTALL_CF} ${INSTALL} ${COPY} -o ${BINOWN} -g ${BINGRP} -m 644 ${INSTALL_CF} \ ${DEST_CF} .endif +.endif .if defined(SENDMAIL_ADDITIONAL_CF) ${INSTALL} ${COPY} -o ${BINOWN} -g ${BINGRP} -m 644 \ ${SENDMAIL_ADDITIONAL_CF} ${DESTDIR}/etc/mail .endif +.ifndef SENDMAIL_SET_USER_ID +.if defined(INSTALL_SUBMIT_CF) +.if ${INSTALL_SUBMIT_CF} != ${DEST_SUBMIT_CF} + ${INSTALL} ${COPY} -o ${BINOWN} -g ${BINGRP} -m 644 \ + ${INSTALL_SUBMIT_CF} ${DEST_SUBMIT_CF} +.endif +.endif .endif # Helper for src/etc/Makefile -distribution: freebsd.cf freebsd.mc ${INSTALL_CF} +distribution: freebsd.cf freebsd.mc ${INSTALL_CF} ${INSTALL_SUBMIT_CF} .if (defined(SENDMAIL_MC) && defined(SENDMAIL_CF)) @echo ">>> ERROR: Both SENDMAIL_CF and SENDMAIL_MC can not be set" @false @@ -97,11 +118,20 @@ distribution: freebsd.cf freebsd.mc ${INSTALL_CF} ${INSTALL} ${COPY} -o ${BINOWN} -g ${BINGRP} -m 644 freebsd.cf \ ${DEST_CF} .endif -.ifndef SENDMAIL_SET_USER_ID ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 ${CFDIR}/cf/submit.mc \ - ${DESTDIR}/etc/mail/submit.mc + ${DESTDIR}/etc/mail/freebsd.submit.mc ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 ${CFDIR}/cf/submit.cf \ - ${DESTDIR}/etc/mail/submit.cf + ${DESTDIR}/etc/mail/freebsd.submit.cf +.ifndef SENDMAIL_SET_USER_ID +.if defined(INSTALL_SUBMIT_CF) +.if ${INSTALL_SUBMIT_CF} != ${DEST_SUBMIT_CF} + ${INSTALL} ${COPY} -o ${BINOWN} -g ${BINGRP} -m 644 \ + ${INSTALL_SUBMIT_CF} ${DEST_SUBMIT_CF} +.endif +.else + ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 ${CFDIR}/cf/submit.cf \ + ${DEST_SUBMIT_CF} +.endif .endif ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 ${SMDIR}/helpfile \ ${DESTDIR}/etc/mail/helpfile diff --git a/share/examples/etc/make.conf b/share/examples/etc/make.conf index cffcaa73165d..2e60cb9c4cbf 100644 --- a/share/examples/etc/make.conf +++ b/share/examples/etc/make.conf @@ -258,6 +258,13 @@ # #SENDMAIL_MC=/etc/mail/myconfig.mc # +# The following sets the default m4 configuration file for mail +# submission to use at install time. Use with caution as a make +# install will overwrite any existing /etc/mail/submit.cf. The +# value should be a fully qualified path name. +# +#SENDMAIL_SUBMIT_MC=/etc/mail/mysubmit.mc +# # If you need to build additional .cf files during a make buildworld, # include the full paths to the .mc files in SENDMAIL_ADDITIONAL_MC. # diff --git a/share/man/man5/make.conf.5 b/share/man/man5/make.conf.5 index c98484ff56de..e183550082a4 100644 --- a/share/man/man5/make.conf.5 +++ b/share/man/man5/make.conf.5 @@ -520,6 +520,16 @@ Use with caution as a make install will overwrite any existing Note that .Va SENDMAIL_CF is now deprecated. +.It Va SENDMAIL_SUBMIT_MC +.Pq Vt str +The default m4 configuration file for mail submission +to use at install time. +The value should include the full path to the +.Pa .mc +file, e.g., +.Pa /etc/mail/mysubmit.mc . +Use with caution as a make install will overwrite any existing +.Pa /etc/mail/submit.cf . .It Va SENDMAIL_ADDITIONAL_MC .Pq Vt str Additional