ports/74158: Upgraded Port: mail/dcc-dccd
Dean Hollister
dean at odyssey.apana.org.au
Sat Nov 20 12:50:20 UTC 2004
>Number: 74158
>Category: ports
>Synopsis: Upgraded Port: mail/dcc-dccd
>Confidential: no
>Severity: critical
>Priority: high
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: maintainer-update
>Submitter-Id: current-users
>Arrival-Date: Sat Nov 20 12:50:19 GMT 2004
>Closed-Date:
>Last-Modified:
>Originator: Dean Hollister
>Release: FreeBSD 4.10-STABLE i386
>Organization:
Australian Public Access Network Association Inc
>Environment:
System: FreeBSD odyssey.apana.org.au 4.10-STABLE FreeBSD 4.10-STABLE #0: Fri May 28 06:53:52 WST 2004 root at odyssey.apana.org.au:/usr/obj/usr/src/sys/ODYSSEY i386
>Description:
Upgraded Port: mail/dcc-dccd to 1.2.58
Fixes addressed by this upgrade:
o Work around new bug in FreeBSD 4.10 mechanism to disconnect UDP
sockets reported by Daniel V Klein. The symptom of the bug is
that DCC servers appear down to clients running on FreeBSD 4.10
o Fix /var/dcc/ids delay= extension.
o Add `./configure --with-max-db-mem=X` to limit the size of the
database window.
o Extend /var/dcc/ids format to allow authenticated clients to be delayed
as `dccd -U` delays anonymous clients.
o Add `./configure --with-kludge=FILE`.
o Fix problem with flooding among greylist servers using `dccd -Gweak-IP`
o Restore `dccsight -G grey-cksum` because the proof-of-concept CGI
scripts use it.
o Work around bug in OpenBSD HTONL() and NTOHL() reported by Jeff Drinkert.
o Change wlist to rebuild the .dccw hash table unless given -Q.
o Fix cause of "packet length 44 too small" complaints by DCC servers.
With an empty mail body and no useful headers, DCC clients were
sending empty requests to DCC servers.
o Add `cdcc "debug TTL=x"` to help find firewalls that filter DCC requests.
o Use shared libmilter.so in dccm.
o Fix Body checksum when MIME boundary crosses buffer boundary.
o Deprecate misc/dccdnsbl.m4 and change misc/hackmc to work with
FEATURE(dnsbl) and FEATURE(endnsbl) in modern sendmail.
o Make it compile on Mac OS X and DragonFly FreeBSD.
o Reduce the size of greylisting databases.
o Separate DCC query mode for dccm and dccifd from greylist query mode.
o Add `dccd -G weak-IP` to whitelist not only a {sender,target,IP address}
after passing the greylist embargo, but anything from the IP address.
Use this facility with caution; it might be a bad idea.
o Fix `dccifd lhost,lport,rhost/bits` on systems that have IPv6.
o Change homedir/make-dcc_conf to track changes in
`./configure --with-rundir=x --libexecdir=y`
This change will not be effective until upgrading from
1.2.50 to later versions.
o Deal with tiny FD_SETSIZE.
o Fix dccifd, dccm, and dccproc core-dump caused by missing whiteclnt file
o Fix infinite loop in computing DCC clients computing checksums of
large, deeply nested MIME messages.
This upgrade also includes suggestions and patches provided by Oleg Sharoiko:
1. Correct detection of sendmail from ports
2. Ability to specify wether to user base sendmail or ports sendmail (work
with base sendmail needs to be tested - I only have boxes with sendmail from
ports here)
3. Config file is not deleted with pkg_delete and not overwritten with make
install. Instead dcc_conf.dist is always installed and dcc_conf is installed
only when it doesn't exist.
4. Ability to specify user for setuid programs. I think this should be changed
from root to some special user, but maybe this needs some deeper testing. My
patch defaults to dcc:dcc, but please change this if you think I'm wrong. The
user is created with pw if it doesn't exist.
5. Separate options to enable/disable building of dccm and dccifd
>How-To-Repeat:
>Fix:
diff -ruN dcc-dccd.orig/Makefile dcc-dccd/Makefile
--- dcc-dccd.orig/Makefile Sat Nov 20 19:57:14 2004
+++ dcc-dccd/Makefile Sat Nov 20 20:19:09 2004
@@ -6,7 +6,7 @@
#
PORTNAME= dcc-dccd
-PORTVERSION= 1.2.48
+PORTVERSION= 1.2.58
CATEGORIES= mail
MASTER_SITES= http://www.rhyolite.com/anti-spam/dcc/source/old/ \
http://www.wa.apana.org.au/~dean/sources/ \
@@ -18,19 +18,83 @@
USE_REINPLACE= yes
HAS_CONFIGURE= yes
-CONFIGURE_ARGS= --homedir=${PREFIX}/dcc
MANCOMPRESSED= yes
MAN8= cdcc.8 dbclean.8 dblist.8 dcc.8 dccd.8 dccifd.8 dccm.8 \
dccproc.8 dccsight.8
-.if exists(/usr/lib/libmilter.a) || exists(${LOCALBASE}/lib/libmilter.a)
+PKGINSTALL= ${WRKDIR}/pkg-install
+PKGDEINSTALL= ${WRKDIR}/pkg-deinstall
+
+#
+# User for dcc files and SUID binaries
+#
+DCCUSER?= dcc
+DCCGROUP?= dcc
+
+#
+# You can choose the sendmail to be used by specifying
+#
+# WITH_SENDMAIL_BASE=yes
+# or
+# WITH_SENDMAIL_PORT=yes
+#
+
+# if no preference was set, check for an up to date base version
+# but give an installed port preference over it.
+
+HOMEDIR= ${PREFIX}/dcc
+CONFIGURE_ARGS= --homedir=${HOMEDIR}
+
+.include <bsd.port.pre.mk>
+
+.if !defined(WITH_SENDMAIL_BASE) && \
+ !defined(WITH_SENDMAIL_PORT) && \
+ !exists(${LOCALBASE}/lib/libmilter.a)
+WITH_SENDMAIL_BASE=yes
+.endif
+
+.if defined(WITH_SENDMAIL_BASE)
+.if exists(/usr/lib/libmilter.a)
+MILTERBASE= /usr
+WITH_SENDMAIL=yes
+.else
+BROKEN= "Base system sendmail not found or too old, rebuild with WITH_SENDMAIL_PORT=yes"
+.endif
+.else
+BUILD_DEPENDS+= ${LOCALBASE}/lib/libmilter.a:${PORTSDIR}/mail/sendmail
+MILTERBASE?= ${LOCALBASE}
+WITH_SENDMAIL=yes
+.endif
+
+.if !defined(WITHOUT_SENDMAIL) && defined(WITH_SENDMAIL)
+MILTERINC= ${MILTERBASE}/include
+MILTERLIB= ${MILTERBASE}/lib
+
+CPPFLAGS+= -I${MILTERINC}
+LDFLAGS+= -L${MILTERLIB}
+
+CONFIGURE_ENV+= CPPFLAGS="${CPPFLAGS}" LDFLAGS="${LDFLAGS}"
+CONFIGURE_ARGS+= --with-sendmail=${MILTERBASE}
PLIST_SUB+= WITH_SENDMAIL=""
.else
-CONFIGURE_ARGS+= --disable-dccm --disable-dccifd
+CONFIGURE_ARGS+= --disable-dccm
PLIST_SUB+= WITH_SENDMAIL="@comment "
.endif
-.include <bsd.port.pre.mk>
+.if defined(WITHOUT_DCCIFD)
+CONFIGURE_ARGS+= --disable-dccifd
+PLIST_SUB+= WITH_DCCIFD="@comment "
+.else
+PLIST_SUB+= WITH_DCCIFD=""
+.endif
+
+CONFIGURE_ARGS+= --with-uid=${DCCUSER}
+PLIST_SUB+= DCCUSER=${DCCUSER} \
+ DCCGROUP=${DCCGROUP}
+
+SED_SCRIPT= -e 's|%%PREFIX%%|${PREFIX}|g' \
+ -e 's|%%DCCUSER%%|${DCCUSER}|g' \
+ -e 's|%%DCCGROUP%%|${DCCGROUP}|g'
post-patch:
${FIND} ${WRKSRC} -type f -exec \
@@ -38,6 +102,18 @@
${REINPLACE_CMD} -e 's,PTHREAD_LDFLAGS="$$PTHREAD_LDFLAGS -pthread,PTHREAD_LDFLAGS="$$PTHREAD_LDFLAGS,g' ${WRKSRC}/configure
${REINPLACE_CMD} -e 's,FreeBSD)\n\tPTHREAD_LDFLAGS,FreeBSD)\n\tDCC_CFLAGS="${PTHREAD_CFLAGS} $$DCC_CFLAGS"\n\tPTHREAD_LDFLAGS,g' ${WRKSRC}/configure
${REINPLACE_CMD} -e 's,PTHREAD_LIBS="$$PTHREAD_LIBS -lc_r,PTHREAD_LIBS=" ${PTHREAD_LIBS},g' ${WRKSRC}/configure
+
+post-build:
+ @${SED} ${SED_SCRIPT} ${PKGDIR}/pkg-install >${PKGINSTALL}
+ @${SED} ${SED_SCRIPT} ${PKGDIR}/pkg-deinstall >${PKGDEINSTALL}
+
+pre-install:
+ @${SETENV} PKG_PREFIX=${PREFIX} \
+ ${SH} ${PKGINSTALL} ${PREFIX} PRE-INSTALL
+
+post-install:
+ @[ -s ${HOMEDIR}/dcc_conf ] || \
+ ${CP} ${HOMEDIR}/dcc_conf.dist ${HOMEDIR}/dcc_conf
.include <bsd.port.post.mk>
diff -ruN dcc-dccd.orig/distinfo dcc-dccd/distinfo
--- dcc-dccd.orig/distinfo Sat Nov 20 19:57:31 2004
+++ dcc-dccd/distinfo Sat Nov 20 20:20:32 2004
@@ -1,4 +1,2 @@
-MD5 (dcc-dccd-1.2.48.tar.Z) = 5f15ceaddfca99bc131898ced6c1b9bc
-SIZE (dcc-dccd-1.2.48.tar.Z) = 1169098
-
-
+MD5 (dcc-dccd-1.2.58.tar.Z) = 29263b15bdfe1c619bad6e926121118f
+SIZE (dcc-dccd-1.2.48.tar.Z) = 1180194
diff -ruN dcc-dccd.orig/files/patch-configure dcc-dccd/files/patch-configure
--- dcc-dccd.orig/files/patch-configure Thu Jan 1 08:00:00 1970
+++ dcc-dccd/files/patch-configure Sat Nov 20 20:03:50 2004
@@ -0,0 +1,18 @@
+--- configure.orig Mon May 17 21:32:49 2004
++++ configure Tue May 25 18:19:48 2004
+@@ -2244,6 +2244,15 @@
+ SENDMAIL_EVAL="$SENDMAIL"
+ with_sendmail=yes
+ fi
++#
++if test -n "$SENDMAIL" -a "$SENDMAIL" != "no"; then
++ if test -f $SENDMAIL/include/libmilter/mfapi.h -a -f $SENDMAIL/lib/libmilter.a; then
++ SENDMAIL_OBJ=$SENDMAIL/lib
++ SENDMAIL_OBJ_EVAL=$SENDMAIL_OBJ
++ SENDMAIL_LIB=$SENDMAIL_OBJ/libmilter.a
++ fi
++fi
++#
+ if test -z "$SENDMAIL"; then
+ # prefer a parallel ../sendmail directory
+ DEPTH=.
diff -ruN dcc-dccd.orig/files/patch-homedir::Makefile.in dcc-dccd/files/patch-homedir::Makefile.in
--- dcc-dccd.orig/files/patch-homedir::Makefile.in Thu Jan 1 08:00:00 1970
+++ dcc-dccd/files/patch-homedir::Makefile.in Sat Nov 20 20:03:50 2004
@@ -0,0 +1,15 @@
+--- homedir/Makefile.in Tue May 25 20:37:04 2004
++++ homedir/Makefile.in Tue May 25 20:38:04 2004
+@@ -28,11 +28,7 @@
+ install:
+ for nm in $(INST_HOMEDIR) $(INST_HOMEDIR)/log; do \
+ $(HINSTALL) -m 755 -d $$nm; done
+- if test -s $(INST_HOMEDIR)/dcc_conf; then \
+- sh make-dcc_conf -h $(INST_HOMEDIR); \
+- else \
+- $(HINSTALL) -m 644 dcc_conf $(INST_HOMEDIR)/dcc_conf; \
+- fi
++ $(HINSTALL) -m 644 dcc_conf $(INST_HOMEDIR)/dcc_conf.dist
+ for nm in flod grey_flod whitelist grey_whitelist \
+ whiteclnt whitecommon; do \
+ if test ! -f $(INST_HOMEDIR)/$$nm; then \
diff -ruN dcc-dccd.orig/pkg-deinstall dcc-dccd/pkg-deinstall
--- dcc-dccd.orig/pkg-deinstall Thu Jan 1 08:00:00 1970
+++ dcc-dccd/pkg-deinstall Sat Nov 20 20:03:50 2004
@@ -0,0 +1,13 @@
+#!/bin/sh
+# $FreeBSD$
+
+if [ "$2" != "POST-DEINSTALL" ]; then
+ exit 0
+fi
+
+DCCUSER=%%DCCUSER%%
+
+if pw usershow "${DCCUSER}" 2>/dev/null 1>&2; then
+ echo "To delete ${DCCUSER} user permanently, use 'pw userdel \"${DCCUSER}\"'"
+fi
+exit 0
diff -ruN dcc-dccd.orig/pkg-install dcc-dccd/pkg-install
--- dcc-dccd.orig/pkg-install Thu Jan 1 08:00:00 1970
+++ dcc-dccd/pkg-install Sat Nov 20 20:03:50 2004
@@ -0,0 +1,34 @@
+#!/bin/sh
+# $FreeBSD$
+
+PREFIX=${PKG_PREFIX:-%%PREFIX%%}
+
+DCCUSER=%%DCCUSER%%
+DCCGROUP=%%DCCGROUP%%
+
+if [ "$2" = "PRE-INSTALL" ]; then
+
+ if ! pw groupshow "$DCCGROUP" 2>/dev/null 1>&2; then
+ if pw groupadd $DCCGROUP; then
+ echo "=> Added group \"$DCCGROUP\"."
+ else
+ echo "=> Adding group \"$DCCGROUP\" failed..."
+ exit 1
+ fi
+ fi
+
+ if ! pw usershow "$DCCUSER" 2>/dev/null 1>&2; then
+ if pw useradd $DCCUSER -g $DCCGROUP -h - \
+ -s "/sbin/nologin" -d "/nonexistent" \
+ -c "Distributed Checksum Clearinghouse"; \
+ then
+ echo "=> Added user \"$DCCUSER\"."
+ else
+ echo "=> Adding user \"$DCCUSER\" failed..."
+ exit 1
+ fi
+ fi
+
+fi
+
+exit 0
diff -ruN dcc-dccd.orig/pkg-plist dcc-dccd/pkg-plist
--- dcc-dccd.orig/pkg-plist Sat Nov 20 19:56:43 2004
+++ dcc-dccd/pkg-plist Sat Nov 20 20:24:46 2004
@@ -8,13 +8,14 @@
dcc/cgi-bin/list-log
dcc/cgi-bin/list-msg
dcc/cgi-bin/webuser-notify
-dcc/dcc_conf
+ at unexec if cmp -s %D/dcc/dcc_conf %D/dcc/dcc_conf.dist; then rm -f %D/dcc/dcc_conf; fi
+dcc/dcc_conf.dist
dcc/flod
dcc/grey_flod
dcc/grey_whitelist
dcc/ids
dcc/libexec/cron-dccd
-%%WITH_SENDMAIL%%dcc/libexec/dccifd
+%%WITH_DCCIFD%%dcc/libexec/dccifd
%%WITH_SENDMAIL%%dcc/libexec/dccm
dcc/libexec/dbclean
dcc/libexec/dblist
@@ -45,5 +46,3 @@
@dirrm dcc/libexec
@dirrm dcc/cgi-bin
@dirrm dcc
-
-
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list