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