ports/mail/vpopmail/Makefile
Stefan Eßer b7f05445c0 Add WWW entries to port Makefiles
It has been common practice to have one or more URLs at the end of the
ports' pkg-descr files, one per line and prefixed with "WWW:". These
URLs should point at a project website or other relevant resources.

Access to these URLs required processing of the pkg-descr files, and
they have often become stale over time. If more than one such URL was
present in a pkg-descr file, only the first one was tarnsfered into
the port INDEX, but for many ports only the last line did contain the
port specific URL to further information.

There have been several proposals to make a project URL available as
a macro in the ports' Makefiles, over time.

This commit implements such a proposal and moves one of the WWW: entries
of each pkg-descr file into the respective port's Makefile. A heuristic
attempts to identify the most relevant URL in case there is more than
one WWW: entry in some pkg-descr file. URLs that are not moved into the
Makefile are prefixed with "See also:" instead of "WWW:" in the pkg-descr
files in order to preserve them.

There are 1256 ports that had no WWW: entries in pkg-descr files. These
ports will not be touched in this commit.

The portlint port has been adjusted to expect a WWW entry in each port
Makefile, and to flag any remaining "WWW:" lines in pkg-descr files as
deprecated.

Approved by:		portmgr (tcberner)
2022-09-07 23:10:59 +02:00

411 lines
14 KiB
Makefile

PORTNAME= vpopmail
PORTVERSION= 5.4.33
PORTREVISION= 4
CATEGORIES= mail
MASTER_SITES= SF/${PORTNAME}/${PORTNAME}-stable/${PORTVERSION}
MAINTAINER= ports@FreeBSD.org
COMMENT= Easy virtual domain and authentication package for use with qmail
WWW= https://inter7.com/vpopmail/
LICENSE= GPLv2 GPLv3
LICENSE_COMB= dual
BUILD_DEPENDS= ${LOCALBASE}/bin/tcprules:sysutils/ucspi-tcp
RUN_DEPENDS= ${LOCALBASE}/bin/tcprules:sysutils/ucspi-tcp
PATCH_STRIP= -p1
USES= dos2unix qmail gmake fakeroot
DOS2UNIX_FILES= doc/README.vpopmaild
CONFLICTS= vpopmail-devel-5.*
GNU_CONFIGURE= YES
OPTIONS_SUB= yes
USERS= vpopmail
GROUPS= vchkpw
VCFGDIR?= ${WRKDIR}/vcfg
VCFGFILES?= inc_deps lib_deps tcp.smtp
CONFIGURE_ENV+= VCFGDIR="${VCFGDIR}" \
AUTOCONF=true ACLOCAL=true AUTOMAKE=true AUTOHEADER=true
CONFIGURE_ARGS= --enable-qmaildir=${QMAIL_PREFIX} \
--enable-tcprules-prog=${LOCALBASE}/bin/tcprules \
--enable-tcpserver-file=${VPOPMAIL_DIR}/etc/tcp.smtp \
--enable-non-root-build \
--enable-logging=${LOGLEVEL} \
--enable-vpopuser=nobody \
--enable-vpopgroup=nobody
OPTIONS_DEFINE= DOCS \
PASSWD \
MD5_PASSWORDS \
CLEAR_PASSWD \
LEARN_PASSWORDS \
MYSQL_REPLICATION \
MYSQL_LIMITS \
VALIAS \
ROAMING \
IP_ALIAS \
QMAIL_EXT \
FILE_LOCKING \
FILE_SYNC \
USERS_BIG_DIR \
SEEKABLE \
SPAMASSASSIN \
SUID_VCHKPW \
SMTP_AUTH_PATCH \
ONCHANGE_SCRIPT \
MAILDROP \
DOMAIN_QUOTAS \
SPAMFOLDER \
SINGLE_DOMAIN \
AUTH_LOG \
SQL_LOG \
SQL_LOG_TRIM
OPTIONS_SINGLE= AUTH
OPTIONS_SINGLE_AUTH= CDB MYSQL PGSQL LDAP ORACLE SYBASE
OPTIONS_DEFAULT=MD5_PASSWORDS \
CDB \
ROAMING \
FILE_LOCKING \
USERS_BIG_DIR \
SEEKABLE \
AUTH_LOG
CDB_DESC= Auth via CDB
PASSWD_DESC= /etc/passwd account support
MYSQL_DESC= Auth via MySQL
PGSQL_DESC= Auth via PostgreSQL
SYBASE_DESC= Auth via Sybase
MD5_PASSWORDS_DESC= Store passwords in MD5 format
CLEAR_PASSWD_DESC= Store passwords in plaintext
LEARN_PASSWORDS_DESC= Learn passwords during POP auth
MYSQL_REPLICATION_DESC= MySQL database replication support
MYSQL_LIMITS_DESC= MySQL mailbox limitations support
ORACLE_DESC= Auth via Oracle
LDAP_DESC= Auth via LDAP
VALIAS_DESC= Store aliases in DB instead of .qmail files
ROAMING_DESC= roaming users support
IP_ALIAS_DESC= IP alias support
QMAIL_EXT_DESC= qmail-like user-* address support
FILE_LOCKING_DESC= file locking support
FILE_SYNC_DESC= fsync support (decreases performance)
USERS_BIG_DIR_DESC= Hashing user directories (BIGDIR)
SEEKABLE_DESC= Make input to vdelivermail seekable
SPAMASSASSIN_DESC= SpamAssassin support
SUID_VCHKPW_DESC= Set vchkpw setugid vpopmail:vchkpw
SMTP_AUTH_PATCH_DESC= Swap Challenge/Response for CRAM-MD5
ONCHANGE_SCRIPT_DESC= vpopmail/etc/onchange script support
MAILDROP_DESC= Maildrop MDA support
DOMAIN_QUOTAS_DESC= Domain quotas support
SPAMFOLDER_DESC= Move spam to Junk (requires SA)
SINGLE_DOMAIN_DESC= Optimize for a single domain setup
AUTH_LOG_DESC= Log auth attempts when using a DB
SQL_LOG_DESC= Log to selected SQL database
SQL_LOG_TRIM_DESC= Trim logs of deleted users/domains
# Compatibility with older KNOB, correctly will enable if set,
# but be unset if unselected in the 'config' dialog
.if defined(WITH_POSTGRESQL)
PORT_OPTIONS+= PGSQL
.endif
.if defined(WITH_MYSQL_LOG)
PORT_OPTIONS+= SQL_LOG
.endif
.if defined(WITH_PGSQL_LOG)
PORT_OPTIONS+= SQL_LOG
.endif
.if defined(WITH_SQL_LOG_REMOVE_DELETED)
PORT_OPTIONS+= SQL_LOG_TRIM
.endif
DOMAIN_QUOTAS_CONFIGURE_ON= --enable-domainquotas=y
DOMAIN_QUOTAS_CONFIGURE_OFF= --enable-domainquotas=n
PASSWD_CONFIGURE_ON= --enable-passwd
MD5_PASSWORDS_CONFIGURE_OFF= --disable-md5-passwords
VALIAS_CONFIGURE_ON= --enable-valias
CLEAR_PASSWD_CONFIGURE_OFF= --disable-clear-passwd
LEARN_PASSWORDS_CONFIGURE_ON= --enable-learn-passwords
LDAP_CONFIGURE_ON= --enable-auth-module=ldap
ORACLE_CONFIGURE_ON= --enable-auth-module=oracle
SYBASE_CONFIGURE_ON= --enable-auth-module=sybase
SINGLE_DOMAIN_CONFIGURE_ON= --disable-many-domains
IP_ALIAS_CONFIGURE_ON= --enable-ip-alias-domains
QMAIL_EXT_CONFIGURE_ON= --enable-qmail-ext
FILE_LOCKING_CONFIGURE_OFF= --disable-file-locking
FILE_SYNC_CONFIGURE_ON= --enable-file-sync
AUTH_LOG_CONFIGURE_OFF= --disable-auth-logging
USERS_BIG_DIR_CONFIGURE_OFF= --disable-users-big-dir
SEEKABLE_CONFIGURE_OFF= --disable-make-seekable
ROAMING_CONFIGURE_ON= --enable-roaming-users \
--enable-relay-clear-minutes=${RELAYCLEAR}
MYSQL_CONFIGURE_ON= --enable-auth-module=mysql \
--enable-incdir=${LOCALBASE}/include/mysql \
--enable-libdir=${LOCALBASE}/lib/mysql
MYSQL_REPLICATION_CONFIGURE_ON= --enable-mysql-replication
MYSQL_LIMITS_CONFIGURE_ON= --enable-mysql-limits
PGSQL_CONFIGURE_ON= --enable-auth-module=pgsql
SQL_LOG_CONFIGURE_ON= --enable-sql-logging
ONCHANGE_SCRIPT_CONFIGURE_ON= --enable-onchange-script
MAILDROP_CONFIGURE_ON= --enable-maildrop=y \
--enable-maildrop-prog=${LOCALBASE}/bin/maildrop
MAILDROP_CONFIGURE_OFF= --enable-maildrop=n
MAILDROP_RUN_DEPENDS= maildrop:${MAILDROP_PORT}
MAILDROP_BUILD_DEPENDS= maildrop:${MAILDROP_PORT}
SPAMASSASSIN_CONFIGURE_ON= --enable-spamassassin \
--enable-spamc-prog=${LOCALBASE}/bin/spamc \
--enable-spam-threshold=${SPAM_THRESHOLD}
SPAMASSASSIN_BUILD_DEPENDS= spamc:mail/spamassassin
SPAMASSASSIN_RUN_DEPENDS= spamc:mail/spamassassin
SPAMFOLDER_CONFIGURE_ON= --enable-spam-junkfolder
INSTALL_TARGET= install-strip
.include <bsd.port.options.mk>
.if ${PORT_OPTIONS:MSUID_VCHKPW}
VCHKPW_MODE="6711"
.endif
PLIST_SUB+= VCHKPW_MODE="${VCHKPW_MODE}"
# PostgreSQL database configuration options
#
# WITH_PGSQL_USER - the username for connecting to the PostgreSQL server (postgres)
# WITH_PGSQL_DB - the name of the PostgreSQL database to use (vpopmail)
#
# Oracle database configuration options
#
# WARNING: This is NOT TESTED, not in the least.
# Please report any success or failure to the port maintainer
#
# WITH_ORACLE_PROC - the name of the Oracle Pro-C precompiler, default 'proc'
# WITH_ORACLE_SERVICE - the Oracle service name (jimmy)
# WITH_ORACLE_USER - the username for connecting to the Oracle server (system)
# WITH_ORACLE_PASSWD - the password for connecting to the Oracle server (manager)
# WITH_ORACLE_DB - the name of the Oracle database to connect to (orcl1)
# WITH_ORACLE_HOME - the Oracle installation directory (/export/home/oracle)
#
# Sybase database configuration options
#
# WARNING: This is NOT TESTED, not in the least.
# Please report any success or failure to the port maintainer
#
# WITH_SYBASE_SERVER - the Sybase server name (empty)
# WITH_SYBASE_USER - the username for connecting to the Sybase server (sa)
# WITH_SYBASE_PASSWD - the password for connecting to the Sybase server (empty)
# WITH_SYBASE_APP - the app for connecting to the Sybase server (vpopmail)
# WITH_SYBASE_DB - the name of the Sybase database to connect to (vpopmail)
#
# Courier IMAP configuration options for authvchkpw
#
# WARNING: This is NOT TESTED, not in the least.
# Please report any success or failure to the port maintainer
#
# WITH_COURIER_IMAPLOGIN - the path to the imaplogin program
# WITH_COURIER_IMAPD - the path to the imapd program
# User-configurable variables
#
# ONCHANGE_SCRIPT - see README.onchange
# MAILDROP - see README.maildrop
#
# Define these to change from the default behaviour
#
# MAILDROP_PORT - the port that provides the bin/maildrop program
#
# Set these to the values you'd prefer
#
# RELAYCLEAR - time in minutes before clearing relay hole (requires roaming)
# SPAM_THRESHOLD - minimum score required to delete spam messages (requires spamassassin)
# LOGLEVEL - n - no logging, y - log all,
# e - log errors, p - log passwords in errors,
# v - verbose success and errors with passwords
# QMAIL_PREFIX - location of qmail directory
# VPOPMAIL_DIR - installation area for vpopmail (see comment below)
#
#
RELAYCLEAR?= 30
SPAM_THRESHOLD?=15
LOGLEVEL?= y
MAILDROP_PORT?= mail/maildrop
WITH_COURIER_IMAPLOGIN?= ${LOCALBASE}/sbin/imaplogin
WITH_VPOPMAIL_AUTHVCHKPW?= ${VPOPMAIL_DIR}/bin/authvchkpw
WITH_COURIER_IMAPD?= ${LOCALBASE}/bin/imapd
WITH_ORACLE_PROC?= proc
VPOPMAIL_DIR?= ${PREFIX}/vpopmail
# Uncomment this, or set PREFIX to /home if you have an existing
# vpopmail install with the vpopmail users' home directory set to
# /home/vpopmail - package rules dictate we default to LOCALBASE/vpopmail
#
#PREFIX?= /home
# End of user-configurable variables
.if ${PORT_OPTIONS:MLDAP}
USE_OPENLDAP= yes
LDAP_FILES= ${WRKSRC}/doc/README.ldap \
${WRKSRC}/ldap/nsswitch.conf \
${WRKSRC}/ldap/pam_ldap.conf \
${WRKSRC}/ldap/pam_ldap.secret \
${WRKSRC}/ldap/qmailUser.schema \
${WRKSRC}/ldap/slapd.conf \
${WRKSRC}/ldap/vpopmail.ldif
.endif
.if ${PORT_OPTIONS:MMYSQL}
USES+= mysql
.if defined(WITH_MYSQL_USER) || defined(WITH_MYSQL_READ_USER) || defined(WITH_MYSQL_UPDATE_USER)
BROKEN_MYSQL_PARAMS= true
.endif
.if defined(WITH_MYSQL_SERVER) || defined(WITH_MYSQL_READ_SERVER) || defined(WITH_MYSQL_UPDATE_SERVER)
BROKEN_MYSQL_PARAMS= true
.endif
.if defined(WITH_MYSQL_PASSWD) || defined(WITH_MYSQL_READ_PASSWD) || defined(WITH_MYSQL_UPDATE_PASSWD)
BROKEN_MYSQL_PARAMS= true
.endif
.if defined(WITH_MYSQL_DB)
BROKEN_MYSQL_PARAMS= true
.endif
.if defined(BROKEN_MYSQL_PARAMS)
BROKEN= The MySQL connection parameters are no longer setup at compile time - please edit the ${VPOPMAIL_DIR}/etc/vpopmail.mysql file instead
.endif
.endif
.if defined(DEFAULT_DOMAIN)
BROKEN= The default vpopmail domain is no longer setup at compile time - please edit the ${VPOPMAIL_DIR}/etc/defaultdomain file instead
.endif
.if defined(WITH_APOP)
BROKEN= The WITH_APOP option is deprecated; set WITH_CLEAR_PASSWD instead, APOP will just work
.endif
.if ${PORT_OPTIONS:MPGSQL}
USES+= pgsql
.endif
.if ${PORT_OPTIONS:MSQL_LOG_TRIM}
EXTRA_PATCHES+= ${FILESDIR}/sql-remove-deleted.patch
.endif
.if ${PORT_OPTIONS:MSMTP_AUTH_PATCH}
EXTRA_PATCHES+= ${FILESDIR}/vchkpw-smtp-auth.patch
.endif
.if ${PORT_OPTIONS:MMAILDROP}
MAILDROP_FILES= ${WRKSRC}/maildrop/maildroprc.v1 \
${WRKSRC}/maildrop/maildroprc.v2
.endif
.if empty(PORT_OPTIONS:MDOCS)
EXTRA_PATCHES+= ${FILESDIR}/Makefile.in-noportdocs.patch
.endif
#
# Some suggestions from Gabriel Ambuehl <gabriel_ambuehl@buz.ch>
#
#
DOCS= README README.activedirectory README.filelocking \
README.ipaliasdomains README.ldap README.maildrop \
README.mysql \
README.onchange README.oracle README.pgsql \
README.qmail-default README.quotas \
README.roamingusers README.spamassassin README.sybase \
README.vdelivermail README.vlimits \
README.vpopmaild README.vpopmaild README.vqmaillocal \
UPGRADE
#
# This port doesn't honour PREFIX, it honours vpopmail's home directory.
# Since we create vpopmail if it doesn't exist, we set it so that it
# does honour PREFIX. -- nbm
#
pre-configure:
${AWK} -F: '/^${USERS}:/ { print $$3 }' ${UID_FILES} > ${WRKSRC}/vpopmail.uid
${AWK} -F: '/^${USERS}:/ { sub(/\/usr\/local/, "${PREFIX}", $$9); print $$9 }' ${UID_FILES} > ${WRKSRC}/vpopmail.dir
${AWK} -F: '/^${GROUPS}:/ { print $$3 }' ${GID_FILES} > ${WRKSRC}/vpopmail.gid
.if ${PORT_OPTIONS:MPGSQL}
.if defined(WITH_PGSQL_DB)
${REINPLACE_CMD} -E -e "s/(#define DB.*)vpopmail(.*)/\1${WITH_PGSQL_DB}\2/" ${WRKSRC}/vpgsql.h
.endif
.if defined(WITH_PGSQL_USER)
${REINPLACE_CMD} -E -e "s/(#define PG_CONNECT.*)postgres(.*)/\1${WITH_PGSQL_USER}\2/" ${WRKSRC}/vpgsql.h
.endif
.endif
.if ${PORT_OPTIONS:MORACLE}
.if defined(WITH_ORACLE_SERVICE)
${REINPLACE_CMD} -E -e "s/(#define ORACLE_SERVICE.*)jimmy(.*)/\1${WITH_ORACLE_SERVICE}\2/" ${WRKSRC}/voracle.h
.endif
.if defined(WITH_ORACLE_USER)
${REINPLACE_CMD} -E -e "s/(#define ORACLE_USER.*)system(.*)/\1${WITH_ORACLE_USER}\2/" ${WRKSRC}/voracle.h
.endif
.if defined(WITH_ORACLE_PASSWD)
${REINPLACE_CMD} -E -e "s/(#define ORACLE_PASSWD.*)manager(.*)/\1${WITH_ORACLE_PASSWD}\2/" ${WRKSRC}/voracle.h
.endif
.if defined(WITH_ORACLE_HOME)
${REINPLACE_CMD} -E -e "s@(#define ORACLE_HOME.*)/export/home/oracle(.*)@\1${WITH_ORACLE_HOME}\2@" ${WRKSRC}/voracle.h
.endif
.if defined(WITH_ORACLE_DB)
${REINPLACE_CMD} -E -e "s/(#define ORACLE_DATABASE.*)orcl1(.*)/\1${WITH_ORACLE_DB}\2/" ${WRKSRC}/voracle.h
.endif
cd ${WRKSRC} && ${WITH_ORACLE_PROC} voracle.pc
.endif
.if ${PORT_OPTIONS:MSYBASE}
.if defined(WITH_SYBASE_SERVER)
${REINPLACE_CMD} -E -e "s/(#define SYBASE_SERVER.*)\"\"(.*)/\1\"${WITH_SYBASE_SERVER}\"\2/" ${WRKSRC}/vsybase.h
.endif
.if defined(WITH_SYBASE_USER)
${REINPLACE_CMD} -E -e "s/(#define SYBASE_USER.*)sa(.*)/\1${WITH_SYBASE_USER}\2/" ${WRKSRC}/vsybase.h
.endif
.if defined(WITH_SYBASE_PASSWD)
${REINPLACE_CMD} -E -e "s/(#define SYBASE_PASSWD.*)\"\"(.*)/\1\"${WITH_SYBASE_PASSWD}\"\2/" ${WRKSRC}/vsybase.h
.endif
.if defined(WITH_SYBASE_APP)
${REINPLACE_CMD} -E -e "s@(#define SYBASE_APP.*)vpopmail(.*)@\1${WITH_SYBASE_APP}\2@" ${WRKSRC}/vsybase.h
.endif
.if defined(WITH_SYBASE_DB)
${REINPLACE_CMD} -E -e "s/(#define SYBASE_DATABASE.*)vpopmail(.*)/\1${WITH_SYBASE_DB}\2/" ${WRKSRC}/vsybase.h
.endif
.endif
${REINPLACE_CMD} -E -e "s@(#define PATH_IMAPLOGIN.*)VPOPMAILDIR.*@\1\"${WITH_COURIER_IMAPLOGIN}\"@" ${WRKSRC}/authvchkpw.c
${REINPLACE_CMD} -E -e "s@(#define PATH_AUTHVCHKPW.*)VPOPMAILDIR.*@\1\"${WITH_VPOPMAIL_AUTHVCHKPW}\"@" ${WRKSRC}/authvchkpw.c
${REINPLACE_CMD} -E -e "s@(#define PATH_IMAPD.*)VPOPMAILDIR.*@\1\"${WITH_COURIER_IMAPD}\"@" ${WRKSRC}/authvchkpw.c
${MKDIR} ${VCFGDIR}
post-install:
${MKDIR} ${STAGEDIR}${VPOPMAIL_DIR}/etc
if [ -e "${VCFGDIR}/tcp.smtp" ]; then \
${INSTALL_DATA} ${VCFGDIR}/tcp.smtp ${STAGEDIR}${VPOPMAIL_DIR}/etc/tcp.smtp-dist; \
else \
${TOUCH} ${STAGEDIR}${VPOPMAIL_DIR}/etc/tcp.smtp-dist; \
fi;
.if ${PORT_OPTIONS:MLDAP}
@${ECHO_CMD} "# LDAP CONNECTION SETTINGS FOR VPOPMAIL" > ${STAGEDIR}${VPOPMAIL_DIR}/etc/vpopmail.ldap-dist
@${ECHO_CMD} "# Line format:" >> ${STAGEDIR}${VPOPMAIL_DIR}/etc/vpopmail.ldap-dist
@${ECHO_CMD} "# host|port|user|password|basedn" >> ${STAGEDIR}${VPOPMAIL_DIR}/etc/vpopmail.ldap-dist
@${ECHO_CMD} "localhost|389|cn=vpopmailuser, o=vpopmail|vpoppasswd|o=vpopmail" >> ${STAGEDIR}${VPOPMAIL_DIR}/etc/vpopmail.ldap-dist
.endif
.if ${PORT_OPTIONS:MLDAP}
${MKDIR} ${STAGEDIR}${VPOPMAIL_DIR}/ldap
${INSTALL_DATA} ${LDAP_FILES} ${STAGEDIR}${VPOPMAIL_DIR}/ldap
.endif
.if ${PORT_OPTIONS:MMAILDROP}
${MKDIR} ${STAGEDIR}${VPOPMAIL_DIR}/maildrop
${INSTALL_DATA} ${MAILDROP_FILES} ${STAGEDIR}${VPOPMAIL_DIR}/maildrop
.endif
.if ${PORT_OPTIONS:MDOCS}
${INSTALL_DATA} ${DOCS:S,^,${WRKSRC}/doc/,} ${STAGEDIR}${VPOPMAIL_DIR}/doc/
.endif
.include <bsd.port.mk>