ports/79508: New port: mail/smc-milter A non-context email filter
miniEleph
nyxo at dnuc.polyn.kiae.su
Sun Apr 3 16:30:09 UTC 2005
>Number: 79508
>Category: ports
>Synopsis: New port: mail/smc-milter A non-context email filter
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Sun Apr 03 16:30:08 GMT 2005
>Closed-Date:
>Last-Modified:
>Originator: Andrey E. Shevtsov
>Release: FreeBSD 4.10-STABLE i386
>Organization:
>Environment:
System: FreeBSD dnuc.polyn.kiae.su 4.10-STABLE FreeBSD 4.10-STABLE #1: Fri Feb 18 16:41:31 MSK 2005 nyxo at dnuc.polyn.kiae.su:/usr/src/sys/compile/DNUC i386
>Description:
Sendmail Confirmation System (SMC) is an Sendmail milter plugin that is
designed to significantly reduce the amount of junk email you receive. It
uses dynamic local and DNS-based remote whitelists, blacklists, and an
original auto-confirmation system for unknown but legitimate senders. It
includes features for protecting recipients from dangerous attachments and
HTML includes. It uses a set of original algorithms, including "Check relay
by NS", which simulates a dynamic whitelisting technique, and "Check delays",
also known as "Greylisting".
WWW: http://milter.sourceforge.net/
>How-To-Repeat:
>Fix:
# This is a shell archive. Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file". Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
# smc-milter
# smc-milter/Makefile
# smc-milter/distinfo
# smc-milter/pkg-descr
# smc-milter/pkg-message
# smc-milter/pkg-plist
# smc-milter/files
# smc-milter/files/smc-milter.sh
# smc-milter/files/patch-aa
# smc-milter/files/patch-ab
# smc-milter/files/patch-ac
# smc-milter/files/patch-ad
# smc-milter/files/patch-ae
# smc-milter/files/patch-af
#
echo c - smc-milter
mkdir -p smc-milter > /dev/null 2>&1
echo x - smc-milter/Makefile
sed 's/^X//' >smc-milter/Makefile << 'END-of-smc-milter/Makefile'
X# New ports collection makefile for: smc-milter
X# Date created: 30 March 2005
X# Whom: Andrey E. Shevtsov
X#
X# $FreeBSD$
X#
X
XPORTNAME= smc-milter
XPORTVERSION= 1.5
XCATEGORIES= mail
XMASTER_SITES= ${MASTER_SITE_SOURCEFORGE}
XMASTER_SITE_SUBDIR= milter
X
XMAINTAINER= ports at FreeBSD.org
XCOMMENT= A non-context email filter
X
XBUILD_DEPENDS= ${LOCALBASE}/lib/libbind_r.a:${PORTSDIR}/dns/bind84
XLIB_DEPENDS= db-4.2.2:${PORTSDIR}/databases/db42
X
XUSE_GMAKE= yes
XUSE_REINPLACE= yes
X
XNOMAN=
X
Xpost-extract:
X @${REINPLACE_CMD} -e 's|\/opt\/SMC|\/usr\/local\/etc\/smc|g ; \
X s|aliases|mail\/aliases|g' \
X ${WRKSRC}/smc-milter.h
X
Xpost-install:
X ${INSTALL_SCRIPT} ${MASTERDIR}/files/smc-milter.sh \
X ${LOCALBASE}/etc/rc.d/smc-milter.sh
X
X.include <bsd.port.mk>
END-of-smc-milter/Makefile
echo x - smc-milter/distinfo
sed 's/^X//' >smc-milter/distinfo << 'END-of-smc-milter/distinfo'
XMD5 (smc-milter-1.5.tar.gz) = d772a8f0d2d6cfccd50ea8668a4881d0
XSIZE (smc-milter-1.5.tar.gz) = 96274
END-of-smc-milter/distinfo
echo x - smc-milter/pkg-descr
sed 's/^X//' >smc-milter/pkg-descr << 'END-of-smc-milter/pkg-descr'
XSendmail Confirmation System (SMC) is an Sendmail milter plugin that is
Xdesigned to significantly reduce the amount of junk email you receive. It
Xuses dynamic local and DNS-based remote whitelists, blacklists, and an
Xoriginal auto-confirmation system for unknown but legitimate senders. It
Xincludes features for protecting recipients from dangerous attachments and
XHTML includes. It uses a set of original algorithms, including "Check relay
Xby NS", which simulates a dynamic whitelisting technique, and "Check delays",
Xalso known as "Greylisting".
X
XWWW: http://milter.sourceforge.net/
END-of-smc-milter/pkg-descr
echo x - smc-milter/pkg-message
sed 's/^X//' >smc-milter/pkg-message << 'END-of-smc-milter/pkg-message'
XThe start/stop script has been placed in $PREFIX/etc/rc.d/smc-milter.sh
XConfiguration files has been placed in $PREFIX/etc/smc/
X
XAdd this lines to your sendmail's .mc file:
X
Xdefine(`confMILTER_MACROS_CONNECT', `{client_addr}')dnl
XINPUT_MAIL_FILTER(`SMC-milter', `S=local:/var/run/smc-milter.sock, F=T, T=C:30m;S:10m;R:10m;E:30m')dnl
X
XThen generate new sendmail.cf, install it, start smc-milter and finally
Xrestart sendmail.
X
END-of-smc-milter/pkg-message
echo x - smc-milter/pkg-plist
sed 's/^X//' >smc-milter/pkg-plist << 'END-of-smc-milter/pkg-plist'
Xbin/smc-milter
Xetc/smc/smc-milter.conf
Xetc/smc/smc-milter.policy
Xetc/smc/smc-milter.users
X at dirrm etc/smc
Xetc/rc.d/smc-milter.sh
END-of-smc-milter/pkg-plist
echo c - smc-milter/files
mkdir -p smc-milter/files > /dev/null 2>&1
echo x - smc-milter/files/smc-milter.sh
sed 's/^X//' >smc-milter/files/smc-milter.sh << 'END-of-smc-milter/files/smc-milter.sh'
X#!/bin/sh
X
Xcase "$1" in
X start)
X /usr/local/bin/smc-milter
X echo ' smc-milter'
X ;;
X stop)
X if [ -f /var/run/smc-milter.pid ]; then
X kill `cat /var/run/smc-milter.pid`
X echo ' smc-milter'
X fi
X ;;
X *)
X echo ""
X echo "Usage: `basename $0` { start | stop }"
X echo ""
X exit 64
X ;;
Xesac
END-of-smc-milter/files/smc-milter.sh
echo x - smc-milter/files/patch-aa
sed 's/^X//' >smc-milter/files/patch-aa << 'END-of-smc-milter/files/patch-aa'
X*** Makefile.orig Mon Mar 14 08:27:09 2005
X--- Makefile Sun Apr 3 17:28:21 2005
X***************
X*** 10,20 ****
X # CFLAGS = -g -O2 -Wall -D_GNU_SOURCE -D_REENTRANT -I/usr/lib/bind/include
X # LIBS = /usr/lib/bind/lib/libbind_r.a -lmilter -pthread -lssl -ldb
X # if glibc >= 2.2
X! CFLAGS = -g -O2 -Wall -D_GNU_SOURCE -D_REENTRANT
X! LIBS = -lmilter -pthread -lssl -ldb -lresolv
X MILTER = smc-milter
X! INSDIR = /opt/SMC
X! CC = gcc
X
X all: milter
X
X--- 10,24 ----
X # CFLAGS = -g -O2 -Wall -D_GNU_SOURCE -D_REENTRANT -I/usr/lib/bind/include
X # LIBS = /usr/lib/bind/lib/libbind_r.a -lmilter -pthread -lssl -ldb
X # if glibc >= 2.2
X! CFLAGS += -g -O2 -Wall -D_GNU_SOURCE -D_REENTRANT \
X! -I/usr/local/include/bind -I/usr/local/include/db42
X! LIBS = -lmilter -pthread -lssl -L/usr/local/lib/db42 -ldb \
X! -L/usr/local/lib -lbind_r -lcrypto
X MILTER = smc-milter
X! BASEINSDIR = /usr/local
X! CONFINSDIR = $(BASEINSDIR)/etc/smc
X! BININSDIR = $(BASEINSDIR)/bin
X! CC ?= gcc
X
X all: milter
X
X***************
X*** 29,42 ****
X
X
X install:
X! [ -d "$(INSDIR)" ] || mkdir $(INSDIR)
X if [ -n "$(MILTER)" ]; then \
X strip $(MILTER) ; \
X! install -m 755 $(MILTER) $(INSDIR) ; \
X fi
X! install -m 644 $(MILTER).conf $(INSDIR)
X! install -m 644 $(MILTER).policy $(INSDIR)
X! install -m 644 $(MILTER).users $(INSDIR)
X
X remove:
X rm -f $(INSDIR)/$(MILTER)*
X--- 33,46 ----
X
X
X install:
X! [ -d "$(CONFINSDIR)" ] || mkdir $(CONFINSDIR)
X if [ -n "$(MILTER)" ]; then \
X strip $(MILTER) ; \
X! install -m 755 $(MILTER) $(BININSDIR) ; \
X fi
X! install -m 644 $(MILTER).conf $(CONFINSDIR)
X! install -m 644 $(MILTER).policy $(CONFINSDIR)
X! install -m 644 $(MILTER).users $(CONFINSDIR)
X
X remove:
X rm -f $(INSDIR)/$(MILTER)*
END-of-smc-milter/files/patch-aa
echo x - smc-milter/files/patch-ab
sed 's/^X//' >smc-milter/files/patch-ab << 'END-of-smc-milter/files/patch-ab'
X*** regex.c.orig Thu Mar 10 06:10:48 2005
X--- regex.c Wed Mar 23 17:51:06 2005
X***************
X*** 58,64 ****
X # include <wctype.h>
X #endif
X
X! #include <malloc.h>
X #include "regex.h"
X
X /* This is for multi byte string support. */
X--- 58,64 ----
X # include <wctype.h>
X #endif
X
X! #include <stdlib.h>
X #include "regex.h"
X
X /* This is for multi byte string support. */
X***************
X*** 148,159 ****
X--- 148,161 ----
X even if config.h says that we can. */
X # undef REL_ALLOC
X
X+ #ifndef _STDLIB_H_
X # if defined STDC_HEADERS || defined _LIBC
X # include <stdlib.h>
X # else
X char *malloc ();
X char *realloc ();
X # endif
X+ #endif /* _STDLIB_H_ */
X
X /* When used in Emacs's lib-src, we need to get bzero and bcopy somehow.
X If nothing else has been done, use the method below. */
END-of-smc-milter/files/patch-ab
echo x - smc-milter/files/patch-ac
sed 's/^X//' >smc-milter/files/patch-ac << 'END-of-smc-milter/files/patch-ac'
X*** relay.c.orig Thu Mar 10 06:23:13 2005
X--- relay.c Thu Mar 24 11:23:49 2005
X***************
X*** 202,209 ****
X return -1;
X }
X
X! if (!(gethostbyname_r(host_name, &host_buf, buffer, sizeof(buffer),
X! &host, &ret))) {
X while (*host->h_addr_list) {
X if (host_addr == *(uint32_t *)(*host->h_addr_list)) {
X resolver_close(&res_local);
X--- 202,209 ----
X return -1;
X }
X
X! host = gethostbyname_r(host_name, &host_buf, buffer, sizeof(buffer), &ret);
X! if (!ret) {
X while (*host->h_addr_list) {
X if (host_addr == *(uint32_t *)(*host->h_addr_list)) {
X resolver_close(&res_local);
END-of-smc-milter/files/patch-ac
echo x - smc-milter/files/patch-ad
sed 's/^X//' >smc-milter/files/patch-ad << 'END-of-smc-milter/files/patch-ad'
X*** smc-milter.c.orig Thu Mar 10 06:10:48 2005
X--- smc-milter.c Thu Mar 24 12:09:11 2005
X***************
X*** 65,70 ****
X--- 65,74 ----
X #include "relay.h"
X #include "smtp.h"
X
X+ #if !defined O_SYNC && defined O_FSYNC
X+ #define O_SYNC O_FSYNC
X+ #endif
X+
X /* Static variables for config defaults, etc. */
X static int runmode = 0;
X static char *smfisock = NULL;
X***************
X*** 161,166 ****
X--- 165,191 ----
X "<(i?frame|object|embed|applet)[^>]*>",
X "\\son(\\w+)=[^> ]+", NULL
X };
X+
X+ #ifndef strndup
X+ char *strndup(char const* s, size_t n)
X+ {
X+ void* voided = (void*)s;
X+ void* match;
X+ char *ret;
X+ size_t len;
X+
X+ if (!s || !n) return NULL;
X+ match = memchr(voided, 0, n);
X+ len =
X+ match
X+ ? (char*)match - s
X+ : n+1;
X+ ret = (char*)malloc(len);
X+ memcpy(ret, s, len-1);
X+ ret[len] = '\0';
X+ return ret;
X+ }
X+ #endif
X
X void
X signal_handler (int sig) {
END-of-smc-milter/files/patch-ad
echo x - smc-milter/files/patch-ae
sed 's/^X//' >smc-milter/files/patch-ae << 'END-of-smc-milter/files/patch-ae'
X*** smtp.c.orig Thu Mar 10 06:10:48 2005
X--- smtp.c Thu Mar 24 11:38:42 2005
X***************
X*** 50,55 ****
X--- 50,59 ----
X #define SMTP_CMD_PERM(x) (500 <= (x) && (x) < 600)
X #define SMTP_DATA_OK(x) ((x) == 354)
X
X+ #ifndef MSG_NOSIGNAL
X+ #define MSG_NOSIGNAL 0
X+ #endif
X+
X typedef union {
X HEADER hdr;
X u_char buf[MAXPACKET];
X***************
X*** 326,333 ****
X int optval = 1;
X char buffer[8192];
X
X! if ((gethostbyname_r(mxhost, &host_buf, buffer, sizeof(buffer),
X! &host, &ret))) return -1;
X
X memset(&address, 0, sizeof(struct sockaddr));
X address.sin_addr.s_addr = *(uint32_t *)host->h_addr_list[0];
X--- 330,338 ----
X int optval = 1;
X char buffer[8192];
X
X! host = gethostbyname_r(mxhost, &host_buf, buffer, sizeof(buffer), &ret);
X! if(ret)
X! return -1;
X
X memset(&address, 0, sizeof(struct sockaddr));
X address.sin_addr.s_addr = *(uint32_t *)host->h_addr_list[0];
END-of-smc-milter/files/patch-ae
echo x - smc-milter/files/patch-af
sed 's/^X//' >smc-milter/files/patch-af << 'END-of-smc-milter/files/patch-af'
X*** utils.c.orig Thu Mar 10 06:10:48 2005
X--- utils.c Thu Mar 24 11:40:56 2005
X***************
X*** 32,37 ****
X--- 32,41 ----
X #define MAXLINE 4096
X #endif
X
X+ #if !defined O_SYNC && defined O_FSYNC
X+ #define O_SYNC O_FSYNC
X+ #endif
X+
X typedef struct {
X char name[PATH_MAX+1];
X pthread_mutex_t lock;
END-of-smc-milter/files/patch-af
exit
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list