Add simscan - a good, simple, and fast qmail scanner, which works with

SpamAssassin/ClamAV, written in C.

PR:		78629[1], 79135[2]
Submitted by:	Anton Karpov <toxa@toxahost.ru> [1],
		Cristiano Deana <cris@gufi.org> [2]
This commit is contained in:
Roman Bogorodskiy 2005-04-03 16:04:21 +00:00
parent 2f8c610bcd
commit 3ada00cdc3
9 changed files with 282 additions and 0 deletions

View file

@ -433,6 +433,7 @@
SUBDIR += sigit
SUBDIR += sigrot
SUBDIR += silkymail
SUBDIR += simscan
SUBDIR += sma
SUBDIR += smail
SUBDIR += smtpclient

144
mail/simscan/Makefile Normal file
View file

@ -0,0 +1,144 @@
# New ports collection makefile for: simscan
# Date created: 1 Apr 2005
# Whom: Anton Karpov <toxa@toxahost.ru>
#
# $FreeBSD$
#
PORTNAME= simscan
PORTVERSION= 1.1
CATEGORIES= mail security
MASTER_SITES= http://www.inter7.com/simscan/
MASTER_SITE_SUBDIR= ${PORTNAME}
DISTNAME= ${PORTNAME}-${PORTVERSION:S/.r/rc/}
MAINTAINER= toxa@toxahost.ru
COMMENT= Fast Content/Anti-virus Scanner for qmail Written in C
BUILD_DEPENDS= ${QMAIL_QUEUE}:${PORTSDIR}/mail/qmail
GNU_CONFIGURE= yes
# A normal qmail installation puts everything into /var/qmail/.
# Must match your qmail installation
QMAIL_DIR?= /var/qmail
WORKDIR?= ${QMAIL_DIR}/${PORTNAME}
QMAIL_QUEUE= ${QMAIL_DIR}/bin/qmail-queue
PLIST_SUB= QMAIL_DIR=${QMAIL_DIR} \
SIMSCAN_DIR=${PORTNAME}
OPTIONS= CLAMAV "Support for ClamAV Virus Scanning" on \
RIPMIME "Ripmime Processing (if Clamav ScanMail disabled)" on \
SPAMD "Support for SpamAssassin Spam Filtering" off \
USER "Turn On Per User SpamAssassin (required SPAMD)" off \
DOMAIN "Turn On Per Domain Based Checking" off \
ATTACH "Turn On Attachment Scanning (required CLAMAV)" off \
DROPMSG "Drop Message in Case of Virus Found" off \
PASSTHRU "Pass Spam Thru, Do Not Reject (required SPAMD)" off \
HEADERS "Add a Received Line With Versions of Scanners" off
.include <bsd.port.pre.mk>
CONFIGURE_ARGS=--enable-clamavdb-path=/var/db/clamav \
--enable-qmaildir=${QMAIL_DIR} \
--enable-spamc-user=n \
--enable-workdir=${WORKDIR}
.if defined(WITHOUT_CLAMAV)
CONFIGURE_ARGS+=-enable-clamav=n
.else
BUILD_DEPENDS+= clamdscan:${PORTSDIR}/security/clamav
.endif
.if defined(WITHOUT_RIPMIME)
CONFIGURE_ARGS+=--disable-ripmime
.else
BUILD_DEPENDS+= ripmime:${PORTSDIR}/mail/ripmime
.endif
.if defined(WITH_SPAMD)
BUILD_DEPENDS+= spamassassin:${PORTSDIR}/mail/p5-Mail-SpamAssassin
CONFIGURE_ARGS+=--enable-spam=y
CONFIGURE_ARGS+=--enable-spamassassin-path=${LOCALBASE}/bin/spamassassin
.endif
.if defined(WITH_USER)
CONFIGURE_ARGS+=--enable-spamc-user=y
.endif
.if defined(WITH_DOMAIN)
CONFIGURE_ARGS+=--enable-per-domain=y
.endif
.if defined(WITH_ATTACH)
CONFIGURE_ARGS+=--enable-attach=y
.endif
.if defined(WITH_DROPMSG)
CONFIGURE_ARGS+=--enable-dropmsg=y
.endif
.if defined(WITH_PASSTHRU)
CONFIGURE_ARGS+=--enable-spam-passthru=y
.endif
.if defined(WITH_HEADERS)
CONFIGURE_ARGS+=--enable-received=y
CONFIGURE_ARGS+=--enable-sigtool-path=${LOCALBASE}/bin/sigtool
.endif
.if defined(SPAM_HITS)
CONFIGURE_ARGS+=--enable-spam-hits=${SPAM_HITS}
.endif
.if defined(QUARANTINE_DIR)
CONFIGURE_ARGS+=--enable-quarantinedir=${QUARANTINE_DIR}
.endif
.if defined(SPAMC_ARGS)
CONFIGURE_ARGS+=--enable-spamc-args=${SPAMC_ARGS}
.endif
.if defined(QMAIL_QUEUE)
CONFIGURE_ARGS+=--enable-qmail-queue=${QMAIL_QUEUE}
.endif
PORTDOCS= AUTHORS ChangeLog README TODO
if ! ${TEST} -f ${QMAIL_QUEUE}; then \
${ECHO_MSG} "Unable to found qmail-queue binary trying '${QMAIL_QUEUE}'."; \
${ECHO_MSG} "Please set QMAIL_DIR to your qmail installation directory !"; \
exit 1; \
fi
pre-configure:
@${ECHO_MSG} ""
@${ECHO_MSG} "=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~="
@${ECHO_MSG} "You may also use the following build options:"
@${ECHO_MSG} ""
@${ECHO_MSG} "QMAIL_DIR Base qmail directory. Default is /var/qmail"
@${ECHO_MSG} "WORKDIR Directory to unpack emails. Default is /var/qmail/simscan"
@${ECHO_MSG} "QMAIL_QUEUE Define full path and name of the qmail-queue program"
@${ECHO_MSG} " Incoming mail is passed to this program after being"
@${ECHO_MSG} " scanned by SimScan. Default is /var/qmail/bin/qmail-queue"
@${ECHO_MSG} "SPAMC_ARGS Define the arguments to pass to spamc."
@${ECHO_MSG} " Be sure to place quotes around the options you define"
@${ECHO_MSG} "SPAM_HITS Reject spam only above this hit level"
@${ECHO_MSG} " Default is 10.0. Useful without PASSTHRU option"
@${ECHO_MSG} "QUARANTINE_DIR Directory to keep spam and/or infected emails"
@${ECHO_MSG} " Default is disabled"
@${ECHO_MSG} "=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~="
@${ECHO_MSG} ""
post-install:
@${CHMOD} 04711 ${QMAIL_DIR}/bin/simscan
@${CHOWN} simscan:simscan ${QMAIL_DIR}/bin/simscan ${QMAIL_DIR}/bin/simscanmk
.if !defined(NOPORTDOCS)
@${MKDIR} ${DOCSDIR}
.for i in ${PORTDOCS}
@${INSTALL_DATA} ${WRKSRC}/${i} ${DOCSDIR}
.endfor
.endif
@${CAT} ${PKGMESSAGE}
.include <bsd.port.post.mk>

2
mail/simscan/distinfo Normal file
View file

@ -0,0 +1,2 @@
MD5 (simscan-1.1.tar.gz) = 2ba25145dc0c1b6159f26f3f4c03d3c6
SIZE (simscan-1.1.tar.gz) = 130114

View file

@ -0,0 +1,13 @@
#!/bin/sh
#
# $FreeBSD$
USER=simscan
GROUP=${USER}
if [ x$2 != xDEINSTALL ]; then
exit
fi
pw groupdel -n ${GROUP} || true
pw userdel -n ${GROUP} || true

7
mail/simscan/pkg-descr Normal file
View file

@ -0,0 +1,7 @@
Simscan is a simple program that enables qmail-smtpd to reject
viruses, spam and block attachments during the SMTP conversation
so the email never makes it into your computers. It is completely
open source and uses other open source components.
Very efficient and written in C.
WWW: http://www.inter7.com/?page=simscan

49
mail/simscan/pkg-install Normal file
View file

@ -0,0 +1,49 @@
#!/bin/sh
#
# $FreeBSD$
USER=simscan
GROUP=${USER}
UID=74
GID=${UID}
SIMDIR=/var/qmail/simscan
if [ "$2" = "PRE-INSTALL" ]; then
echo adding simscan user
if pw group show "${GROUP}" 2>/dev/null; then
echo "You already have a group \"${GROUP}\", so I will use it."
else
if pw groupadd ${GROUP} -g ${GID}; then
echo "Added group \"${GROUP}\"."
else
echo "Adding group \"${GROUP}\" failed..."
exit 1
fi
fi
if pw user show "${USER}" 2>/dev/null; then
echo "You already have a user \"${USER}\", so I will use it."
else
if pw useradd ${USER} -u ${UID} -g ${GROUP} -h - \
-d /nonexistent -s /sbin/nologin -c "Simscan User"
then
echo "Added user \"${USER}\"."
else
echo "Adding user \"${USER}\" failed..."
exit 1
fi
fi
elif [ "$2" = "POST-INSTALL" ]; then
if [ ! -d "$SIMDIR" ]; then
/bin/mkdir -p "$SIMDIR" || exit 1
/usr/sbin/chown "$USER:$GROUP" "$SIMDIR" || exit 1
/bin/chmod 0750 "$SIMDIR" || exit 1
fi
fi
exit 0

23
mail/simscan/pkg-message Normal file
View file

@ -0,0 +1,23 @@
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=
NOTES:
* You have to configure your anti-virus and anti-spam products!
* You have to modify your qmail startup files to call simscan.
In most cases, you just need to edit /var/qmail/tcp.smtp in
order to call simscan instead of qmail-queue, by setting up
QMAILQUEUE variable. For example:
127.0.0.1:allow,RELAYCLIENT=""
192.168.0.:allow,RELAYCLIENT="",QMAILQUEUE="/var/qmail/bin/simscan"
:allow,QMAILQUEUE="/var/qmail/bin/simscan"
* Don't forget to rebuild tcp.smtp.cdb from new tcp.smtp using tcprules!
* Also, read documentation about how to configure
attachment blocking and per domain processing.
Additional documentation can be found here:
http://qmailwiki.inter7.com/index.php?title=Simscan
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=

7
mail/simscan/pkg-plist Normal file
View file

@ -0,0 +1,7 @@
@cwd %%QMAIL_DIR%%
bin/simscanmk
bin/simscan
@unexec rmdir %%QMAIL_DIR%%/%%SIMSCAN_DIR%% || true
@unexec echo ""
@unexec echo "If you're not updating this port, you can delete %%QMAIL_DIR%%/%%SIMSCAN_DIR%% directory"
@unexec echo ""

36
mail/simscan/scripts/configure vendored Normal file
View file

@ -0,0 +1,36 @@
#!/bin/sh
#
# $FreeBSD$
USER=simscan
GROUP=${USER}
UID=74
GID=${UID}
echo adding simscan user
if pw group show "${GROUP}" 2>/dev/null; then
echo "You already have a group \"${GROUP}\", so I will use it."
else
if pw groupadd ${GROUP} -g ${GID}; then
echo "Added group \"${GROUP}\"."
else
echo "Adding group \"${GROUP}\" failed..."
exit 1
fi
fi
if pw user show "${USER}" 2>/dev/null; then
echo "You already have a user \"${USER}\", so I will use it."
else
if pw useradd ${USER} -u ${UID} -g ${GROUP} -h - \
-d /nonexistent -s /sbin/nologin -c "Simscan User"
then
echo "Added user \"${USER}\"."
else
echo "Adding user \"${USER}\" failed..."
exit 1
fi
fi