1
0
mirror of https://git.FreeBSD.org/ports.git synced 2025-01-12 07:27:57 +00:00
freebsd-ports/mail/exim/Makefile
Sheldon Hearn 70b4918cf0 1) Update exiscan-acl patch to -09:
Improved clamd support.
   New FAQ/example documentation.

2) Enable wildlsearch lookups by default and add new
   WITHOUT_WILDLSEARCH knob for disabling them.

3) Issue a fat warning if 127.0.0.1 is found in the relay_from_hosts
   hostlist of an existing configure file on upgrade.  This is important
   for IPv6 users and doesn't hurt IPv4-only users.

4) Attempt local deliveries as the owner of the mailbox (still group
   mail) and don't fail if the existing mailbox permissions are narrower
   than those with which we would have created it.  This works around
   pw(8) creating mailboxes with 0600 permission (instead of 0660).

Don't advertise Exim's configuration syntax as simple any more.  This
implies that you could leverage Exim's power with just a little reading,
which is not the case.

Bump PORTREVISION accordingly.

Submitted by:	Oliver Eikemeier <eikemeier@fillmore-labs.com> (1)
PR:		ports/52952 (2)
Submitted by:	Tim Bishop <tim@bishnet.net> (2)
Reported by:	Yann Golanski <yann@kierun.org> (3)
Reported by:	"Simon L. Nielsen" <simon@nitro.dk> (4)
2003-06-13 13:20:56 +00:00

384 lines
12 KiB
Makefile

# New ports collection makefile for: exim
# Date created: 23 June 1996
# Whom: markm@FreeBSD.org
#
# $FreeBSD$
#
PORTNAME= exim
PORTVERSION= ${EXIM_VERSION}
PORTREVISION= 3
CATEGORIES= mail
MASTER_SITES= ftp://ftp.csx.cam.ac.uk/pub/software/email/exim/%SUBDIR%/ \
ftp://gd.tuwien.ac.at/infosys/mail/exim/%SUBDIR%/ \
ftp://ftp.easynet.be/exim/%SUBDIR%/ \
ftp://mirror.direct.ca/pub/exim/%SUBDIR%/ \
ftp://mirror.kn.vutbr.cz/pub/ftp.exim.org/%SUBDIR%/ \
ftp://sunsite.auc.dk/pub/mail/exim/%SUBDIR%/ \
ftp://ftp.doc.cs.univ-paris8.fr/mirrors/ftp.exim.org/%SUBDIR%/ \
ftp://ftp.fu-berlin.de/unix/mail/exim/%SUBDIR%/ \
ftp://ftp.tin.org/pub/mail/exim/%SUBDIR%/ \
ftp://ftp.freenet.de/pub/ftp.csx.cam.ac.uk/pub/software/email/exim/%SUBDIR%/ \
ftp://ftp.esat.net/pub/networking/mail/mta/exim/%SUBDIR%/ \
ftp://nagoya.linux.or.jp/mirror/exim/%SUBDIR%/ \
http://exim.psshee.com/ftp/%SUBDIR%/ \
ftp://ftp.nl.uu.net/pub/unix/mail/exim/%SUBDIR%/ \
ftp://ftp.demon.nl/pub/mirrors/exim/%SUBDIR%/ \
ftp://ftp.easynet.nl/mirror/exim/%SUBDIR%/ \
ftp://sunsite.uio.no/pub/mail/exim/%SUBDIR%/ \
http://sunsite.icm.edu.pl/pub/unix/mail/exim/%SUBDIR%/ \
ftp://ftp.smux.net/pub/exim/%SUBDIR%/ \
ftp://ftp.is.co.za/networking/mail/mta/exim/%SUBDIR%/ \
ftp://sunsite.cnlab-switch.ch/mirror/exim/%SUBDIR%/ \
ftp://ftp.exim.org/pub/exim/%SUBDIR%/ \
http://www.us.exim.org/ftp/%SUBDIR%/ \
http://exim.stanford.edu/ftp/pub/exim/%SUBDIR%/ \
ftp://ftp.fsckit.net/pub/exim/%SUBDIR%/ \
http://duncanthrax.net/%SUBDIR%/:exiscan,exiscan_acl
MASTER_SITE_SUBDIR= exim4 exiscan/:exiscan exiscan-acl/:exiscan_acl
DISTFILES= exim-${EXIM_VERSION}${EXTRACT_SUFX} \
exim-texinfo-${EXIM_DOCVERSION}${EXTRACT_SUFX}
.if defined(WITH_EXISCAN_ACL)
DISTFILES+= exiscan-acl-${EXISCAN_ACL_VERSION}.patch.bz2:exiscan_acl
.elif !defined(WITHOUT_EXISCAN)
DISTFILES+= exiscan-${EXISCAN_VERSION}${EXTRACT_SUFX}:exiscan
.endif
DIST_SUBDIR= exim
EXTRACT_ONLY= exim-${EXIM_VERSION}${EXTRACT_SUFX} \
exim-texinfo-${EXIM_DOCVERSION}${EXTRACT_SUFX}
.if !defined(WITH_EXISCAN_ACL) && !defined(WITHOUT_EXISCAN)
EXTRACT_ONLY+= exiscan-${EXISCAN_VERSION}${EXTRACT_SUFX}
.endif
MAINTAINER= sheldonh@FreeBSD.org
COMMENT= High performance MTA for Unix systems on the Internet
USE_BZIP2= yes
USE_PERL5= yes
MAN8= exim.8
EXIM_VERSION= 4.20
EXIM_DOCVERSION= 4.20
EXISCAN_ACL_VERSION= ${EXIM_VERSION}-09
EXISCAN_VERSION= ${EXIM_VERSION}-26
PLIST_SUB+= EXIM_VERSION="${EXIM_VERSION}"
.if defined(NOPORTDOCS)
PKGMESSAGE= ${WRKDIR}/POST-INSTALL-NOTES
.endif
MAKE_ENV+= OSTYPE=${OPSYS} ARCHTYPE=${MACHINE_ARCH}
POSTGRESQL_PORT?= databases/postgresql7
# If WITH_EXIMON is defined, the eximon monitor, which requires X,
# will be made a dependency. Note that using WITH_EXIMON will cause
# XFree86 to be installed if it is not present.
#WITH_EXIMON= yes
# If WITH_EXISCAN_ACL is defined, exim will be build with the newer
# exiscan acl support. Otherwise if WITHOUT_EXISCAN is defined,
# exim will be built without exiscan email content scanner support.
#WITH_EXISCAN_ACL= yes
#WITHOUT_EXISCAN= yes
# Define WITH_TCP_WRAPPERS, WITH_MYSQL, and WITH_PGSQL to link against
# libwrap, liblibmysqlclient and libpq respectively. Define
# WITH_PWCHECK to link against libsasl for SMTP AUTH authentication
# via the Cyrus SASL pwcheck daemon.
#WITH_TCP_WRAPPERS= yes
#WITH_MYSQL= yes
#WITH_PGSQL= yes
#WITH_PWCHECK= yes
# Define WITHOUT_IPV6 to exclude IPv6 support from the compiled exim
# binary. Exim compiled with IPv6 support will still operate on
# systems that do not have IPv6 kernel support, so this should not
# be necessary.
#WITHOUT_IPV6= yes
# Define WITH_OPENLDAP1, WITH_OPENLDAP20 or WITH_OPENLDAP21 to link
# against the respective OpenLDAP library.
# Exim also supports NETSCAPE and SOLARIS7 lookup types, but no
# client libraries exist for these in the ports tree.
#WITH_OPENLDAP1= yes
#WITH_OPENLDAP20= yes
#WITH_OPENLDAP21= yes
# DB_LIB_VERSION is the version of the Berkeley DB library to use, and
# may be 1, which corresponds to version 1.85 in the base system, 4 or
# 41 which depends on the databases/db4 or databases/db41 port.
DB_LIB_VERSION?=1
# The following options may be defined to turn off support for various
# features that this port enables by default.
#
# Do not link against OpenSSL; disables STARTTLS.
#WITHOUT_TLS= yes
#
# Disable the embedded Perl interpreter, which allows Perl subroutines to
# be called during string expansion.
#WITHOUT_PERL= yes
#
# Disable built-in Exim support for the PAM, RFC 2195, RFC 2595 and
# Microsoft "Secure Password Authentication" authentication mechanisms,
# used for SMTP AUTH.
#WITHOUT_PAM= yes
#WITHOUT_AUTH_CRAM_MD5= yes
#WITHOUT_AUTH_PLAINTEXT= yes
#WITHOUT_AUTH_SPA= yes
#
# Disable built-in Exim support for additional mailbox formats.
#WITHOUT_MAILDIR= yes
#WITHOUT_MAILSTORE= yes
#WITHOUT_MBX= yes
#
# Define WITHOUT_CDB, WITHOUT_DSEARCH, WILD_LSEARCH and WITHOUT_NIS to
# disable support for CDB-style, directory-list, wildcarded-file and NIS
# lookups respectively.
#WITHOUT_CDB= yes
#WITHOUT_DSEARCH= yes
#WITHOUT_WILDLSEARCH= yes
#WITHOUT_NIS= yes
#
# Disable support for the LMTP (RFC 2033 "SMTP over command pipe")
# transport.
#WITHOUT_LMTP
# You should not need to fiddle with anything below this point.
.if defined(WITH_EXIMON)
RUN_DEPENDS= ${LOCALBASE}/sbin/eximon:${PORTSDIR}/mail/exim-monitor
.endif
.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 defined(WITH_EXISCAN_ACL)
PORTDOC_FILES+= exiscan-acl-examples.txt exiscan-acl-spec.txt
PLIST_SUB+= EXISCAN_ACL=""
PLIST_SUB+= EXISCAN="@comment "
.elif !defined(WITHOUT_EXISCAN)
PORTDOC_FILES+= exiscan-readme.txt
PLIST_SUB+= EXISCAN_ACL="@comment "
PLIST_SUB+= EXISCAN=""
.else
PLIST_SUB+= EXISCAN_ACL="@comment "
PLIST_SUB+= EXISCAN="@comment "
.endif
.if ${OSVERSION} < 400014
WITHOUT_IPV6= yes
.endif
SEDLIST= -e 's,XX_PREFIX_XX,${PREFIX},'
.if !defined(WITHOUT_TLS)
SEDLIST+= -e 's,^\# SUPPORT_TLS=,SUPPORT_TLS=,'
.else
SEDLIST+= -e 's,^TLS_LIBS=,\#TLS_LIBS=,'
.endif
.if !defined(WITHOUT_PERL)
SEDLIST+= -e 's,^\# EXIM_PERL=,EXIM_PERL=,'
.endif
.if defined(WITH_TCP_WRAPPERS)
SEDLIST+= -e 's,XX_TCP_WRAPPERS_LIBS_XX,-lwrap,' \
-e 's,^\# USE_TCP_WRAPPERS=,USE_TCP_WRAPPERS=,'
.else
SEDLIST+= -e 's,XX_TCP_WRAPPERS_LIBS_XX,,'
.endif
.if defined(WITH_LDAP)
LDAP_LIB_TYPE?=OPENLDAP1
.if (${LDAP_LIB_TYPE} == OPENLDAP1) || (${LDAP_LIB_TYPE} == UMICHIGAN)
WITH_OPENLDAP1= yes
.elif ${LDAP_LIB_TYPE} == OPENLDAP2
WITH_OPENLDAP2= yes
.else
.error LDAP_LIB_TYPE must be either OPENLDAP1 or OPENLDAP2
.endif
.endif
.if defined(WITH_OPENLDAP1) && ( defined(WITH_OPENLDAP2) || \
defined(WITH_OPENLDAP20) || defined(WITH_OPENLDAP21) )
.error please select only one OpenLDAP version
.elif defined(WITH_OPENLDAP20) && defined(WITH_OPENLDAP21)
.error OpenLDAP 2.0 and 2.1 are mutually exclusive
.endif
.if defined(WITH_OPENLDAP21)
LDAP_LIB_TYPE= OPENLDAP2
LIB_DEPENDS+= lber.2:${PORTSDIR}/net/openldap21
.elif defined(WITH_OPENLDAP2) || defined(WITH_OPENLDAP20)
LDAP_LIB_TYPE= OPENLDAP2
LIB_DEPENDS+= lber.2:${PORTSDIR}/net/openldap20
.elif defined(WITH_OPENLDAP1)
LDAP_LIB_TYPE= OPENLDAP1
LIB_DEPENDS+= lber.1:${PORTSDIR}/net/openldap12
.elif defined(LDAP_LIB_TYPE)
.error please choose the OpenLDAP version you want to use
.endif
.if defined(LDAP_LIB_TYPE)
SEDLIST+= -e 's,XX_LDAP_LIBS_XX,-L${LOCALBASE}/lib -llber -lldap,' \
-e 's,XX_LDAP_INCLUDE_XX,-I${LOCALBASE}/include,' \
-e 's,XX_LDAP_TYPE_XX,${LDAP_LIB_TYPE},' \
-e 's,^\# LOOKUP_LDAP=,LOOKUP_LDAP=,'
.else
SEDLIST+= -e 's,XX_LDAP_[^ ]*_XX,,' \
-e 's,^LDAP_LIB_TYPE=,\#LDAP_LIB_TYPE=,'
.endif
.if (${DB_LIB_VERSION} == 1)
DB_LIBS=
DB_INCLUDES=
SEDLIST+= -e 's,^DBMLIB=,\#DBMLIB=,'
.elif (${DB_LIB_VERSION} == 4)
DB_LIBS= -L${LOCALBASE}/lib -ldb4
DB_INCLUDES= -I${LOCALBASE}/include/db4
LIB_DEPENDS+= db4.0:${PORTSDIR}/databases/db4
.elif (${DB_LIB_VERSION} == 41)
DB_LIBS= -L${LOCALBASE}/lib -ldb41
DB_INCLUDES= -I${LOCALBASE}/include/db41
LIB_DEPENDS+= db41.1:${PORTSDIR}/databases/db41
.else
.error DB_LIB_VERSION must be either 1, 4 or 41
.endif
SEDLIST+= -e 's,XX_DB_LIBS_XX,${DB_LIBS},' \
-e 's,XX_DB_INCLUDES_XX,${DB_INCLUDES},'
.if defined(WITH_MYSQL)
LIB_DEPENDS+= mysqlclient.10:${PORTSDIR}/databases/mysql323-client
SEDLIST+= -e 's,XX_MYSQL_LIBS_XX,-L${LOCALBASE}/lib/mysql -lmysqlclient,' \
-e 's,XX_MYSQL_INCLUDE_XX,-I${LOCALBASE}/include/mysql,' \
-e 's,^\# LOOKUP_MYSQL=,LOOKUP_MYSQL=,'
.else
SEDLIST+= -e 's,XX_MYSQL_[^ ]*_XX,,'
.endif
.if defined(WITH_PWCHECK)
RUN_DEPENDS+= ${LOCALBASE}/sbin/pwcheck:${PORTSDIR}/security/cyrus-sasl
SEDLIST+= -e 's,^\# SUPPORT_CYRUS_PWCHECK=,SUPPORT_CYRUS_PWCHECK=,' \
-e 's,^\# CYRUS_PWCHECK_SOCKET=,CYRUS_PWCHECK_SOCKET=,'
.endif
.if !defined(WITHOUT_PAM)
SEDLIST+= -e 's,XX_PAM_LIBS_XX,-lpam,' \
-e 's,^\# SUPPORT_PAM=,SUPPORT_PAM=,'
.else
SEDLIST+= -e 's,XX_PAM_LIBS_XX,,'
.endif
.if !defined(WITHOUT_AUTH_CRAM_MD5)
SEDLIST+= -e 's,^\# AUTH_CRAM_MD5=,AUTH_CRAM_MD5=,'
.endif
.if !defined(WITHOUT_AUTH_PLAINTEXT)
SEDLIST+= -e 's,^\# AUTH_PLAINTEXT=,AUTH_PLAINTEXT=,'
.endif
.if !defined(WITHOUT_AUTH_SPA)
SEDLIST+= -e 's,^\# AUTH_SPA=,AUTH_SPA=,'
.endif
.if defined(WITH_PGSQL)
LIB_DEPENDS+= pq.3:${PORTSDIR}/${POSTGRESQL_PORT}
SEDLIST+= -e 's,XX_PGSQL_LIBS_XX,-L${LOCALBASE}/lib -lpq,' \
-e 's,XX_PGSQL_INCLUDE_XX,-I${LOCALBASE}/include/pgsql,' \
-e 's,^\# LOOKUP_PGSQL=,LOOKUP_PGSQL=,'
.else
SEDLIST+= -e 's,XX_PGSQL_[^ ]*_XX,,'
.endif
.if !defined(WITHOUT_IPV6)
SEDLIST+= -e 's,^\# HAVE_IPV6=,HAVE_IPV6=,'
.endif
.if !defined(WITH_PGSQL) && !defined(WITH_MYSQL) && !defined(LDAP_LIB_TYPE) && \
${DB_LIB_VERSION} == 1
SEDLIST+= -e 's,^LOOKUP_LIBS=,\#LOOKUP_LIBS=,' \
-e 's,^LOOKUP_INCLUDE=,\#LOOKUP_INCLUDE=,'
.endif
.if !defined(WITHOUT_MAILDIR)
SEDLIST+= -e 's,^\# SUPPORT_MAILDIR=,SUPPORT_MAILDIR=,'
.endif
.if !defined(WITHOUT_MAILSTORE)
SEDLIST+= -e 's,^\# SUPPORT_MAILSTORE=,SUPPORT_MAILSTORE=,'
.endif
.if !defined(WITHOUT_MBX)
SEDLIST+= -e 's,^\# SUPPORT_MBX=,SUPPORT_MBX=,'
.endif
.if !defined(WITHOUT_CDB)
SEDLIST+= -e 's,^\# LOOKUP_CDB=,LOOKUP_CDB=,'
.endif
.if !defined(WITHOUT_DSEARCH)
SEDLIST+= -e 's,^\# LOOKUP_DSEARCH=,LOOKUP_DSEARCH=,'
.endif
.if !defined(WITHOUT_WILDLSEARCH)
SEDLIST+= -e 's,^\# LOOKUP_WILDLSEARCH=,LOOKUP_WILDLSEARCH=,'
.endif
.if !defined(WITHOUT_NIS)
SEDLIST+= -e 's,^\# LOOKUP_NIS=,LOOKUP_NIS=,'
.endif
.if !defined(WITHOUT_LMTP)
SEDLIST+= -e 's,^\# TRANSPORT_LMTP=,TRANSPORT_LMTP=,'
.endif
post-patch:
.if defined(WITH_EXISCAN_ACL)
${BZCAT} ${DISTDIR}/${DIST_SUBDIR}/exiscan-acl-${EXISCAN_ACL_VERSION}.patch.bz2 \
| ${PATCH} -d ${WRKSRC} -p1 > ${WRKDIR}/patch-exiscan-acl.log 2>&1
@${CAT} ${FILESDIR}/POST-INSTALL-NOTES.exiscan-acl \
${FILESDIR}/POST-INSTALL-NOTES > ${WRKDIR}/POST-INSTALL-NOTES
.elif !defined(WITHOUT_EXISCAN)
cd ${WRKSRC} && ${PATCH} -p1 \
< ../exiscan-${EXISCAN_VERSION}/exiscan-${EXISCAN_VERSION}.patch \
> ${WRKDIR}/patch-exiscan.log 2>&1
@${CAT} ${FILESDIR}/POST-INSTALL-NOTES.exiscan \
${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
cd ${WRKSRC}/doc && \
for i in ../../exim-texinfo-${EXIM_DOCVERSION}/doc/* ; do \
${LN} -sf $$i ; \
done
pre-install:
@PKG_PREFIX="${PREFIX}" ${SH} ${PKGINSTALL} ${PKGNAME} PRE-INSTALL
post-install:
${INSTALL_SCRIPT} ${FILESDIR}/exim.sh ${PREFIX}/etc/rc.d
.if !defined(NOPORTDOCS)
${MKDIR} ${PREFIX}/share/doc/exim
${INSTALL_DATA} ${WRKDIR}/POST-INSTALL-NOTES ${PREFIX}/share/doc/exim
.for file in ${PORTDOC_FILES}
${INSTALL_DATA} ${WRKSRC}/doc/${file} ${PREFIX}/share/doc/exim
.endfor
.for file in ${MAN8}
${INSTALL_MAN} ${WRKSRC}/doc/${file} ${PREFIX}/man/man8
.endfor
.endif
@${CAT} ${PKGMESSAGE}
@PKG_PREFIX="${PREFIX}" ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL
.include <bsd.port.post.mk>