diff options
author | wxs <wxs@FreeBSD.org> | 2009-07-23 20:52:44 +0800 |
---|---|---|
committer | wxs <wxs@FreeBSD.org> | 2009-07-23 20:52:44 +0800 |
commit | 53edb5f386091aa486cd102966e2ddea7504efe3 (patch) | |
tree | 5e951bb68106ac6f1a2ed57c954037624185f9e2 /mail | |
parent | f692757512aedf0e0fc6b53d260f64600cd52eff (diff) | |
download | freebsd-ports-gnome-53edb5f386091aa486cd102966e2ddea7504efe3.tar.gz freebsd-ports-gnome-53edb5f386091aa486cd102966e2ddea7504efe3.tar.zst freebsd-ports-gnome-53edb5f386091aa486cd102966e2ddea7504efe3.zip |
- Update to 4.5.0
- Pass maintainer to submitter
- Add CPANEL support so it doesn't clobber spamd (see comments in Makefile)
- Fixes to RC script to support CPANEL option and general cleanup.
PR: ports/136912
Submitted by: olli hauer <ohauer@gmx.de>
Approved by: Alex Samorukov <samm@os2.kiev.ua> (old maintainer)
Diffstat (limited to 'mail')
-rw-r--r-- | mail/spamd/Makefile | 46 | ||||
-rw-r--r-- | mail/spamd/distinfo | 6 | ||||
-rw-r--r-- | mail/spamd/files/obspamd.in | 15 | ||||
-rw-r--r-- | mail/spamd/files/obspamlogd.in | 9 | ||||
-rw-r--r-- | mail/spamd/files/patch-makefile | 13 | ||||
-rw-r--r-- | mail/spamd/files/patch-spamd__grey.c | 68 | ||||
-rw-r--r-- | mail/spamd/files/patch-spamlogd | 15 | ||||
-rw-r--r-- | mail/spamd/files/pkg-deinstall.in | 4 | ||||
-rw-r--r-- | mail/spamd/files/pkg-install.in | 87 | ||||
-rw-r--r-- | mail/spamd/files/pkg-message.in | 31 |
10 files changed, 142 insertions, 152 deletions
diff --git a/mail/spamd/Makefile b/mail/spamd/Makefile index 3655d12b20dd..53c8dc096dae 100644 --- a/mail/spamd/Makefile +++ b/mail/spamd/Makefile @@ -6,20 +6,15 @@ # PORTNAME= spamd -PORTVERSION= 4.1.2 -PORTREVISION= 1 +PORTVERSION= 4.5.0 CATEGORIES= mail MASTER_SITES= BERLIOS MASTER_SITE_SUBDIR=freebsdspamd DISTNAME= ${PORTNAME}-${PORTVERSION} -MAINTAINER= samm@os2.kiev.ua +MAINTAINER= ohauer@gmx.de COMMENT= Traps spammers with a very slow smtp-login and return 4xx error -.include <bsd.port.pre.mk> - -LOCAL_PFCTL= /sbin/pfctl - USE_RC_SUBR?= obspamd obspamlogd SPAMDUSER?= _spamd @@ -31,11 +26,12 @@ SPAMDGID= ${SPAMDUID} MAN5= spamd.conf.5 MAN8= spamd.8 spamd-setup.8 spamdb.8 spamlogd.8 -PORTDOCS= ipfw-spamd.txt +PORTDOCS= ipfw-spamd.txt spamdb.txt PLIST_DIRS= etc/spamd -PLIST_FILES= libexec/spamd libexec/spamlogd \ - sbin/spamd-setup sbin/spamdb \ +PLIST_FILES= libexec/spamlogd \ + sbin/spamd-setup \ + sbin/spamdb \ etc/spamd/spamd.conf.sample CONFIG_DIR= ${PREFIX}/etc/spamd @@ -47,6 +43,19 @@ PLIST_SUB= SPAMDDIR=${SPAMDDIR} \ SPAMDUID=${SPAMDUID} \ SPAMDGID=${SPAMDGID} +# If you are a CPANEL user the this option is for you! +# CPANEL sends periodic a 'kill -TERM spamd' to the SpamAssassin spamd, and +# this kills also the OpenBSD spamd daemon. +# With this option spamd will be installed as obspamd, and the rc script will +# be adjusted. Man page and pid file will not be renamed! +.if !defined(CPANEL) +PLIST_FILES+= libexec/spamd +PLIST_SUB+= SPAMDBIN=spamd +.else +PLIST_FILES+= libexec/obspamd +PLIST_SUB+= SPAMDBIN=obspamd +.endif + SUB_FILES= pkg-install \ pkg-deinstall \ pkg-message @@ -54,6 +63,16 @@ SUB_FILES= pkg-install \ SUB_LIST= PREFIX=${PREFIX} \ ${PLIST_SUB} +pre-fetch: + @${ECHO} "" + @${ECHO} " **** UPGRADE WARNING: SYNC PROTOCOL CHANGED ****" + @${ECHO} " If you have spamd in distributed environment stop" + @${ECHO} " sync between old (4.1.x) and new version" + @${ECHO} " until every node is updated" + @${ECHO} "" + @read -p "Hit ^c now to stop, any key to continue: " -t 5 a || true + @${ECHO} "" + pre-install: @${SH} ${PKGINSTALL} ${DISTNAME} PRE-INSTALL @@ -61,7 +80,11 @@ post-install: @${CAT} ${PKGMESSAGE} do-install: +.if !defined(CPANEL) ${INSTALL_PROGRAM} ${WRKSRC}/spamd/spamd ${PREFIX}/libexec +.else + ${INSTALL_PROGRAM} ${WRKSRC}/spamd/spamd ${PREFIX}/libexec/obspamd +.endif ${INSTALL_PROGRAM} ${WRKSRC}/spamlogd/spamlogd ${PREFIX}/libexec ${INSTALL_PROGRAM} ${WRKSRC}/spamd-setup/spamd-setup ${PREFIX}/sbin ${INSTALL_PROGRAM} ${WRKSRC}/spamdb/spamdb ${PREFIX}/sbin @@ -82,6 +105,7 @@ do-install: .if !defined(NOPORTDOCS) @${MKDIR} ${DOCSDIR} @${INSTALL_DATA} ${WRKSRC}/doc/ipfw-spamd.txt ${DOCSDIR}/ + @${INSTALL_DATA} ${WRKSRC}/doc/spamdb.txt ${DOCSDIR}/ .endif -.include <bsd.port.post.mk> +.include <bsd.port.mk> diff --git a/mail/spamd/distinfo b/mail/spamd/distinfo index c07a67cbba24..0e232eac673b 100644 --- a/mail/spamd/distinfo +++ b/mail/spamd/distinfo @@ -1,3 +1,3 @@ -MD5 (spamd-4.1.2.tar.gz) = 0a207e997840359bde85ec4039e0d6a8 -SHA256 (spamd-4.1.2.tar.gz) = 49defbee42fe30c5f218351cc664e11328799b9893abe4528a17594d3ec97231 -SIZE (spamd-4.1.2.tar.gz) = 50199 +MD5 (spamd-4.5.0.tar.gz) = ef501b144a8eadefc6971e53aef08f42 +SHA256 (spamd-4.5.0.tar.gz) = 52a8ae130b838b1b83a1025c5586ab78c6c4e364cd3089892858b83d4d62820f +SIZE (spamd-4.5.0.tar.gz) = 52127 diff --git a/mail/spamd/files/obspamd.in b/mail/spamd/files/obspamd.in index 21ab92820d4d..df81cfb17c59 100644 --- a/mail/spamd/files/obspamd.in +++ b/mail/spamd/files/obspamd.in @@ -25,16 +25,20 @@ obspamd_enable=${obspamd_enable:-"NO"} name="obspamd" rcvar=`set_rcvar` -command="%%PREFIX%%/libexec/spamd" +command="%%PREFIX%%/libexec/%%SPAMDBIN%%" start_precmd="obspamd_precmd" start_postcmd="obspamd_postcmd" restart_postcmd="obspamd_postcmd" +stop_postcmd="obspamd_cleanup" pidfile="/var/run/spamd.pid" obspamd_precmd() { _rc=0 - echo "${obspamd_flags}" | grep "\-b" 2>&1 > /dev/null + # we need the white-space in the grep expr. to limit a failure + # in parsing the flags, for example if someone + # defined the word 'IP-based' in the banner. + echo "${obspamd_flags}" | grep " \-b" 2>&1 > /dev/null if [ $? -eq 1 ]; then /sbin/mount -p | grep 'fdescfs.*/dev/fd.*fdescfs.*rw' 2>&1 > /dev/null _rc=${?} @@ -54,10 +58,15 @@ obspamd_postcmd() { if [ -x %%PREFIX%%/sbin/spamd-setup ]; then if [ -r %%PREFIX%%/etc/spamd/spamd.conf ]; then - %%PREFIX%%/sbin/spamd-setup & + %%PREFIX%%/sbin/spamd-setup -D fi fi } +obspamd_cleanup() +{ + /bin/rm -f ${pidfile} +} + load_rc_config $name run_rc_command "$1" diff --git a/mail/spamd/files/obspamlogd.in b/mail/spamd/files/obspamlogd.in index 89b4b2b8648c..c497e8b4b64a 100644 --- a/mail/spamd/files/obspamlogd.in +++ b/mail/spamd/files/obspamlogd.in @@ -26,7 +26,9 @@ name="obspamlogd" rcvar=`set_rcvar` command="%%PREFIX%%/libexec/spamlogd" -start_precmd="${name}_precmd" +start_precmd="obspamlogd_precmd" +stop_postcmd="obspamlogd_cleanup" +pidfile="/var/run/spamlogd.pid" obspamlogd_precmd() { @@ -44,5 +46,10 @@ obspamlogd_precmd() return ${_rc} } +obspamlogd_cleanup() +{ + /bin/rm -f ${pidfile} +} + load_rc_config $name run_rc_command "$1" diff --git a/mail/spamd/files/patch-makefile b/mail/spamd/files/patch-makefile deleted file mode 100644 index 18f76d9465c1..000000000000 --- a/mail/spamd/files/patch-makefile +++ /dev/null @@ -1,13 +0,0 @@ ---- spamlogd/Makefile.old Mon Apr 2 01:33:46 2007 -+++ spamlogd/Makefile Sat Jun 23 15:29:03 2007 -@@ -4,6 +4,10 @@ - SRCS= spamlogd.c sync.c - MAN= spamlogd.8 - -+.if ${OSVERSION} < 601000 -+SRCS+= ../spamd/strtonum.c -+.endif -+ - CFLAGS+= -Wall -Wstrict-prototypes -I${.CURDIR}/../spamd - LDADD+= -lpcap -lcrypto -lmd - DPADD+= ${LIBPCAP} ${LIBMD} diff --git a/mail/spamd/files/patch-spamd__grey.c b/mail/spamd/files/patch-spamd__grey.c deleted file mode 100644 index 95d3c2f65dc0..000000000000 --- a/mail/spamd/files/patch-spamd__grey.c +++ /dev/null @@ -1,68 +0,0 @@ ---- spamd/grey.c.orig 2009-02-26 13:27:35.159368721 -0500 -+++ spamd/grey.c 2009-02-26 13:31:07.469474893 -0500 -@@ -376,7 +376,7 @@ - static char buf[MAX_MAIL]; - char *cp; - -- if (*addr == '<'); -+ if (*addr == '<') - addr++; - (void) strlcpy(buf, addr, sizeof(buf)); - cp = strrchr(buf, '>'); -@@ -398,8 +398,11 @@ - size_t len; - struct mail_addr *m; - -- while (!SLIST_EMPTY(&match_suffix)) -+ while (!SLIST_EMPTY(&match_suffix)) { -+ m = SLIST_FIRST(&match_suffix); - SLIST_REMOVE_HEAD(&match_suffix, entry); -+ free(m); -+ } - if ((fp = fopen(alloweddomains_file, "r")) != NULL) { - while ((buf = fgetln(fp, &len))) { - #ifdef __FreeBSD__ -@@ -410,11 +413,11 @@ - buf++; - len--; - } -+ if (len == 0) -+ continue; - /* jump over comments and blank lines */ - if (*buf == '#' || *buf == '\n') - continue; -- if (len == 0) -- continue; - #endif - if (buf[len-1] == '\n') - len--; -@@ -434,8 +437,11 @@ - } - return; - bad: -- while (!SLIST_EMPTY(&match_suffix)) -+ while (!SLIST_EMPTY(&match_suffix)) { -+ m = SLIST_FIRST(&match_suffix); - SLIST_REMOVE_HEAD(&match_suffix, entry); -+ free(m); -+ } - } - - void -@@ -609,6 +615,7 @@ - dbc->act = 0; - dbc->dsiz = 0; - SLIST_REMOVE_HEAD(&db_changes, entry); -+ free(dbc); - - } - return(ret); -@@ -795,7 +802,7 @@ - - now = time(NULL); - /* expiry times have to be in the future */ -- expire = strtonum(expires, now, UINT_MAX, NULL); -+ expire = strtonum(expires, now, INT_MAX, NULL); - if (expire == 0) - return(-1); - diff --git a/mail/spamd/files/patch-spamlogd b/mail/spamd/files/patch-spamlogd deleted file mode 100644 index f2031613b553..000000000000 --- a/mail/spamd/files/patch-spamlogd +++ /dev/null @@ -1,15 +0,0 @@ ---- spamlogd/spamlogd.c.orig Sat Jun 23 15:28:14 2007 -+++ spamlogd/spamlogd.c Sat Jun 23 15:28:27 2007 -@@ -158,10 +158,12 @@ - - pcap_freecode(&bpfp); - -+#ifdef BIOCLOCK - if (ioctl(pcap_fileno(hpcap), BIOCLOCK) < 0) { - logmsg(LOG_ERR, "BIOCLOCK: %s", strerror(errno)); - return (-1); - } -+#endif - - return (0); - } diff --git a/mail/spamd/files/pkg-deinstall.in b/mail/spamd/files/pkg-deinstall.in index e3951f0366f6..0ca938e71fb8 100644 --- a/mail/spamd/files/pkg-deinstall.in +++ b/mail/spamd/files/pkg-deinstall.in @@ -16,6 +16,8 @@ if [ "$2" = "POST-DEINSTALL" ]; then fi if [ -e "${SPAMDDIR}" ]; then - echo "You should manually remove the \"${SPAMDDIR}\" directory." + if [ "${SPAMDDIR}" != "/var/empty" ]; then + echo "You should manually remove the \"${SPAMDDIR}\" directory." + fi fi fi diff --git a/mail/spamd/files/pkg-install.in b/mail/spamd/files/pkg-install.in index 337b1f86aa60..bd0984271db5 100644 --- a/mail/spamd/files/pkg-install.in +++ b/mail/spamd/files/pkg-install.in @@ -41,56 +41,95 @@ yesno() { done } +check_db() { + DB=/var/db/spamd + if [ -f ${DB} ]; then + OWN=`ls -l ${DB} | awk '{print $3}'` + GRP=`ls -l ${DB} | awk '{print $4}'` + if [ "x${OWN}" != "x${SPAMDUSER}" ]; then + echo "change ${DB} owner to ${SPAMDUSER}" + /usr/sbin/chown ${SPAMDUSER} ${DB} + fi + if [ "x${GRP}" != "x${SPAMDGROUP}" ]; then + echo "change ${DB} group to ${SPAMDGROUP}" + /usr/sbin/chown :${SPAMDGROUP} ${DB} + fi + fi +} + check_service() { local name number type comment - + name=$1 number=$2 type=$3 comment=$4 - + FILE="/etc/services" # check OK=no HAS_SERVICE=no COUNT=1 for i in `grep $name $FILE `; do - if [ $COUNT = 1 ] && [ X"$i" = X"$name" ]; then - HAS_SERVICE=yes - elif [ $COUNT = 2 ] && [ $HAS_SERVICE = yes ] && \ - [ X"$i" = X"$number/$type" ]; then - OK=yes - break - fi - COUNT=`expr ${COUNT} + 1` + if [ $COUNT = 1 ] && [ X"$i" = X"$name" ]; then + HAS_SERVICE=yes + elif [ $COUNT = 2 ] && [ $HAS_SERVICE = yes ] && \ + [ X"$i" = X"$number/$type" ]; then + OK=yes + break + fi + COUNT=`expr ${COUNT} + 1` done # add an entry for SERVICE to /etc/services if [ $OK = no ]; then - echo "This system has no entry for $name in ${FILE}" - if yesno "Would you like to add it automatically?" y; then - mv ${FILE} ${FILE}.bak - (grep -v $name ${FILE}.bak ; \ - echo "$name $number/$type # $comment") \ - >> ${FILE} - rm ${FILE}.bak - else - echo "Please add '$name $number/$type' into ${FILE}, and try again." - return 1 - fi + echo "This system has no entry for $name in ${FILE}" + if yesno "Would you like to add it automatically?" y; then + mv ${FILE} ${FILE}.bak + (grep -v $name ${FILE}.bak ; \ + echo "$name $number/$type # $comment") \ + >> ${FILE} + rm ${FILE}.bak + else + echo "Please add '$name $number/$type' into ${FILE}, and try again." + return 1 + fi fi return 0 } +# this msg is for users installing not from source, +# - show msg about changed sync protocol if [ "$2" = "PRE-INSTALL" ]; then + echo " + + **** UPGRADE WARNING: SYNC PROTOCOL CHANGED **** + + If you have spamd in distributed environment stop + sync between old (4.1.x) and this new version + until every node is updated + + read UPDATING in your PORTSDIR + + **** UPGRADE WARNING: SYNC PROTOCOL CHANGED **** +" + read -p "Hit ^c now to stop, any key to continue: " -t 5 a || true + echo "" + echo "" +fi + +if [ "$2" = "PRE-INSTALL" ]; then + check_dbown=0 if /usr/sbin/pw group show "${SPAMDGROUP}" 2>&1 >/dev/null; then echo "You already have a \"${SPAMDGROUP}\" group, so I will use it." + check_dbown=1 else echo "You need a \"${SPAMDGROUP}\" group." if yesno "Would you like me to create it" "YES"; then /usr/sbin/pw groupadd "${SPAMDGROUP}" -g "${SPAMDGID}" -h - || \ /usr/sbin/pw groupadd "${SPAMDGROUP}" -h - || exit echo "Done." + check_dbown=1 else echo "Please create the \"${SPAMDGROUP}\" group manually and try again." exit 1 @@ -99,6 +138,7 @@ if [ "$2" = "PRE-INSTALL" ]; then if /usr/sbin/pw user show "${SPAMDUSER}" 2>&1 >/dev/null; then echo "You already have a \"${SPAMDUSER}\" user, so I will use it." + check_dbown=1 else echo "You need a \"${SPAMDUSER}\" user." if yesno "Would you like me to create it" "YES"; then @@ -106,12 +146,17 @@ if [ "$2" = "PRE-INSTALL" ]; then -s /sbin/nologin -c "spamd pseudo-user" || \ /usr/sbin/pw useradd "${SPAMDUSER}" -g "${SPAMDGROUP}" -h - -d "${SPAMDDIR}" \ -s /sbin/nologin -c "spamd pseudo-user" || exit + check_dbown=1 else echo "Please create the \"${SPAMDUSER}\" user manually and try again." exit 1 fi fi + if [ ${check_dbown} -eq 1 ]; then + check_db + fi + if ! check_service spamd 8025 tcp "spamd(8)"; then exit 1 fi diff --git a/mail/spamd/files/pkg-message.in b/mail/spamd/files/pkg-message.in index e3c286dbe50a..f033d212be8b 100644 --- a/mail/spamd/files/pkg-message.in +++ b/mail/spamd/files/pkg-message.in @@ -20,23 +20,22 @@ To enable spamd you need: rdr pass inet proto tcp from any to any \ port smtp -> 127.0.0.1 port spamd +New features: + - sync for spamdb is now implemented (parameter -Y) + See %%PREFIX%%/%%DOCSDIR%%/ for usage manual. + - spamdb and spamlogd whiteexp times can now adjusted + with parameter -W + + !!!!!!!!!!!! -- I M P O T A N T - N O T E S -- !!!!!!!!!!!!!!!!! - ! - ! changes in Ver. 4.1.x: - ! - UID/GID is reserved to: _spamd:_spamd - ! check the owner of /var/db/spamd - ! - greylisting is now the default - ! - paramer: -b is now blacklist (Ver. < 4.1.x it is bind address) - ! - paramer: -l is now listen address - ! - spamdb: format is now HASH, helo/ehlo is also stored in db - ! convert will be done at the first start of spamd - ! if you have scripts that use spamdb review this scripts - ! - config files: new location is %%PREFIX%%/etc/spamd - ! - spamtrapp addresses: remove the surrounding '< >' signs - ! - pfspamd.sh was renamed to the obspamd - ! - IPFW support (beta) added to the sources. - ! See %%PREFIX%%/%%DOCSDIR%%/spamd-ipfw.txt for usage manual. - ! + + **** UPGRADE WARNING: SYNC PROTOCOL CHANGED **** + + The sync protocol has changed for versions > 4.1.x + + If spamd is installed in distributed environment and sync is + enabled, stop sync at every node until they are updated. + !!!!!!!!!!!! -- I M P O T A N T - N O T E S -- !!!!!!!!!!!!!!!!! ********************************************************************** |