Index: head/mail/spamd/pkg-deinstall =================================================================== --- head/mail/spamd/pkg-deinstall (revision 529920) +++ head/mail/spamd/pkg-deinstall (nonexistent) @@ -1,18 +0,0 @@ -#!/bin/sh -# -# ex:ts=4:sw=4:noet -#-*- mode: makefile; tab-width: 4; -*- -# -# $FreeBSD$ - -#if [ "$2" = "DEINSTALL" ]; then -# Disabled until pkg runs DEINSTALL before INSTALL in upgrades -if false; then - FILE="/etc/services" - echo "===> Removing spamd entries from ${FILE}" - sed -i '' \ - -e "/^spamd-sync.*8025/d" \ - -e "/^spamd-cfg.*8026/d" \ - -e "/^spamd.*8025/d" \ - ${FILE} -fi Property changes on: head/mail/spamd/pkg-deinstall ___________________________________________________________________ Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:keywords ## -1 +0,0 ## -FreeBSD=%H \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: head/mail/spamd/Makefile =================================================================== --- head/mail/spamd/Makefile (revision 529920) +++ head/mail/spamd/Makefile (revision 529921) @@ -1,86 +1,82 @@ # Created by: Max Laier # $FreeBSD$ PORTNAME= spamd PORTVERSION= 4.9.1 -PORTREVISION= 4 +PORTREVISION= 5 CATEGORIES= mail MASTER_SITES= SF/freebsdspamd/spamd MAINTAINER= ohauer@FreeBSD.org COMMENT= Traps spammers with a very slow smtp-login and return 4xx error LICENSE= BSD2CLAUSE -BROKEN_SSL= openssl - -USE_RC_SUBR?= obspamd obspamlogd USES= ssl +USE_RC_SUBR?= obspamd obspamlogd USERS= _spamd GROUPS= _spamd PORTDOCS= ipfw-spamd.txt spamdb.txt -PLIST_FILES= %%ETCDIR%%/spamd.conf.sample \ +PLIST_FILES= etc/spamd/spamd.conf.sample \ libexec/spamlogd \ + sbin/add-spamd-to-etc-service \ sbin/spamd-setup \ sbin/spamdb \ man/man5/spamd.conf.5.gz \ man/man8/spamd-setup.8.gz \ man/man8/spamd.8.gz \ man/man8/spamdb.8.gz \ man/man8/spamlogd.8.gz SUB_LIST= SPAMDUSER=${USERS} \ SPAMDGROUP=${GROUPS} # 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 SUB_LIST+= SPAMDBIN=spamd .else PLIST_FILES+= libexec/obspamd SUB_LIST+= SPAMDBIN=obspamd .endif SUB_FILES= pkg-install \ pkg-message OPTIONS_DEFINE= DOCS CFLAGS+= -I${OPENSSLINC} LDFLAGS+= -L${OPENSSLLIB} .include -.if ${SSL_DEFAULT} == base -BROKEN_FreeBSD_12= error: variable has incomplete type 'HMAC_CTX' (aka 'struct hmac_ctx_st') -BROKEN_FreeBSD_13= error: variable has incomplete type 'HMAC_CTX' (aka 'struct hmac_ctx_st') -.endif - do-install: .if !defined(CPANEL) ${INSTALL_PROGRAM} ${WRKSRC}/spamd/spamd ${STAGEDIR}${PREFIX}/libexec .else ${INSTALL_PROGRAM} ${WRKSRC}/spamd/spamd ${STAGEDIR}${PREFIX}/libexec/obspamd .endif ${INSTALL_PROGRAM} ${WRKSRC}/spamlogd/spamlogd ${STAGEDIR}${PREFIX}/libexec ${INSTALL_PROGRAM} ${WRKSRC}/spamd-setup/spamd-setup ${STAGEDIR}${PREFIX}/sbin ${INSTALL_PROGRAM} ${WRKSRC}/spamdb/spamdb ${STAGEDIR}${PREFIX}/sbin ${INSTALL_MAN} ${WRKSRC}/etc/spamd.conf.5 ${STAGEDIR}${PREFIX}/man/man5 ${INSTALL_MAN} ${WRKSRC}/spamd/spamd.8 ${STAGEDIR}${PREFIX}/man/man8 ${INSTALL_MAN} ${WRKSRC}/spamd-setup/spamd-setup.8 ${STAGEDIR}${PREFIX}/man/man8 ${INSTALL_MAN} ${WRKSRC}/spamdb/spamdb.8 ${STAGEDIR}${PREFIX}/man/man8 ${INSTALL_MAN} ${WRKSRC}/spamlogd/spamlogd.8 ${STAGEDIR}${PREFIX}/man/man8 @${MKDIR} ${STAGEDIR}${ETCDIR} ${INSTALL_DATA} ${WRKSRC}/etc/spamd.conf ${STAGEDIR}${ETCDIR}/spamd.conf.sample @${MKDIR} ${STAGEDIR}${DOCSDIR} ${INSTALL_DATA} ${PORTDOCS:S|^|${WRKSRC}/doc/|} ${STAGEDIR}${DOCSDIR}/ + + ${INSTALL_SCRIPT} ${FILESDIR}/add-spamd-to-etc-service ${STAGEDIR}${PREFIX}/sbin/ .include Index: head/mail/spamd/files/add-spamd-to-etc-service =================================================================== --- head/mail/spamd/files/add-spamd-to-etc-service (nonexistent) +++ head/mail/spamd/files/add-spamd-to-etc-service (revision 529921) @@ -0,0 +1,52 @@ +#!/bin/sh +# +# ex:ts=4:sw=4:noet +#-*- mode: makefile; tab-width: 4; -*- +# +# $FreeBSD$ + +ETC_SERVICES="/etc/services" + + +check_service() { + local SERVICE PORT PROTO COMMENT + + SERVICE=$1 + PORT=$2 + PROTO=$3 + COMMENT=$4 + + # check + OK=no + HAS_SERVICE=no + COUNT=1 + for i in $(grep ^${SERVICE} ${ETC_SERVICES}); do + if [ ${COUNT} -eq 1 ] && [ x"${i}" = x"${SERVICE}" ]; then + HAS_SERVICE=yes + echo " already in ${ETC_SERVICES}: ${SERVICE}" + + elif [ ${COUNT} -eq 2 ] && [ "${HAS_SERVICE}" = "yes" ] && \ + [ x"${i}" = x"${PORT}/${PROTO}" ]; then + OK=yes + break + fi + COUNT=$(( ${COUNT} + 1 )) + done + # add an entry for SERVICE to /etc/services + if [ "${OK}" = "no" ]; then + echo "==> add entry \"${SERVICE} ${PORT}/${PROTO}\"" + ( + grep -v -e "^${SERVICE}.*${PORT}/${PROTO}" ${ETC_SERVICES} + echo "${SERVICE} ${PORT}/${PROTO} # ${COMMENT}" + ) >> ${ETC_SERVICES}.new + mv ${ETC_SERVICES}.new ${ETC_SERVICES} + fi +} + +# always add service entries +echo "Checking ${ETC_SERVICES} for missing spamd service entries" +[ ! -f ${ETC_SERVICES} ] && echo "==> cannot find ${ETC_SERVICES} ... => exit" && exit 1 +check_service spamd 8025 tcp "spamd(8)" +check_service spamd-sync 8025 udp "spamd(8) synchronisation" +check_service spamd-cfg 8026 tcp "spamd(8) configuration" + Property changes on: head/mail/spamd/files/add-spamd-to-etc-service ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/mail/spamd/files/patch-spamd_sync.c =================================================================== --- head/mail/spamd/files/patch-spamd_sync.c (nonexistent) +++ head/mail/spamd/files/patch-spamd_sync.c (revision 529921) @@ -0,0 +1,164 @@ +# PR: 235496 +# patch id: 201721 +# +--- spamd/sync.c.orig 2010-04-24 10:33:47 UTC ++++ spamd/sync.c +@@ -53,6 +53,22 @@ extern char *SHA1_File(const char *, char *); + + #include + ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++# define spamd_hmac_ctx HMAC_CTX * ++# define spamd_hmac_ctx_init(ctx) ctx = HMAC_CTX_new() ++# define spamd_hmac_sha1_init(ctx, key, keylen) HMAC_Init_ex(ctx, key, keylen, EVP_sha1(), NULL) ++# define spamd_hmac_update(ctx, data, datalen) HMAC_Update(ctx, data, datalen) ++# define spamd_hmac_final(ctx, data, datalen) HMAC_Final(ctx, data, datalen) ++# define spamd_hmac_cleanup(ctx) HMAC_CTX_free(ctx) ++#else ++# define spamd_hmac_ctx HMAC_CTX ++# define spamd_hmac_ctx_init(ctx) HMAC_CTX_init(&(ctx)) ++# define spamd_hmac_sha1_init(ctx, key, keylen) HMAC_Init_ex(&(ctx), key, keylen, EVP_sha1(), NULL) ++# define spamd_hmac_update(ctx, data, datalen) HMAC_Update(&(ctx), data, datalen) ++# define spamd_hmac_final(ctx, data, datalen) HMAC_Final(&(ctx), data, datalen) ++# define spamd_hmac_cleanup(ctx) HMAC_cleanup(&(ctx)) ++#endif ++ + #include "sdl.h" + #include "grey.h" + #include "sync.h" +@@ -439,7 +455,7 @@ sync_update(time_t now, char *helo, char *ip, char *fr + u_int16_t sglen, fromlen, tolen, helolen, padlen; + char pad[SPAM_ALIGNBYTES]; + int i = 0; +- HMAC_CTX ctx; ++ spamd_hmac_ctx ctx; + u_int hmac_len; + + if (debug) +@@ -455,8 +471,8 @@ sync_update(time_t now, char *helo, char *ip, char *fr + tolen = strlen(to) + 1; + helolen = strlen(helo) + 1; + +- HMAC_CTX_init(&ctx); +- HMAC_Init(&ctx, sync_key, strlen(sync_key), EVP_sha1()); ++ spamd_hmac_ctx_init(ctx); ++ spamd_hmac_sha1_init(ctx, sync_key, strlen(sync_key)); + + sglen = sizeof(sg) + fromlen + tolen + helolen; + padlen = SPAM_ALIGN(sglen) - sglen; +@@ -468,7 +484,7 @@ sync_update(time_t now, char *helo, char *ip, char *fr + hdr.sh_length = htons(sizeof(hdr) + sglen + padlen + sizeof(end)); + iov[i].iov_base = &hdr; + iov[i].iov_len = sizeof(hdr); +- HMAC_Update(&ctx, iov[i].iov_base, iov[i].iov_len); ++ spamd_hmac_update(ctx, iov[i].iov_base, iov[i].iov_len); + i++; + + /* Add single SPAM sync greylisting entry */ +@@ -481,27 +497,27 @@ sync_update(time_t now, char *helo, char *ip, char *fr + sg.sg_helo_length = htons(helolen); + iov[i].iov_base = &sg; + iov[i].iov_len = sizeof(sg); +- HMAC_Update(&ctx, iov[i].iov_base, iov[i].iov_len); ++ spamd_hmac_update(ctx, iov[i].iov_base, iov[i].iov_len); + i++; + + iov[i].iov_base = from; + iov[i].iov_len = fromlen; +- HMAC_Update(&ctx, iov[i].iov_base, iov[i].iov_len); ++ spamd_hmac_update(ctx, iov[i].iov_base, iov[i].iov_len); + i++; + + iov[i].iov_base = to; + iov[i].iov_len = tolen; +- HMAC_Update(&ctx, iov[i].iov_base, iov[i].iov_len); ++ spamd_hmac_update(ctx, iov[i].iov_base, iov[i].iov_len); + i++; + + iov[i].iov_base = helo; + iov[i].iov_len = helolen; +- HMAC_Update(&ctx, iov[i].iov_base, iov[i].iov_len); ++ spamd_hmac_update(ctx, iov[i].iov_base, iov[i].iov_len); + i++; + + iov[i].iov_base = pad; + iov[i].iov_len = padlen; +- HMAC_Update(&ctx, iov[i].iov_base, iov[i].iov_len); ++ spamd_hmac_update(ctx, iov[i].iov_base, iov[i].iov_len); + i++; + + /* Add end marker */ +@@ -509,14 +525,14 @@ sync_update(time_t now, char *helo, char *ip, char *fr + end.st_length = htons(sizeof(end)); + iov[i].iov_base = &end; + iov[i].iov_len = sizeof(end); +- HMAC_Update(&ctx, iov[i].iov_base, iov[i].iov_len); ++ spamd_hmac_update(ctx, iov[i].iov_base, iov[i].iov_len); + i++; + +- HMAC_Final(&ctx, hdr.sh_hmac, &hmac_len); ++ spamd_hmac_final(ctx, hdr.sh_hmac, &hmac_len); + + /* Send message to the target hosts */ + sync_send(iov, i); +- HMAC_CTX_cleanup(&ctx); ++ spamd_hmac_cleanup(ctx); + } + + void +@@ -527,7 +543,7 @@ sync_addr(time_t now, time_t expire, char *ip, u_int16 + struct spam_synctlv_addr sd; + struct spam_synctlv_hdr end; + int i = 0; +- HMAC_CTX ctx; ++ spamd_hmac_ctx ctx; + u_int hmac_len; + + if (debug) +@@ -537,8 +553,8 @@ sync_addr(time_t now, time_t expire, char *ip, u_int16 + bzero(&hdr, sizeof(hdr)); + bzero(&sd, sizeof(sd)); + +- HMAC_CTX_init(&ctx); +- HMAC_Init(&ctx, sync_key, strlen(sync_key), EVP_sha1()); ++ spamd_hmac_ctx_init(ctx); ++ spamd_hmac_sha1_init(ctx, sync_key, strlen(sync_key)); + + /* Add SPAM sync packet header */ + hdr.sh_version = SPAM_SYNC_VERSION; +@@ -547,7 +563,7 @@ sync_addr(time_t now, time_t expire, char *ip, u_int16 + hdr.sh_length = htons(sizeof(hdr) + sizeof(sd) + sizeof(end)); + iov[i].iov_base = &hdr; + iov[i].iov_len = sizeof(hdr); +- HMAC_Update(&ctx, iov[i].iov_base, iov[i].iov_len); ++ spamd_hmac_update(ctx, iov[i].iov_base, iov[i].iov_len); + i++; + + /* Add single SPAM sync address entry */ +@@ -558,7 +574,7 @@ sync_addr(time_t now, time_t expire, char *ip, u_int16 + sd.sd_ip = inet_addr(ip); + iov[i].iov_base = &sd; + iov[i].iov_len = sizeof(sd); +- HMAC_Update(&ctx, iov[i].iov_base, iov[i].iov_len); ++ spamd_hmac_update(ctx, iov[i].iov_base, iov[i].iov_len); + i++; + + /* Add end marker */ +@@ -566,14 +582,14 @@ sync_addr(time_t now, time_t expire, char *ip, u_int16 + end.st_length = htons(sizeof(end)); + iov[i].iov_base = &end; + iov[i].iov_len = sizeof(end); +- HMAC_Update(&ctx, iov[i].iov_base, iov[i].iov_len); ++ spamd_hmac_update(ctx, iov[i].iov_base, iov[i].iov_len); + i++; + +- HMAC_Final(&ctx, hdr.sh_hmac, &hmac_len); ++ spamd_hmac_final(ctx, hdr.sh_hmac, &hmac_len); + + /* Send message to the target hosts */ + sync_send(iov, i); +- HMAC_CTX_cleanup(&ctx); ++ spamd_hmac_cleanup(ctx); + } + + void Property changes on: head/mail/spamd/files/patch-spamd_sync.c ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/mail/spamd/files/pkg-install.in =================================================================== --- head/mail/spamd/files/pkg-install.in (revision 529920) +++ head/mail/spamd/files/pkg-install.in (revision 529921) @@ -1,72 +1,29 @@ #!/bin/sh # # ex:ts=4:sw=4:noet #-*- mode: makefile; tab-width: 4; -*- # # $FreeBSD$ SPAMDUSER=%%SPAMDUSER%% SPAMDGROUP=%%SPAMDGROUP%% -FILE="/etc/services" check_db() { DB=/var/db/spamd if [ -f ${DB} ]; then OWN=$(stat -f "%Su" ${DB}) GRP=$(stat -f "%Sg" ${DB}) if [ "x${OWN}" != "x${SPAMDUSER}" ]; then echo "==> chown ${SPAMDUSER} ${DB} (previous ${OWN})" chown ${SPAMDUSER} ${DB} fi if [ "x${GRP}" != "x${SPAMDGROUP}" ]; then echo "==> chgrp ${SPAMDGROUP} ${DB} (previous ${GRP})" chgrp ${SPAMDGROUP} ${DB} fi fi } - -check_service() { - local SERVICE PORT PROTO COMMENT - - SERVICE=$1 - PORT=$2 - PROTO=$3 - COMMENT=$4 - - # check - OK=no - HAS_SERVICE=no - COUNT=1 - for i in $(grep ^${SERVICE} ${FILE}); do - if [ ${COUNT} -eq 1 ] && [ x"${i}" = x"${SERVICE}" ]; then - HAS_SERVICE=yes - elif [ ${COUNT} -eq 2 ] && [ "${HAS_SERVICE}" = "yes" ] && \ - [ x"${i}" = x"${PORT}/${PROTO}" ]; then - OK=yes - break - fi - COUNT=$(( ${COUNT} + 1 )) - done - # add an entry for SERVICE to /etc/services - if [ "${OK}" = "no" ]; then - echo "==> add entry \"${SERVICE} ${PORT}/${PROTO}\"" - ( - grep -v -e "^${SERVICE}.*${PORT}/${PROTO}" ${FILE} - echo "${SERVICE} ${PORT}/${PROTO} # ${COMMENT}" - ) >> ${FILE}.new - mv ${FILE}.new ${FILE} - fi -} - -# always add service entries -if [ "$2" = "PRE-INSTALL" ]; then - echo "Checking ${FILE} for missing service entries" - [ ! -f ${FILE} ] && echo "==> cannot find ${FILE} ... => exit" && exit 1 - check_service spamd 8025 tcp "spamd(8)" - check_service spamd-sync 8025 udp "spamd(8) synchronisation" - check_service spamd-cfg 8026 tcp "spamd(8) configuration" -fi if [ "$2" = "POST-INSTALL" ]; then check_db fi Index: head/mail/spamd/files/pkg-message.in =================================================================== --- head/mail/spamd/files/pkg-message.in (revision 529920) +++ head/mail/spamd/files/pkg-message.in (revision 529921) @@ -1,41 +1,44 @@ [ { type: install message: < persist no rdr inet proto tcp from to any \ port smtp rdr pass inet proto tcp from any to any \ port smtp -> 127.0.0.1 port spamd FreeBSD only features (not in OpenBSD): - sync for spamdb (parameter -Y) - See %%PREFIX%%/%%DOCSDIR%%/ for usage. + See %%DOCSDIR%%/ for usage. EOM } ]