# New ports collection makefile for: qmail # Date created: 25 May 1998 # Whom: Mario S F Ferreira et al. # # $FreeBSD$ # PORTNAME= qmail PORTVERSION?= ${QMAIL_VERSION} PORTREVISION?= 1 CATEGORIES= mail MASTER_SITES= http://cr.yp.to/software/ \ ftp://ftp.ntnu.no/pub/unix/mail/qmail/ \ ftp://ftp.jp.qmail.org/qmail/ \ ftp://ftp.rifkin.technion.ac.il/pub/qmail/ \ ftp://ftp.net.ohio-state.edu/pub/networking/mail/qmail/ \ ftp://mirror.pipex.net/pub/qmail/ \ ftp://ftp.mira.net.au/unix/mail/qmail/ DISTNAME= ${PORTNAME}-${QMAIL_VERSION} # qmail-* skeleton ports including this port may not want # its patches .if !defined(MAIN_QMAIL_PORT_DNS_PATCH_BARRIER) # Patch necessary to cope with non-RFC >512 dns entries # Since AOL has been using those, the problem has skyrocketed from minor to # groundzero. qmail being RFC compliant need to be "fixed" to work with those PATCH_SITES+= http://www.ckdhr.com/ckd/ PATCHFILES+= qmail-103.patch PATCH_DIST_STRIP+= -p1 .endif # MAIN_QMAIL_PORT_DNS_PATCH_BARRIER MASTER_SITE_QMAIL+= \ http://www.qmail.org/ \ http://qmail.powerenterprises.net/ \ http://qmail.area.com/ \ http://qmail.valueclick.com/qmail/ \ http://itcentrx.com/mirrors/qmail/ \ http://qmail.geto.net/ \ http://qmail.advansys.net/ \ http://qmail.nac.net/ \ http://qmail.presys.com/ \ http://qmail.sgi.net/qmail/ \ http://qmail.goof.com/ \ http://www.cgiscripts.net/mirrors/qmail/ \ http://qmail.maximumbsd.com/ \ http://www.glasswings.com.au/qmail/ \ http://www.sczg.com/qmail/ \ http://infobase.ibase.com.hk/qmail/ \ http://www9.jp.qmail.org/ \ http://qmail.manic.co.kr/ \ http://qmail.sga.net.th/ \ http://gd.tuwien.ac.at/infosys/mail/qmail/www.qmail.org/ \ http://qmail.lightwerk.com/ \ http://qmail.imd.it/ \ http://qmail.sst.com.br/ \ http://madhaus.utcs.utoronto.ca/qmail/ \ http://qmail.ElectroCity.com/ .if !defined(MAIN_QMAIL_PORT_DNS_PATCH_BARRIER) \ ||(defined(WITH_QMAILQUEUE_PATCH)&&!defined(MAIN_QMAIL_PORT_WITH_QMAILQUEUE_PATCH_BARRIER)) \ ||(defined(WITH_BIG_TODO_PATCH)&&!defined(MAIN_QMAIL_PORT_WITH_BIG_TODO_PATCH_BARRIER)) \ ||(defined(WITH_BIG_CONCURRENCY_PATCH)&&!defined(MAIN_QMAIL_PORT_WITH_BIG_CONCURRENCY_PATCH_BARRIER)) PATCH_SITES+= ${MASTER_SITE_QMAIL} \ ${MASTER_SITE_LOCAL} PATCH_SITE_SUBDIR+= lioux .endif # qmail-* skeleton ports including this port may not want # its patches # MAIN_QMAIL_PORT_WITH_QMAILQUEUE_PATCH_BARRIER # MAIN_QMAIL_PORT_WITH_BIG_TODO_PATCH_BARRIER # MAIN_QMAIL_PORT_WITH_BIG_CONCURRENCY_PATCH_BARRIER # .if defined(WITH_QMAILQUEUE_PATCH)&&!defined(MAIN_QMAIL_PORT_WITH_QMAILQUEUE_PATCH_BARRIER) PATCHFILES+= qmailqueue-patch .endif # WITH_QMAILQUEUE_PATCH && !MAIN_QMAIL_PORT_WITH_QMAILQUEUE_PATCH_BARRIER .if defined(WITH_BIG_TODO_PATCH)&&!defined(MAIN_QMAIL_PORT_WITH_BIG_TODO_PATCH_BARRIER) PATCHFILES+= big-todo.103.patch .endif # WITH_BIG_TODO_PATCH && !MAIN_QMAIL_PORT_WITH_BIG_TODO_PATCH_BARRIER .if defined(WITH_BIG_CONCURRENCY_PATCH)&&!defined(MAIN_QMAIL_PORT_WITH_BIG_CONCURRENCY_PATCH_BARRIER) PATCHFILES+= big-concurrency.patch .endif # WITH_BIG_CONCURRENCY_PATCH && !MAIN_QMAIL_PORT_WITH_BIG_CONCURRENCY_PATCH_BARRIER MAINTAINER= lioux@FreeBSD.org NO_PACKAGE= djb\'s packaging license does not allow non-standard\ qmail binary distributions # A normal qmail installation puts everything into /var/qmail/. # If you want to install to /usr/local/, then "/usr/local/qmail" is # suggested instead of "/usr/local", but both will work. PREFIX?= /var/qmail QMAIL_VERSION?= 1.03 # Some default values, these can be modified by make command line .if defined(WITH_BIG_CONCURRENCY_PATCH)&&!defined(MAIN_QMAIL_PORT_WITH_BIG_CONCURRENCY_PATCH_BARRIER) WITH_BIG_CONCURRENCY_PATCH_CONCURRENCY_LIMIT?= 509 .endif # WITH_BIG_CONCURRENCY_PATCH && !MAIN_QMAIL_PORT_WITH_BIG_CONCURRENCY_PATCH_BARRIER # Some configuration files we use for installing the port MAILER_CONF_FILE?= /etc/mail/mailer.conf MAKE_CONF_FILE?= /etc/make.conf RC_CONF_FILE?= /etc/rc.conf # Some programs we use when building/installing the port FMT?= /usr/bin/fmt HEAD?= /usr/bin/head MAILQ?= /usr/bin/mailq NEWALIASES?= /usr/bin/newaliases SENDMAIL?= /usr/sbin/sendmail ALL_TARGET= default dot-qmail.5 qmail-control.5 qmail-getpw.8 \ qmail-limits.7 qmail-newmrh.8 qmail-newu.8 qmail-pw2u.8 \ qmail-send.8 qmail-start.8 qmail-users.5 MAN1= forward.1 condredirect.1 bouncesaying.1 except.1 maildirmake.1 \ maildir2mbox.1 maildirwatch.1 mailsubj.1 qreceipt.1 qbiff.1 preline.1 \ tcp-env.1 MAN5= addresses.5 envelopes.5 maildir.5 mbox.5 dot-qmail.5 qmail-control.5 \ qmail-header.5 qmail-log.5 qmail-users.5 tcp-environ.5 MAN7= forgeries.7 qmail-limits.7 qmail.7 MAN8= qmail-local.8 qmail-lspawn.8 qmail-getpw.8 qmail-remote.8 \ qmail-rspawn.8 qmail-clean.8 qmail-send.8 qmail-start.8 splogger.8 \ qmail-queue.8 qmail-inject.8 qmail-showctl.8 qmail-newmrh.8 \ qmail-newu.8 qmail-pw2u.8 qmail-qread.8 qmail-qstat.8 qmail-tcpok.8 \ qmail-tcpto.8 qmail-pop3d.8 qmail-popup.8 qmail-qmqpc.8 qmail-qmqpd.8 \ qmail-qmtpd.8 qmail-smtpd.8 qmail-command.8 PLIST_SUB= DOCDIR=${DOCDIR} DOCFILES+= ${WRKSRC}/BLURB ${WRKSRC}/BLURB2 ${WRKSRC}/BLURB3 \ ${WRKSRC}/BLURB4 ${WRKSRC}/INTERNALS ${WRKSRC}/SECURITY \ ${WRKSRC}/THOUGHTS ${FILESDIR}/PORT_NOTES \ ${FILESDIR}/PORT_NOTES_FreeBSD_40-RELEASE \ ${WRKDIR}/mailer.conf.sample # The following docfiles are normally installed with qmail-hier DOCFILES+= ${WRKSRC}/FAQ ${WRKSRC}/UPGRADE ${WRKSRC}/SENDMAIL \ ${WRKSRC}/INSTALL ${WRKSRC}/INSTALL.alias \ ${WRKSRC}/INSTALL.ctl ${WRKSRC}/INSTALL.ids \ ${WRKSRC}/INSTALL.maildir ${WRKSRC}/INSTALL.mbox \ ${WRKSRC}/INSTALL.vsm ${WRKSRC}/TEST.deliver \ ${WRKSRC}/TEST.receive ${WRKSRC}/REMOVE.sendmail \ ${WRKSRC}/REMOVE.binmail ${WRKSRC}/PIC.local2alias \ ${WRKSRC}/PIC.local2ext ${WRKSRC}/PIC.local2local \ ${WRKSRC}/PIC.local2rem ${WRKSRC}/PIC.local2virt \ ${WRKSRC}/PIC.nullclient ${WRKSRC}/PIC.relaybad \ ${WRKSRC}/PIC.relaygood ${WRKSRC}/PIC.rem2local # More files normally installed with from hier.c BOOTFILES= ${WRKSRC}/home ${WRKSRC}/home+df ${WRKSRC}/proc \ ${WRKSRC}/proc+df ${WRKSRC}/binm1 ${WRKSRC}/binm1+df \ ${WRKSRC}/binm2 ${WRKSRC}/binm2+df ${WRKSRC}/binm3 \ ${WRKSRC}/binm3+df # Supplied by Stuart Henderson BOOTFILES+= ${FILESDIR}/maildir CONFIGUREPROGS= ${WRKSRC}/install ${WRKSRC}/dnsfq ${WRKSRC}/hostname \ ${WRKSRC}/dnsip ${WRKSRC}/ipmeprint ${WRKSRC}/dnsptr CONFIGUREFILES= ${WRKSRC}/config ${WRKSRC}/config-fast .if (${PREFIX} == ${LOCALBASE}) DOCDIR= share/doc/qmail .else DOCDIR= doc .endif NO_MTREE= yes .if !defined(_PREMKINCLUDED) .include .endif pre-fetch: pre-pre-fetch slaveport-pre-fetch post-pre-fetch pre-pre-fetch: .if !defined(MAIN_QMAIL_PORT_BUILD_WITH_OPTIONS_ADVERTISE_BARRIER) @${ECHO_MSG} "" @${ECHO_MSG} "You may use the following build options:" @${ECHO_MSG} "" .if !defined(MAIN_QMAIL_PORT_WITH_QMAILQUEUE_PATCH_BARRIER) @${ECHO_MSG} "WITH_QMAILQUEUE_PATCH=yes enable patch to qmail to run a QMAILQUEUE" @${ECHO_MSG} " program instead of bin/qmail-queue" .endif # MAIN_QMAIL_PORT_WITH_QMAILQUEUE_PATCH_BARRIER .if !defined(MAIN_QMAIL_PORT_WITH_BIG_TODO_PATCH_BARRIER) @${ECHO_MSG} "WITH_BIG_TODO_PATCH=yes enable big_todo qmail patch" .endif # MAIN_QMAIL_PORT_WITH_BIG_TODO_PATCH_BARRIER .if !defined(MAIN_QMAIL_PORT_WITH_BIG_CONCURRENCY_PATCH_BARRIER) @${ECHO_MSG} "WITH_BIG_CONCURRENCY_PATCH=yes enable patch to qmail to" @${ECHO_MSG} " use a concurrency greater than 240" @${ECHO_MSG} "WITH_BIG_CONCURRENCY_PATCH_CONCURRENCY_LIMIT=NUMBER" @${ECHO_MSG} " (default NUMBER=${WITH_BIG_CONCURRENCY_PATCH_CONCURRENCY_LIMIT})" @${ECHO_MSG} " set this to a value reasonable for" @${ECHO_MSG} " your system if you use the patch" .endif # MAIN_QMAIL_PORT_WITH_BIG_CONCURRENCY_PATCH_BARRIER @${ECHO_MSG} "#" .endif # MAIN_QMAIL_PORT_BUILD_WITH_OPTIONS_ADVERTISE_BARRIER # Yet anther ugly hack (used by qmail-* skeleton ports) # Permits them to define local targets without braking everything # The ugly target name hopefully will avoid name clashing .if !target(slaveport-pre-fetch) slaveport-pre-fetch: .endif post-pre-fetch: .if !defined(MAIN_QMAIL_PORT_BUILD_WITH_OPTIONS_ADVERTISE_BARRIER) @${ECHO_MSG} "" .endif post-patch: thereal-post-patch slaveport-post-patch post-post-patch # Yet anther ugly hack (used by qmail-* skeleton ports) # Permits them to define local targets without braking everything # The ugly target name hopefully will avoid name clashing .if !target(slaveport-post-patch) slaveport-post-patch: .endif post-post-patch: @${PERL} -pi -ne "s!/var/qmail!${PREFIX}!;s!/usr/local/!${LOCALBASE}/!" ${WRKSRC}/Makefile # If you want to change the qmail users, they must be changed in both # work/*/conf-users and pkg/INSTALL. do-configure: @# Create/Check the necessary groups/users @PKG_PREFIX=${PREFIX} ${PERL5} ${PKGINSTALL} @${ECHO_CMD} "${CC} ${CFLAGS}" > ${WRKSRC}/conf-cc @${ECHO_CMD} ${PREFIX} > ${WRKSRC}/conf-qmail .if defined(WITH_BIG_CONCURRENCY_PATCH) \ && !defined(MAIN_QMAIL_PORT_WITH_BIG_CONCURRENCY_PATCH_BARRIER) \ && defined(WITH_BIG_CONCURRENCY_PATCH_CONCURRENCY_LIMIT) @if [ ${WITH_BIG_CONCURRENCY_PATCH_CONCURRENCY_LIMIT} -gt 0 ]; \ then \ ${ECHO_CMD} "${WITH_BIG_CONCURRENCY_PATCH_CONCURRENCY_LIMIT}" \ > ${WRKSRC}/conf-spawn ; \ fi .endif # MAIN_QMAIL_PORT_WITH_BIG_CONCURRENCY_PATCH_BARRIER do-install: @# Check again, just in case (ideally should error if not found) @PKG_PREFIX=${PREFIX} ${PERL5} ${PKGINSTALL} @${MKDIR} ${PREFIX}/${DOCDIR} ${PREFIX}/configure @cd ${WRKSRC} ; ./install ${INSTALL_PROGRAM} ${CONFIGUREPROGS} ${PREFIX}/configure ${INSTALL_SCRIPT} ${CONFIGUREFILES} ${PREFIX}/configure .for i in ${BOOTFILES} ${INSTALL_SCRIPT} ${WRKDIR}/${i:T} ${PREFIX}/boot .endfor .for i in 1 5 7 8 @${MKDIR} ${PREFIX}/man/man$i .for j in ${MAN${i}} ${INSTALL_MAN} ${WRKSRC}/$j ${PREFIX}/man/man${i} .endfor .endfor .if !defined(NOPORTDOCS) ${INSTALL_DATA} ${DOCFILES} ${PREFIX}/${DOCDIR} .endif .if defined(PACKAGE_BUILDING) @${ECHO_CMD} "FreeBSD Binary package qmail installation" \ > ${PREFIX}/${DOCDIR}/SYSDEPS .else @cd ${WRKSRC} && ${CAT} `${CAT} SYSDEPS` \ > ${PREFIX}/${DOCDIR}/SYSDEPS .endif .for i in root postmaster mailer-daemon @${TOUCH} ${PREFIX}/alias/.qmail-${i} .endfor @# This is not part of qmail proper, hence the 2nd class citizenship ${INSTALL_SCRIPT} ${FILESDIR}/mkaliasdir ${PREFIX}/${DOCDIR} @cd ${PREFIX}/configure ; ./config @${MKDIR} ${LOCALBASE}/etc/rc.d @${LN} -sf ${PREFIX}/rc ${LOCALBASE}/etc/rc.d/qmail.sh @${ECHO} @${SED} s!/var/qmail!${PREFIX}!g ${PKGMESSAGE} | ${FMT} # hack to allow slave ports to include bsd.port.pre.mk and then this file .if defined(_PREMKINCLUDED) .include .else .include .endif # Ugh... ;-) thereal-post-patch: .for i in ${BOOTFILES} @if [ -f ${i}.sh ] ; \ then \ ${PERL} -p -ne 's!QMAIL/!${PREFIX}/!;s!^(exec)!case "\$$1" in\nstart)\n\t\1!;s!(qmail)$$!\1\&\n\texit 0\n\t;;\nstop)\n\texec killall qmail-send\n\t;;\n*)\n\t${ECHO_CMD} "Usage: `basename \$$0` {start|stop}" >&2\n\texit 64\n\t;;\nesac!' $i.sh > ${WRKDIR}/${i:T} ; \ elif [ -f ${i} ] ; \ then \ ${PERL} -p -ne 's!QMAIL/!${PREFIX}/!;s!^(exec)!case "\$$1" in\nstart)\n\t\1!;s!(qmail)$$!\1\&\n\texit 0\n\t;;\nstop)\n\texec killall qmail-send\n\t;;\n*)\n\t${ECHO_CMD} "Usage: `basename \$$0` {start|stop}" >&2\n\texit 64\n\t;;\nesac!' $i > ${WRKDIR}/${i:T} ; \ fi .endfor @${SED} s!/var/qmail/!${PREFIX}/!g ${FILESDIR}/mailer.conf.sample > \ ${WRKDIR}/mailer.conf.sample # Double Ugh... ;-) ${WRKDIR}/.thereal_disable_sendmail_done: @if [ ! -d ${WRKDIR} ]; \ then \ ${MKDIR} ${WRKDIR} ; \ fi # I would like some input on the targets below. Only constructive ones # please. :) # based on shells/pdksh /etc/shells update PLIST. thereal-disable-sendmail: ${WRKDIR}/.thereal_disable_sendmail_done ${RC_CONF_FILE} @if [ -f ${RC_CONF_FILE} ]; \ then \ ${CP} ${RC_CONF_FILE} ${RC_CONF_FILE}.bak && \ ${GREP} -v sendmail_enable ${RC_CONF_FILE}.bak > \ ${RC_CONF_FILE} && \ ${TOUCH} ${WRKDIR}/.thereal_disable_sendmail_done ; \ else \ ${ECHO_MSG} "===> ERROR: YOU DO NOT HAVE A VALID ${RC_CONF_FILE}" ; \ ${ECHO_MSG} "===> FIX this and try again" ; \ ${FALSE} ; \ fi disable-sendmail: thereal-disable-sendmail @${ECHO_MSG} "===> I hope you know what you are doing:" @${ECHO_MSG} "===> You just told your system to not" @${ECHO_MSG} "===> automaticaly start sendmail on your" @${ECHO_MSG} "===> next startup." @${ECHO_MSG} "===> (i.e., added sendmail_enable=\¨NO\¨ to rc.conf)" @if [ -f ${RC_CONF_FILE} ]; \ then \ ${ECHO_CMD} sendmail_enable=\"NO\" >> ${RC_CONF_FILE} ; \ fi enable-sendmail: thereal-disable-sendmail @${ECHO_MSG} "===> I hope you know what you are doing:" @${ECHO_MSG} "===> You just told your system to" @${ECHO_MSG} "===> automaticaly start sendmail on your" @${ECHO_MSG} "===> next startup." @${ECHO_MSG} "===> (i.e., removed sendmail_enable=\¨NO\¨ from rc.conf)" enable-qmail: install disable-sendmail @if [ -f ${MAILER_CONF_FILE} ]; \ then \ ${CP} ${MAILER_CONF_FILE} ${MAILER_CONF_FILE}.bak && \ ${CP} ${WRKDIR}/mailer.conf.sample ${MAILER_CONF_FILE} ; \ else \ ${ECHO_MSG} "===> ERROR: YOU DO NOT HAVE A VALID ${MAILER_CONF_FILE}" ; \ ${ECHO_MSG} "===> FIX this and try again" ; \ ${ECHO_MSG} "===> or, do \¨make force_enable_qmail\¨ if you are sure" ; \ ${ECHO_MSG} "===> you want this port replacing some binaries" ; \ ${ECHO_MSG} "===> IF THIS FEELS UNEASY, read ${PREFIX}/${DOCDIR}/REMOVE.sendmail and do it manually" ; \ ${ECHO_MSG} "" ; \ ${ECHO_MSG} "=======> VERY IMPORTANT <=======" ; \ ${ECHO_MSG} "===> One side issue is that if you do replace them," ; \ ${ECHO_MSG} "===> you really should consider ADDING \"NO_SENDMAIL=true\"" ; \ ${ECHO_MSG} "===> to your ${MAKE_CONF_FILE} if you do \"make world\"." ; \ ${ECHO_MSG} "===> Otherwise, \"make world\" will \"fix\" your sendmail" ; \ ${ECHO_MSG} "===> installation breaking your qmail one." ; \ ${ECHO_MSG} "===> Read the FreeBSD Handbook section on \"make world\"" ; \ ${ECHO_MSG} "===> if you do not know what I am talking about." ; \ ${ECHO_MSG} "===> Check http://www.FreeBSD.org/ for the most" ; \ ${ECHO_MSG} "===> updated copy of the Handbook." ; \ fi @${ECHO_MSG} "===> Do not forget to choose an appropriate qmail startup" @${ECHO_MSG} "===> script. Go through ${PREFIX}/boot, choose one" @${ECHO_MSG} "===> and copy the chosen script as ${PREFIX}/rc" @${ECHO_MSG} "===> For example, \¨cp ${PREFIX}/boot/proc+df ${PREFIX}/rc\¨" # taken from mail/postfix idea force-enable-qmail: install disable-sendmail @${ECHO_MSG} "===> Replacing sendmail" @if [ -e ${SENDMAIL} ]; then \ ${MV} -f ${SENDMAIL} ${SENDMAIL}.OFF && \ ${CHMOD} 0 ${SENDMAIL}.OFF; \ fi @if [ -e ${PREFIX}/bin/sendmail ]; then \ ${LN} -sf ${PREFIX}/bin/sendmail ${SENDMAIL}; \ fi @${ECHO_MSG} "===> Replacing mailq" @if [ -e ${MAILQ} ]; then \ ${MV} -f ${MAILQ} ${MAILQ}.OFF && \ ${CHMOD} 0 ${MAILQ}.OFF; \ fi @if [ -e ${PREFIX}/bin/qmail-qread ]; then \ ${LN} -sf ${PREFIX}/bin/qmail-qread ${MAILQ}; \ fi @${ECHO_MSG} "===> Replacing newaliases" @if [ -e ${NEWALIASES} ]; then \ ${MV} -f ${NEWALIASES} ${NEWALIASES}.OFF && \ ${CHMOD} 0 ${NEWALIASES}.OFF; \ fi @if [ -e ${PREFIX}/bin/newaliases ]; then \ ${LN} -sf ${PREFIX}/bin/newaliases ${NEWALIASES}; \ fi # The users are instructed (in PORT_NOTES) to install ${QUEUE_DIR}/rc # themselves. Each /var/qmail/ should have its own rc. On many machines, # /usr/local/ is nfs mounted and /var/qmail/ is local. An individual # machine may want/not-want qmail. Pity we can't add a dir to local_startup # from here. # Wouldn't hurt to provide an "enable_qmail" and "disable_sendmail" target # that do 1) and 2) above and disable the existing sendmail, respectively.