mirror of
https://git.FreeBSD.org/ports.git
synced 2024-10-22 20:41:26 +00:00
Bring the Exim port closer to use as an install-time sendmail
replacement for FreeBSD: * Use an rc.subr start/stop script. * Include contributed periodic scripts. * Replace $PREFIX with the build-time value of PREFIX. * Generate a default configure file if it doesn't exist at install-time. * Remove the default configure file if it hasn't been modified at deinstall-time. * Install additional documentation. * Move creation and removal of /var/log/exim to pkg-plist. Bump PORTREVISION accordingly. This paves the way for ports/56458, which teaches sysinstall about Exim. Bug trhodes about that PR. :-) PR: ports/56450 Submitted by: Oliver Eikemeier <eikemeier@fillmore-labs.com>
This commit is contained in:
parent
12f08c0b46
commit
55c1140415
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=88939
@ -7,7 +7,7 @@
|
||||
|
||||
PORTNAME= exim
|
||||
PORTVERSION= 4.22
|
||||
PORTREVISION= 3
|
||||
PORTREVISION= 4
|
||||
CATEGORIES= mail
|
||||
MASTER_SITES= ${MASTER_SITE_EXIM}
|
||||
MASTER_SITE_SUBDIR= exim4
|
||||
@ -29,12 +29,20 @@ USE_BZIP2= yes
|
||||
USE_PERL5= yes
|
||||
MAN8= exim.8
|
||||
|
||||
PORTDOC_FILES= ChangeLog Exim3.upgrade Exim4.upgrade NewStuff \
|
||||
OptionLists.txt README README.SIEVE dbm.discuss.txt \
|
||||
filter.txt pcrepattern.txt pcretest.txt spec.txt
|
||||
|
||||
DAILY_SCRIPTS= 150.exim-tidydb 460.exim-mail-rejects
|
||||
|
||||
EXISCAN_ACL_VERSION= ${PORTVERSION}-12
|
||||
|
||||
PLIST_SUB+= EXIM_VERSION="${PORTVERSION}"
|
||||
|
||||
.if defined(NOPORTDOCS)
|
||||
PKGMESSAGE= ${WRKDIR}/POST-INSTALL-NOTES
|
||||
.else
|
||||
PKGMESSAGE= ${WRKDIR}/pkg-message
|
||||
.endif
|
||||
|
||||
MAKE_ENV+= OSTYPE=${OPSYS} ARCHTYPE=${MACHINE_ARCH} LOCALBASE=${LOCALBASE}
|
||||
@ -135,9 +143,25 @@ EXTRA_PATCHES+= `${FIND} ${PATCHDIR} -name 'wishlist-*.patch'`
|
||||
|
||||
.include <bsd.port.pre.mk>
|
||||
|
||||
PORTDOC_FILES= Exim3.upgrade Exim4.upgrade OptionLists.txt README \
|
||||
dbm.discuss.txt filter.txt pcrepattern.txt pcretest.txt \
|
||||
spec.txt
|
||||
.if ${OSVERSION} >= 500038
|
||||
RC_SUBR?= ${DESTDIR}/etc/rc.subr
|
||||
RC_DIR= ${DESTDIR}/etc/rc.d
|
||||
RC_SUFX=
|
||||
.else
|
||||
USE_RC_SUBR= yes
|
||||
RC_DIR= ${PREFIX}/etc/rc.d
|
||||
RC_SUFX= .sh
|
||||
.endif
|
||||
|
||||
SED_SCRIPT= -e 's,%%PREFIX%%,${PREFIX},g' \
|
||||
-e 's,%%DOCSDIR%%,${DOCSDIR},g' \
|
||||
-e 's,%%RC_SUBR%%,${RC_SUBR},g' \
|
||||
-e 's,%%RC_DIR%%,${RC_DIR},g' \
|
||||
-e 's,%%RC_SUFX%%,${RC_SUFX},g'
|
||||
|
||||
PLIST_SUB+= RC_DIR=${RC_DIR} \
|
||||
RC_SUFX=${RC_SUFX}
|
||||
|
||||
.if !defined(WITHOUT_EXISCAN)
|
||||
PORTDOC_FILES+= exiscan-acl-examples.txt exiscan-acl-spec.txt
|
||||
PLIST_SUB+= EXISCAN_ACL=""
|
||||
@ -326,28 +350,39 @@ pre-everything::
|
||||
@${ECHO} ''
|
||||
.endif
|
||||
|
||||
post-patch:
|
||||
.if !defined(WITHOUT_EXISCAN)
|
||||
@${CAT} ${FILESDIR}/POST-INSTALL-NOTES.exiscan-acl \
|
||||
${FILESDIR}/POST-INSTALL-NOTES > ${WRKDIR}/POST-INSTALL-NOTES
|
||||
.else
|
||||
@${CAT} ${FILESDIR}/POST-INSTALL-NOTES > ${WRKDIR}/POST-INSTALL-NOTES
|
||||
.endif
|
||||
|
||||
do-configure:
|
||||
${MKDIR} ${WRKSRC}/Local
|
||||
${SED} ${SEDLIST} < ${WRKSRC}/src/EDITME > ${WRKSRC}/Local/Makefile
|
||||
${SED} ${SEDLIST} ${WRKSRC}/src/EDITME > ${WRKSRC}/Local/Makefile
|
||||
|
||||
post-build:
|
||||
.for script in exim ${DAILY_SCRIPTS}
|
||||
@${SED} ${SED_SCRIPT} ${FILESDIR}/${script}.sh > ${WRKDIR}/${script}.sh
|
||||
.endfor
|
||||
.if !defined(WITHOUT_EXISCAN)
|
||||
@${SED} ${SED_SCRIPT} ${FILESDIR}/POST-INSTALL-NOTES.exiscan-acl \
|
||||
${FILESDIR}/POST-INSTALL-NOTES > ${WRKDIR}/POST-INSTALL-NOTES
|
||||
@${SED} ${SED_SCRIPT} ${FILESDIR}/POST-INSTALL-NOTES.clamd > ${WRKDIR}/POST-INSTALL-NOTES.clamd
|
||||
.else
|
||||
@${SED} ${SED_SCRIPT} ${FILESDIR}/POST-INSTALL-NOTES > ${WRKDIR}/POST-INSTALL-NOTES
|
||||
.endif
|
||||
@${SED} ${SED_SCRIPT} ${MASTERDIR}/pkg-message > ${WRKDIR}/pkg-message
|
||||
|
||||
pre-install:
|
||||
@PKG_PREFIX="${PREFIX}" ${SH} ${PKGINSTALL} ${PKGNAME} PRE-INSTALL
|
||||
|
||||
post-install:
|
||||
${INSTALL_SCRIPT} ${FILESDIR}/exim.sh ${PREFIX}/etc/rc.d
|
||||
@${INSTALL_SCRIPT} ${WRKDIR}/exim.sh ${RC_DIR}/exim${RC_SUFX}
|
||||
@${MKDIR} ${PREFIX}/etc/periodic/daily
|
||||
.for script in ${DAILY_SCRIPTS}
|
||||
@${INSTALL_SCRIPT} ${WRKDIR}/${script}.sh ${PREFIX}/etc/periodic/daily/${script}
|
||||
.endfor
|
||||
@[ -f ${PREFIX}/etc/exim/configure ] || \
|
||||
${CP} ${PREFIX}/etc/exim/configure.default ${PREFIX}/etc/exim/configure
|
||||
.if !defined(NOPORTDOCS)
|
||||
${MKDIR} ${DOCSDIR}
|
||||
${INSTALL_DATA} ${WRKDIR}/POST-INSTALL-NOTES ${DOCSDIR}
|
||||
.if !defined(WITHOUT_EXISCAN)
|
||||
${INSTALL_DATA} ${FILESDIR}/POST-INSTALL-NOTES.clamd ${DOCSDIR}
|
||||
${INSTALL_DATA} ${WRKDIR}/POST-INSTALL-NOTES.clamd ${DOCSDIR}
|
||||
.endif
|
||||
.for docfile in ${PORTDOC_FILES}
|
||||
${INSTALL_DATA} ${WRKSRC}/doc/${docfile} ${DOCSDIR}
|
||||
|
34
mail/exim/files/150.exim-tidydb.sh
Normal file
34
mail/exim/files/150.exim-tidydb.sh
Normal file
@ -0,0 +1,34 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
# Exim hints database maintenance
|
||||
#
|
||||
# contributed by: Oliver Eikemeier <eikemeier@fillmore-labs.com>
|
||||
#
|
||||
|
||||
# If there is a global system configuration file, suck it in.
|
||||
#
|
||||
if [ -r /etc/defaults/periodic.conf ]; then
|
||||
. /etc/defaults/periodic.conf
|
||||
source_periodic_confs
|
||||
fi
|
||||
|
||||
exim_tidydb_enable=${exim_tidydb_enable:-"YES"}
|
||||
exim_tidydb=${exim_tidydb:-"/usr/local/sbin/exim_tidydb"}
|
||||
exim_dbdir=${exim_dbdir:-"/var/spool/exim"}
|
||||
|
||||
case "$exim_tidydb_enable" in
|
||||
[Yy][Ee][Ss])
|
||||
echo ""
|
||||
echo "Tidying Exim hints databases:"
|
||||
for db in "$exim_dbdir"/db/*.lockfile; do
|
||||
echo ""
|
||||
"$exim_tidydb" "$exim_dbdir" `basename $db .lockfile`
|
||||
done
|
||||
rc=1;;
|
||||
|
||||
*) rc=0;;
|
||||
esac
|
||||
|
||||
exit $rc
|
68
mail/exim/files/460.exim-mail-rejects.sh
Normal file
68
mail/exim/files/460.exim-mail-rejects.sh
Normal file
@ -0,0 +1,68 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
# Check for rejected mail
|
||||
# Log lines that end with ' : IGNORE' will not be reported
|
||||
#
|
||||
# contributed by: Oliver Eikemeier <eikemeier@fillmore-labs.com>
|
||||
#
|
||||
|
||||
# If there is a global system configuration file, suck it in.
|
||||
#
|
||||
if [ -r /etc/defaults/periodic.conf ]
|
||||
then
|
||||
. /etc/defaults/periodic.conf
|
||||
source_periodic_confs
|
||||
fi
|
||||
|
||||
exim_status_mail_rejects_enable=${exim_status_mail_rejects_enable:-"YES"}
|
||||
exim_status_mail_rejects_logs=${exim_status_mail_rejects_logs:-2}
|
||||
exim_rejectlog=${exim_rejectlog:-"/var/log/exim/rejectlog"}
|
||||
|
||||
case "$exim_status_mail_rejects_enable" in
|
||||
[Yy][Ee][Ss])
|
||||
if [ ! -d `dirname "$exim_rejectlog"` ]
|
||||
then
|
||||
echo '$exim_status_mail_rejects_enable is set but' \
|
||||
"`dirname "$exim_rejectlog"` doesn't exist"
|
||||
rc=2
|
||||
elif [ "$exim_status_mail_rejects_logs" -le 0 ]
|
||||
then
|
||||
echo '$exim_status_mail_rejects_enable is set but' \
|
||||
'$exim_status_mail_rejects_logs is not greater than zero'
|
||||
rc=2
|
||||
else
|
||||
echo
|
||||
echo Checking for rejected mail:
|
||||
|
||||
start=`date -v-1d '+%Y-%m-%d'`
|
||||
n=$(($exim_status_mail_rejects_logs - 2))
|
||||
rc=$({
|
||||
while [ $n -ge 0 ]
|
||||
do
|
||||
if [ -f "$exim_rejectlog.$n" ]
|
||||
then
|
||||
cat "$exim_rejectlog.$n"
|
||||
elif [ -f "$exim_rejectlog.$n.gz" ]
|
||||
then
|
||||
zcat -fc "$exim_rejectlog.$n.gz"
|
||||
elif [ -f "$exim_rejectlog.$n.bz2" ]
|
||||
then
|
||||
bzcat -fc "$exim_rejectlog.$n.bz2"
|
||||
fi
|
||||
n=$(($n - 1))
|
||||
done
|
||||
if [ -f "$exim_rejectlog" ]
|
||||
then
|
||||
cat "$exim_rejectlog"
|
||||
fi
|
||||
} |
|
||||
grep -e "^$start" | grep -v ' : IGNORE$' | tee /dev/stderr | wc -l)
|
||||
[ $rc -gt 0 ] && rc=1
|
||||
fi;;
|
||||
|
||||
*) rc=0;;
|
||||
esac
|
||||
|
||||
exit $rc
|
@ -6,22 +6,22 @@ The following documentation has been installed:
|
||||
In addition, plain text versions of these documents have been installed
|
||||
as:
|
||||
|
||||
${PREFIX}/share/doc/exim/filter.txt
|
||||
${PREFIX}/share/doc/exim/spec.txt
|
||||
%%DOCSDIR%%/filter.txt
|
||||
%%DOCSDIR%%/spec.txt
|
||||
|
||||
Postscript, PDF, HTML and plain text versions of these documents, as well
|
||||
as a comprehensive FAQ list, are available at http://www.exim.org/ .
|
||||
|
||||
To use Exim instead of sendmail on startup:
|
||||
|
||||
*) Create exim/configure from exim/configure.default .
|
||||
*) Clear the sendmail queue and stop the sendmail daemon.
|
||||
*) Adjust mailer.conf(5) as appropriate.
|
||||
*) Set the 'sendmail_enable' rc.conf(5) variable to 'NONE'.
|
||||
*) Set the 'daily_status_include_submit_mailq' and
|
||||
'daily_clean_hoststat_enable' periodic.conf(5)
|
||||
variables to 'NO'.
|
||||
*) Start exim with '${PREFIX}/etc/rc.d/exim.sh start'.
|
||||
*) Set the 'exim_enable' rc.conf(5) variable to 'YES'.
|
||||
*) Start exim with '%%RC_DIR%%/exim%%RC_SUFX%% start'.
|
||||
|
||||
You may also want to configure newsyslog(8) to rotate Exim log files:
|
||||
|
||||
@ -36,6 +36,6 @@ now done by routers. Policy controls for incoming mail are now done by
|
||||
Access Control Lists instead of separate options. All this means that
|
||||
pre-4.00 configuration files have to be massively converted. If you
|
||||
are coming from a 3.xx release, please read the document in the file
|
||||
${PREFIX}/share/doc/exim/Exim4.upgrade, and allow some time to complete
|
||||
%%DOCSDIR%%/Exim4.upgrade, and allow some time to complete
|
||||
the upgrade.
|
||||
|
||||
|
@ -38,7 +38,7 @@ It is important to follow them in sequence.
|
||||
|
||||
* Start clamd with /usr/local/etc/rc.d/clamd.sh start .
|
||||
|
||||
* Start Exim with /usr/local/etc/rc.d/exim.sh start .
|
||||
* Start Exim with %%RC_DIR%%/exim%%RC_SUFX%% start .
|
||||
|
||||
Sheldon Hearn <sheldonh@FreeBSD.org>
|
||||
|
||||
|
@ -1,11 +1,11 @@
|
||||
This installation of Exim includes Exiscan content scanning support,
|
||||
from http://duncanthrax.net/exiscan-acl/, which is documented in
|
||||
${PREFIX}/share/doc/exim/exiscan-acl-spec.txt. The ports tree
|
||||
%%DOCSDIR%%/exiscan-acl-spec.txt. The ports tree
|
||||
includes various content scanners that might be useful, e.g.
|
||||
mail/p5-Mail-SpamAssassin and security/clamav.
|
||||
|
||||
Notes for enabling malware scanning with the excellent clamd scanner
|
||||
are in ${PREFIX}/share/doc/exim/POST-INSTALL-NOTES.clamd.
|
||||
are in %%DOCSDIR%%/POST-INSTALL-NOTES.clamd.
|
||||
|
||||
When Exiscan is actually enabled in the Exim configure file, great
|
||||
care should be taken to test upgrades, since Exiscan updates tend
|
||||
|
@ -2,29 +2,63 @@
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
# Note that 'pidfile' may need to be changed if 'args' is altered; see
|
||||
# the description of the 'pid_file_path' Exim configuration option in
|
||||
# the Exim Specification.
|
||||
|
||||
# PROVIDE: mail
|
||||
# REQUIRE: LOGIN
|
||||
# KEYWORD: FreeBSD shutdown
|
||||
# we make mail start late, so that things like .forward's are not
|
||||
# processed until the system is fully operational
|
||||
|
||||
#
|
||||
# Add the following lines to /etc/rc.conf to enable exim:
|
||||
#
|
||||
#exim_enable="YES"
|
||||
#
|
||||
# See exim(8) for flags
|
||||
#
|
||||
args='-bd -q30m'
|
||||
pidfile='/var/run/exim.pid'
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
[ -x /usr/local/sbin/exim ] && /usr/local/sbin/exim ${args} && \
|
||||
echo -n ' exim'
|
||||
;;
|
||||
stop)
|
||||
kill `cat ${pidfile}` && echo -n ' exim'
|
||||
;;
|
||||
reload)
|
||||
kill -HUP `cat ${pidfile}` && echo -n ' exim'
|
||||
;;
|
||||
*)
|
||||
echo "Usage: `basename $0` {start|stop|reload}" >&2
|
||||
exit 64
|
||||
;;
|
||||
esac
|
||||
. %%RC_SUBR%%
|
||||
|
||||
exit 0
|
||||
name=exim
|
||||
rcvar=`set_rcvar`
|
||||
|
||||
command=%%PREFIX%%/sbin/exim
|
||||
pidfile=/var/run/exim.pid
|
||||
required_dirs=/var/log/exim
|
||||
required_files=%%PREFIX%%/etc/exim/configure
|
||||
|
||||
start_precmd=start_precmd
|
||||
stop_postcmd=stop_postcmd
|
||||
|
||||
extra_commands="reload"
|
||||
|
||||
start_precmd()
|
||||
{
|
||||
case $sendmail_enable in
|
||||
[Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]|[Oo][Nn]|1)
|
||||
warn "sendmail_enable should be set to NONE"
|
||||
;;
|
||||
[Nn][Oo]|[Ff][Aa][Ll][Ss][Ee]|[Oo][Ff][Ff]|0)
|
||||
case $sendmail_submit_enable in
|
||||
[Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]|[Oo][Nn]|1)
|
||||
warn "sendmail_submit_enable should be set to NO"
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
[Nn][Oo][Nn][Ee])
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
stop_postcmd()
|
||||
{
|
||||
rm -f $pidfile
|
||||
}
|
||||
|
||||
# set defaults
|
||||
|
||||
exim_enable=${exim_enable:-"NO"}
|
||||
exim_flags=${exim_flags:-"-bd -q30m"}
|
||||
|
||||
load_rc_config $name
|
||||
run_rc_command "$1"
|
||||
|
@ -46,12 +46,10 @@ if [ "$2" = "POST-INSTALL" ]; then
|
||||
echo "============================================================"
|
||||
fi
|
||||
fi
|
||||
if ! grep -qs "^exim_enable" /etc/rc.conf
|
||||
then
|
||||
echo
|
||||
echo "Don't forget to add 'exim_enable=\"YES\"' to rc.conf(5)"
|
||||
echo
|
||||
fi
|
||||
fi
|
||||
|
||||
# This is naughty, since the directory we create won't be removed along
|
||||
# with Exim. However, logfiles should probably stick around after Exim
|
||||
# is removed, until the administrator is sure he doesn't want them
|
||||
# any more.
|
||||
#
|
||||
mkdir -p /var/log/exim
|
||||
chown ${user}:${group} /var/log/exim
|
||||
|
@ -2,6 +2,6 @@
|
||||
IMPORTANT NOTE:
|
||||
===============
|
||||
|
||||
Please read ${PREFIX}/share/doc/exim/POST-INSTALL-NOTES for important
|
||||
Please read %%DOCSDIR%%/POST-INSTALL-NOTES for important
|
||||
information regarding your Exim installation.
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
etc/exim/configure.default
|
||||
etc/rc.d/exim.sh
|
||||
@comment $FreeBSD$
|
||||
@unexec [ ! -f /var/run/exim.pid ] || %%RC_DIR%%/exim%%RC_SUFX%% stop || true
|
||||
sbin/exim
|
||||
sbin/exim-%%EXIM_VERSION%%-1
|
||||
sbin/exim_checkaccess
|
||||
@ -15,18 +15,33 @@ sbin/exigrep
|
||||
sbin/eximstats
|
||||
sbin/exiqgrep
|
||||
sbin/exiqsumm
|
||||
%%PORTDOCS%%%%DOCSDIR%%/POST-INSTALL-NOTES
|
||||
%%PORTDOCS%%%%DOCSDIR%%/ChangeLog
|
||||
%%PORTDOCS%%%%DOCSDIR%%/Exim3.upgrade
|
||||
%%PORTDOCS%%%%DOCSDIR%%/Exim4.upgrade
|
||||
%%PORTDOCS%%%%DOCSDIR%%/NewStuff
|
||||
%%PORTDOCS%%%%DOCSDIR%%/OptionLists.txt
|
||||
%%PORTDOCS%%%%DOCSDIR%%/POST-INSTALL-NOTES
|
||||
%%PORTDOCS%%%%EXISCAN_ACL%%%%DOCSDIR%%/POST-INSTALL-NOTES.clamd
|
||||
%%PORTDOCS%%%%DOCSDIR%%/README
|
||||
%%PORTDOCS%%%%DOCSDIR%%/README.SIEVE
|
||||
%%PORTDOCS%%%%DOCSDIR%%/dbm.discuss.txt
|
||||
%%PORTDOCS%%%%EXISCAN_ACL%%%%DOCSDIR%%/exiscan-acl-examples.txt
|
||||
%%PORTDOCS%%%%EXISCAN_ACL%%%%DOCSDIR%%/exiscan-acl-spec.txt
|
||||
%%PORTDOCS%%%%DOCSDIR%%/filter.txt
|
||||
%%PORTDOCS%%%%DOCSDIR%%/pcrepattern.txt
|
||||
%%PORTDOCS%%%%DOCSDIR%%/pcretest.txt
|
||||
%%PORTDOCS%%%%DOCSDIR%%/spec.txt
|
||||
%%PORTDOCS%%%%EXISCAN_ACL%%%%DOCSDIR%%/POST-INSTALL-NOTES.clamd
|
||||
%%PORTDOCS%%%%EXISCAN_ACL%%%%DOCSDIR%%/exiscan-acl-examples.txt
|
||||
%%PORTDOCS%%%%EXISCAN_ACL%%%%DOCSDIR%%/exiscan-acl-spec.txt
|
||||
@dirrm etc/exim
|
||||
%%PORTDOCS%%@dirrm %%DOCSDIR%%
|
||||
etc/periodic/daily/150.exim-tidydb
|
||||
etc/periodic/daily/460.exim-mail-rejects
|
||||
@unexec rmdir %D/etc/periodic/daily 2>/dev/null || true
|
||||
@unexec rmdir %D/etc/periodic 2>/dev/null || true
|
||||
@unexec if cmp -s %D/etc/exim/configure %D/etc/exim/configure.default; then rm -f %D/etc/exim/configure; fi
|
||||
etc/exim/configure.default
|
||||
@exec [ -f %B/configure ] || cp %B/%f %B/configure
|
||||
@unexec rmdir %B 2>/dev/null || true
|
||||
@cwd %%RC_DIR%%
|
||||
exim%%RC_SUFX%%
|
||||
@exec mkdir -p /var/log/exim
|
||||
@exec chown mailnull:mail /var/log/exim
|
||||
@unexec rmdir /var/log/exim 2>/dev/null || true
|
||||
|
Loading…
Reference in New Issue
Block a user