aboutsummaryrefslogtreecommitdiff
path: root/mail/spamd
diff options
context:
space:
mode:
authorWesley Shields <wxs@FreeBSD.org>2009-07-23 12:52:44 +0000
committerWesley Shields <wxs@FreeBSD.org>2009-07-23 12:52:44 +0000
commit910a3cec56ea886741d5c5f3e30a3bac82fe3a50 (patch)
treed42cfaf0b74967638a5b03180ef695991f60f179 /mail/spamd
parentd80c737e25e7a17bb41cc97576877551fa4620f5 (diff)
downloadports-910a3cec56ea886741d5c5f3e30a3bac82fe3a50.tar.gz
ports-910a3cec56ea886741d5c5f3e30a3bac82fe3a50.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)
Notes
Notes: svn path=/head/; revision=238238
Diffstat (limited to 'mail/spamd')
-rw-r--r--mail/spamd/Makefile46
-rw-r--r--mail/spamd/distinfo6
-rw-r--r--mail/spamd/files/obspamd.in15
-rw-r--r--mail/spamd/files/obspamlogd.in9
-rw-r--r--mail/spamd/files/patch-makefile13
-rw-r--r--mail/spamd/files/patch-spamd__grey.c68
-rw-r--r--mail/spamd/files/patch-spamlogd15
-rw-r--r--mail/spamd/files/pkg-deinstall.in4
-rw-r--r--mail/spamd/files/pkg-install.in87
-rw-r--r--mail/spamd/files/pkg-message.in31
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 -- !!!!!!!!!!!!!!!!!
**********************************************************************