Files
ports/mail/courier/Makefile
T
2026-06-21 21:45:35 +02:00

311 lines
11 KiB
Makefile

PORTNAME= courier
PORTVERSION= 1.5.1
PORTREVISION= 1
CATEGORIES= mail
MASTER_SITES= SF
MAINTAINER= bsd@dino.sk
COMMENT= Courier SMTP IMAP POP3 HTTP mail server suite
WWW= https://www.Courier-MTA.org/
LICENSE= GPLv3
LICENSE_FILE= ${WRKSRC}/COPYING.GPL
BUILD_DEPENDS= courierauthconfig:security/courier-authlib-base \
gpg2:security/gnupg \
wget:ftp/wget
LIB_DEPENDS= libcourier-unicode.so:devel/courier-unicode \
libfam.so.0:devel/gamin \
libgdbm.so:databases/gdbm \
libidn2.so:dns/libidn2 \
libpcre2-8.so:devel/pcre2
RUN_DEPENDS= ${LOCALBASE}/etc/mime.types:misc/mime-support \
${LOCALBASE}/share/sysconftool/sysconftool:devel/sysconftool \
ca_root_nss>=3.*:security/ca_root_nss \
courierauthconfig:security/courier-authlib-base \
p5-Net-CIDR>=0:net-mgmt/p5-Net-CIDR \
wget:ftp/wget
#
# User-serviceable variables
#
# [ There's no need to add trailing ``/''s ]
#
# set IMAGEURL to where on the web server URL the images are found
# set CACHEOWN to who you'd like to own the cache files
# set MAILDROPDEFAULT to what you'd like the $DEFAULT in maildrop to be
# recomended values are: /var/mail, ./Mailbox or ./Maildir
#
IMAGEURL?= /webmail
CACHEOWN?= pop
MAILDROPDEFAULT?= ./Maildir
# End of user-serviceable variables
MAILOWN?= courier
MAILGRP?= courier
MAILUID?= 465
MAILGID?= 465
SYSCONFDIR= ${ETCDIR}/courier
LIBEXECDIR= ${PREFIX}/libexec
LOCALSTATEDIR= /var/spool/courier
CACHEDIR= /var/spool/webmail
CALENDIR= /var/spool/calendar
MIMETYPES= ${LOCALBASE}/etc/mime.types
WITH_TRANSPORT= local esmtp dsn
USES= gettext gmake libtool localbase perl5 pkgconfig shebangfix \
ssl tar:bzip2
USE_RC_SUBR= courier
USE_SUBMAKE= yes
SHEBANG_FILES= courier/filters/perlfilter/perlfilter-ratelimit.pl \
courier/filters/perlfilter/perlfilter-wrapper.pl
GNU_CONFIGURE= yes
GNU_CONFIGURE_MANPREFIX= ${PREFIX}/share
CONFIGURE_ARGS= --datadir=${DATADIR} \
--disable-root-check \
--enable-imageurl=${IMAGEURL} \
--enable-mimetypes=${MIMETYPES} \
--enable-syslog=1 \
--enable-unicode \
--enable-use-flock \
--enable-utf7-folder-encoding \
--enable-workarounds-for-imap-client-bugs \
--libexecdir=${LIBEXECDIR} \
--localstatedir=${LOCALSTATEDIR} \
--program-transform-name=s,^,, \
--sysconfdir=${SYSCONFDIR} \
--with-cachedir=${CACHEDIR} \
--with-cacheowner=${CACHEOWN} \
--with-calendardir=${CALENDIR} \
--with-db=gdbm \
--with-default-maildrop=${MAILDROPDEFAULT} \
--with-etcdir=${ETCDIR} \
--with-mailgid=${MAILGID} \
--with-mailgroup=${MAILGRP} \
--with-mailuid=${MAILUID} \
--with-mailuser=${MAILOWN} \
--with-mydatadir=${SYSCONFDIR} \
--with-notice=unicode \
--with-paranoid-smtpext \
--with-transport='${WITH_TRANSPORT}'
INSTALL_TARGET= install-strip install-perms
CONFLICTS= courier-imap-2.* couriermlm-0.* exim-4.* maildrop-1.* \
panda-imap-201* postfix-1.* postfix-2.* qmail-*-1.* qmail-1.* \
sendmail-*-8.* sendmail-8.* smail-3.* sqwebmail-3.* zmailer-2.*
ETCDIR= ${PREFIX}/etc
SUB_FILES+= crontab pkg-message sharedindexupdate
SUB_LIST:= ${PLIST_SUB}
PLIST_SUB+= BINGRP="${BINGRP}" \
BINOWN="${BINOWN}" \
CACHEDIR="${CACHEDIR}" \
CACHEOWN="${CACHEOWN}" \
CALENDIR="${CALENDIR}" \
LOCALSTATEDIR="${LOCALSTATEDIR}" \
MAILGID="${MAILGID}" \
MAILGRP="${MAILGRP}" \
MAILOWN="${MAILOWN}" \
MAILUID="${MAILUID}" \
SHAREGRP="${SHAREGRP}" \
SHAREOWN="${SHAREOWN}"
OPTIONS_DEFINE= CERTSDIR DOCS IPV6 LDAP MAILCONF PROCMAIL SENDFAX UUCP
OPTIONS_DEFAULT= SYSTEMALIASES WEBMAILRSENT
OPTIONS_GROUP= WEBMAIL
OPTIONS_GROUP_WEBMAIL= GNUPG WEBMAILFLAGS WEBMAILRSENT WEBMAILXFACE
OPTIONS_RADIO= ALIASES SPELL
OPTIONS_RADIO_ALIASES= EMPTYALIASES SYSTEMALIASES
OPTIONS_RADIO_SPELL= ASPELL ISPELL
OPTIONS_SUB= yes
ASPELL_DESC= ASpell support for WebMail
ISPELL_DESC= ISpell support for WebMail
CERTSDIR_DESC= separate .pem directory for certificates
EMPTYALIASES_DESC= create empty aliases file
GNUPG_DESC= GNU Privacy Guard support for WebMail
LDAP_DESC= LDAP-based mail aliasing support
MAILCONF_DESC= modify mailer.conf to use courier instead of sendmail
PROCMAIL_DESC= Procmail local delivery support
SENDFAX_DESC= mgetty+sendfax support
SYSTEMALIASES_DESC= symlink system /etc/aliases
UUCP_DESC= UUCP support
WEBMAILFLAGS_DESC= webmail show flags patch
WEBMAILRSENT_DESC= enable Autorename Sent folder
WEBMAILXFACE_DESC= experimental webmail X-Face patch
ASPELL_BUILD_DEPENDS= aspell:textproc/aspell
ASPELL_RUN_DEPENDS= aspell:textproc/aspell
ASPELL_CONFIGURE_ON= --with-ispell=${LOCALBASE}/bin/aspell
ISPELL_BUILD_DEPENDS= ispell:textproc/aspell-ispell
ISPELL_RUN_DEPENDS= ispell:textproc/aspell-ispell
ISPELL_CONFIGURE_ON= --with-ispell=${LOCALBASE}/bin/ispell
CERTSDIR_CONFIGURE_ON= --with-certsdir=${SYSCONFDIR}/.pem
CERTSDIR_CONFIGURE_OFF= --with-certsdir=${SYSCONFDIR}
CERTSDIR_SUB_LIST= CERTSDIRPATH="${SYSCONFDIR}/.pem"
CERTSDIR_SUB_LIST_OFF= CERTSDIRPATH="${SYSCONFDIR}"
GNUPG_RUN_DEPENDS= gpg2:security/gnupg
GNUPG_CONFIGURE_ENV= GPG="${LOCALBASE}/bin/gpg2"
IPV6_CONFIGURE_WITH= ipv6
LDAP_RUN_DEPENDS= ${LOCALBASE}/lib/courier-authlib/libauthldap.so:net/courier-authlib-ldap
LDAP_USES= ldap
LDAP_CONFIGURE_WITH= ldapaliasd
MAILCONF_SUB_LIST= MAILCONFACT="y"
MAILCONF_SUB_LIST_OFF= MAILCONFACT="n"
PROCMAIL_BUILD_DEPENDS= procmail:mail/procmail
PROCMAIL_RUN_DEPENDS= procmail:mail/procmail
SENDFAX_BUILD_DEPENDS= pnmscale:graphics/netpbm \
sendfax:comms/mgetty+sendfax
SENDFAX_RUN_DEPENDS= pnmscale:graphics/netpbm \
sendfax:comms/mgetty+sendfax
SENDFAX_USES= ghostscript
SENDFAX_VARS= WITH_TRANSPORT+=fax
UUCP_BUILD_DEPENDS= uux:net/freebsd-uucp
UUCP_RUN_DEPENDS= uux:net/freebsd-uucp
UUCP_VARS= WITH_TRANSPORT+=uucp
WEBMAILFLAGS_EXTRA_PATCHES= ${FILESDIR}/extra-patch-libs__sqwebmail__folder.c \
${FILESDIR}/extra-patch-libs__sqwebmail__maildir.c \
${FILESDIR}/extra-patch-libs__sqwebmail__maildir.h \
${FILESDIR}/extra-patch-libs__sqwebmail__images__sqwebmail.css
WEBMAILRSENT_CONFIGURE_ENABLE= autorenamesent
WEBMAILXFACE_EXTRA_PATCHES= ${FILESDIR}/extra-patch-libs__sqwebmail__msg2html.c
.include <bsd.port.options.mk>
.if !${PORT_OPTIONS:MASPELL} && !${PORT_OPTIONS:MISPELL}
CONFIGURE_ARGS+= --without-ispell
.endif
.include "${.CURDIR}/Makefile.doc"
.if exists(${.CURDIR}/../../security/courier-authlib/Makefile.dep)
.include "${.CURDIR}/../../security/courier-authlib/Makefile.dep"
.endif
_CNFFILES= esmtpd.cnf \
imapd.cnf \
pop3d.cnf
_DISTEXFILES= courierd.dist \
esmtpd-msa.dist \
esmtpd-ssl.dist \
esmtpd.dist \
faxcoverpage.tr.dist \
faxnotifyrc.dist \
faxrc.dist \
imapd-ssl.dist \
imapd.dist \
ldapaddressbook.dist \
ldapaliasrc.dist \
pop3d-ssl.dist \
pop3d.dist \
sqwebmaild.dist \
webmlmrc.dist
pre-patch:
${CP} ${TEMPLATES}/config.guess ${TEMPLATES}/config.sub ${WRKSRC}
post-patch:
${REINPLACE_CMD} -i '' -e 's|#! perl|#!${PERL}|g' \
${WRKSRC}/webadmin/*.pl \
${WRKSRC}/webadmin/*.pl.in \
${WRKSRC}/courier/webadmin/*.pl \
${WRKSRC}/courier/webadmin/*.pl.in
${REINPLACE_CMD} -e 's|^PROG=\./|PROG=exec ./|g' \
${WRKSRC}/courier/module.*/courier.config
${REINPLACE_CMD} -e 's|@mydatadir@|@sysconfdir@|g' \
${WRKSRC}/*/*/mk*cert.*
${REINPLACE_CMD} -e 's|^\(TLS_CERTFILE=\)@mydatadir@|\1@sysconfdir@|g' \
${WRKSRC}/*/*.dist.in \
${WRKSRC}/*/*/*.dist.in
${REINPLACE_CMD} -e 's|^\(TLS_DHPARAMS=\)@mydatadir@|\1@sysconfdir@|g' \
${WRKSRC}/*/*.dist.in \
${WRKSRC}/*/*/*.dist.in
${REINPLACE_CMD} -e 's|^\(RANDFILE[[:space:]]*=[[:space:]]*\)@mydatadir@|\1@sysconfdir@|g' \
${WRKSRC}/*/*/*.cnf.openssl.in
${REINPLACE_CMD} -e 's|$$(INSTALL_DATA) \(.$$$$file.\)|${INSTALL_MAN} \1|' \
${WRKSRC}/Makefile.in \
${WRKSRC}/*/Makefile.in \
${WRKSRC}/*/*/Makefile.in \
${WRKSRC}/*/*/*/Makefile.in
${REINPLACE_CMD} -e 's|^\(INSTALL_STRIP_PROGRAM=\).*$$|\1"${INSTALL_PROGRAM} -s"|' \
-e 's|; ldapaliasd="yes"||' \
${WRKSRC}/configure \
${WRKSRC}/*/configure \
${WRKSRC}/*/*/configure \
${WRKSRC}/*/*/*/configure
${REINPLACE_CMD} -E -e 's/(root|bin)[[:space:]]*bin/root wheel/g' \
${WRKSRC}/courier/perms.sh.in
${REINPLACE_CMD} '/^courieresmtp_LDADD =/s/$$/ -lcourierauth/' \
${WRKSRC}/courier/module.esmtp/Makefile.in
# Avoid conflict with C++20 <version> by adding .txt suffix
${REINPLACE_CMD} -i .c++20 's/>version$$/&.txt/' ${WRKSRC}/configure
${FIND} ${WRKSRC} -name configure -exec ${REINPLACE_CMD} \
-i .c++20 '/^version.*cat/s,/version,&.txt,' {} +
post-build:
${PERL} -pi -e 's|^(auth)\s+(required).*|$$1\t\t$$2\tpam_unix.so\ttry_first_pass|g;' \
-e 's|^(account)\s+(required).*|$$1 \t$$2\tpam_unix.so|g;' \
-e 's|^(session)\s+(required).*|$$1 \t$$2\tpam_permit.so|g;' \
${WRKSRC}/*/*.authpam* \
${WRKSRC}/*/*/*.authpam*
${INSTALL} -lrs ${WRKSRC}/libs/gpglib/README.html ${WRKSRC}/libs/gpglib/README.gpglib.html
${INSTALL} -lrs ${WRKSRC}/libs/imap/BUGS ${WRKSRC}/libs/imap/BUGS.imap
${INSTALL} -lrs ${WRKSRC}/libs/imap/BUGS.html ${WRKSRC}/libs/imap/BUGS.imap.html
${INSTALL} -lrs ${WRKSRC}/libs/imap/README.proxy ${WRKSRC}/libs/imap/README.imap.proxy
${INSTALL} -lrs ${WRKSRC}/libs/imap/README.proxy.html ${WRKSRC}/libs/imap/README.imap.proxy.html
${INSTALL} -lrs ${WRKSRC}/libs/maildrop/README.html ${WRKSRC}/libs/maildrop/README.maildrop.html
${INSTALL} -lrs ${WRKSRC}/libs/pcp/README.html ${WRKSRC}/libs/pcp/README.pcp.html
${INSTALL} -lrs ${WRKSRC}/libs/sqwebmail/BUGS ${WRKSRC}/libs/sqwebmail/BUGS.sqwebmail
${INSTALL} -lrs ${WRKSRC}/libs/sqwebmail/BUGS.html ${WRKSRC}/libs/sqwebmail/BUGS.sqwebmail.html
${INSTALL} -lrs ${WRKSRC}/libs/sqwebmail/SECURITY ${WRKSRC}/libs/sqwebmail/SECURITY.sqwebmail
${INSTALL} -lrs ${WRKSRC}/libs/sqwebmail/SECURITY.html ${WRKSRC}/libs/sqwebmail/SECURITY.sqwebmail.html
post-install:
.for _cfgfile in ${_CNFFILES}
-${MV} ${STAGEDIR}${SYSCONFDIR}/${_cfgfile} ${STAGEDIR}${SYSCONFDIR}/${_cfgfile:S/.cnf/.cnf.sample/g}
.endfor
.for _cfgfile in ${_DISTEXFILES}
-${MV} ${STAGEDIR}${SYSCONFDIR}/${_cfgfile} ${STAGEDIR}${SYSCONFDIR}/${_cfgfile:S/.dist/.sample/g}
.endfor
${INSTALL} -lrs ${STAGEDIR}${SYSCONFDIR}/maildrop ${STAGEDIR}${SYSCONFDIR}/maildropfilter
${INSTALL_DATA} /dev/null ${STAGEDIR}${SYSCONFDIR}/locallowercase
${INSTALL_DATA} ${WRKDIR}/crontab ${STAGEDIR}${SYSCONFDIR}/
${INSTALL_SCRIPT} ${WRKDIR}/sharedindexupdate ${STAGEDIR}${DATADIR}/
.if ${PORT_OPTIONS:MDOCS}
${MKDIR} ${STAGEDIR}${DOCSDIR}
${MKDIR} ${STAGEDIR}${DOCSDIR}/html
.for f in ${DOCS}
${INSTALL_DATA} ${WRKSRC}/${f} ${STAGEDIR}${DOCSDIR}
.endfor
.for f in ${HTMLDOCS}
${INSTALL_DATA} ${WRKSRC}/${f} ${STAGEDIR}${DOCSDIR}/html
.endfor
${INSTALL_DATA} ${STAGEDIR}${DATADIR}/htmldoc/* ${STAGEDIR}${DOCSDIR}/html
.endif
${RM} -r ${STAGEDIR}${DATADIR}/htmldoc
${CHMOD} -R a+r ${STAGEDIR}${DATADIR}/courierwebadmin
${CHMOD} -R a-w ${STAGEDIR}${DATADIR} ${STAGEDIR}${LIBEXECDIR}/courier
${CHMOD} 550 ${STAGEDIR}${LIBEXECDIR}/courier/modules/esmtp/courieresmtp*
post-install-CERTSDIR-on:
${MKDIR} ${STAGEDIR}${SYSCONFDIR}/.pem
.include <bsd.port.mk>