aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabor Kovesdan <gabor@FreeBSD.org>2009-09-12 18:51:59 +0000
committerGabor Kovesdan <gabor@FreeBSD.org>2009-09-12 18:51:59 +0000
commite7ea61e845f83cc4e22bab7b9713fafc9959dbf9 (patch)
tree68fdc4d17b8f79cebd6f95598eb16a038b4f9c20
parent93f2d26ba57341c644c255565ae07e3c0da5e707 (diff)
downloadports-e7ea61e845f83cc4e22bab7b9713fafc9959dbf9.tar.gz
ports-e7ea61e845f83cc4e22bab7b9713fafc9959dbf9.zip
Notes
-rw-r--r--security/amavisd-new/Makefile24
-rw-r--r--security/amavisd-new/files/amavisd-snmp.sh.in36
-rw-r--r--security/amavisd-new/files/patch-amavisd72
-rw-r--r--security/amavisd-new/pkg-plist2
4 files changed, 127 insertions, 7 deletions
diff --git a/security/amavisd-new/Makefile b/security/amavisd-new/Makefile
index 6d9fa0049ae8..090b1787a3a2 100644
--- a/security/amavisd-new/Makefile
+++ b/security/amavisd-new/Makefile
@@ -8,7 +8,7 @@
PORTNAME= amavisd-new
PORTVERSION= 2.6.4
-PORTREVISION= 1
+PORTREVISION= 2
PORTEPOCH= 1
CATEGORIES= security
MASTER_SITES= http://www.ijs.si/software/amavisd/ \
@@ -37,8 +37,8 @@ CONFIGURE_ARGS= --with-user=${AMAVISUSER} --with-runtime-dir=${AMAVISDIR}
CONFIGURE_WRKSRC= ${WRKSRC}/helper-progs
BUILD_WRKSRC= ${WRKSRC}/helper-progs
-DOCS= AAAREADME.first INSTALL LDAP.schema LICENSE RELEASE_NOTES \
- README_FILES/README.* README_FILES/screen.css \
+DOCS= AAAREADME.first AMAVIS-MIB.txt INSTALL LDAP.schema LICENSE \
+ RELEASE_NOTES README_FILES/README.* README_FILES/screen.css \
README_FILES/amavisd-new-docs.html
AMAVISUSER?= vscan
@@ -48,6 +48,7 @@ AMAVISQUARANTINE?= /var/virusmails
DAEMON?= /usr/sbin/daemon -p
OPTIONS= BDB "Use BerkeleyDB for nanny/cache/snmp" on \
+ SNMP "Install amavisd snmp subagent" off \
SQLITE "Use SQLite for lookups" off \
MYSQL "Use MySQL for lookups/logging/quarantine" off \
PGSQL "Use PgSQL for lookups/logging/quarantine" off \
@@ -81,16 +82,22 @@ SUB_LIST+= AMAVISUSER=${AMAVISUSER} \
AMAVISGROUP=${AMAVISGROUP} \
AMAVISDIR=${AMAVISDIR} \
AMAVISQUARANTINE=${AMAVISQUARANTINE} \
- DAEMON="${DAEMON}"
+ DAEMON="${DAEMON}" \
+ PERL=${PERL}
PLIST_SUB+= AMAVIS_NOAMAVIS=${AMAVIS_NOAMAVIS} \
AMAVIS_NOMILTER=${AMAVIS_NOMILTER} \
AMAVIS_NOP0F=${AMAVIS_NOP0F}
-.include <bsd.port.pre.mk>
+.include <bsd.port.options.mk>
USE_RC_SUBR+= amavisd.sh
+.if defined(WITH_SNMP) && defined(WITH_BDB)
+USE_RC_SUBR+= amavisd-snmp.sh
+RUN_DEPENDS+= ${SITE_PERL}/Net/SNMP.pm:${PORTSDIR}/net-mgmt/p5-Net-SNMP
+.endif
+
.if !defined(WITH_MILTER) || (!exists(/usr/lib/libmilter.a) && !exists(${PREFIX}/lib/libmilter.a))
AMAVIS_NOAMAVIS="@comment "
.endif
@@ -239,12 +246,15 @@ post-patch:
.endfor
@${REINPLACE_CMD} "s|/var/amavis/db|${AMAVISDIR}/db|" ${WRKSRC}/amavisd-agent
@${REINPLACE_CMD} "s|/var/amavis/db|${AMAVISDIR}/db|" ${WRKSRC}/amavisd-nanny
+ @${REINPLACE_CMD} -e "s|/var/amavis/db|${AMAVISDIR}/db|" \
+ -e "s|/usr/bin/perl|${PERL}|" ${WRKSRC}/amavisd-snmp-subagent
@${REINPLACE_CMD} "s|/var/amavis/amavisd.sock|${AMAVISDIR}/amavisd.sock|" \
${WRKSRC}/amavisd-release
@${REINPLACE_CMD} "s|#define HAVE_MKTEMP|#undef HAVE_MKTEMP|" \
${WRKSRC}/helper-progs/config.h.in
@${REINPLACE_CMD} -e "s|/etc/amavisd.conf|${PREFIX}/etc/amavisd.conf|" \
-e "s|/usr/bin/perl|${PERL}|" \
+ -e "s|/var/amavis|${AMAVISDIR}|g" \
${WRKSRC}/amavisd
.if defined(AMAVIS_NOAMAVIS)
@@ -266,7 +276,7 @@ do-install:
.if defined(WITH_P0F)
${INSTALL_SCRIPT} ${WRKSRC}/p0f-analyzer.pl ${PREFIX}/sbin
.endif
-.for i in amavisd amavisd-agent amavisd-nanny amavisd-release
+.for i in amavisd amavisd-agent amavisd-nanny amavisd-release amavisd-snmp-subagent
${INSTALL_SCRIPT} ${WRKSRC}/${i} ${PREFIX}/sbin
.endfor
${INSTALL_SCRIPT} ${WRKSRC}/amavisd.conf ${PREFIX}/etc/amavisd.conf-dist
@@ -295,4 +305,4 @@ post-install:
${LN} -s ${PREFIX}/sbin/amavisd-release ${PREFIX}/sbin/amavisd-requeue
@${CAT} ${PKGMESSAGE}
-.include <bsd.port.post.mk>
+.include <bsd.port.mk>
diff --git a/security/amavisd-new/files/amavisd-snmp.sh.in b/security/amavisd-new/files/amavisd-snmp.sh.in
new file mode 100644
index 000000000000..60a174db49a7
--- /dev/null
+++ b/security/amavisd-new/files/amavisd-snmp.sh.in
@@ -0,0 +1,36 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+# PROVIDE: amavisd_snmp
+# REQUIRE: snmpd
+# KEYWORD: shutdown
+
+#
+# Add the following lines to /etc/rc.conf to enable amavisd-snmp-subagent:
+#
+# amavisd_snmp_enable="YES"
+#
+
+. /etc/rc.subr
+
+name=amavisd_snmp
+rcvar=`set_rcvar`
+
+command="%%PREFIX%%/sbin/amavisd-snmp-subagent"
+command_interpreter="%%PERL%%"
+pidfile="%%AMAVISDIR%%/amavisd-snmp.pid"
+
+# defaults
+amavisd_snmp_enable=${amavisd_snmp_enable:-"NO"}
+# amavis database directory
+amavisd_snmp_dbdir=${amavisd_snmp_dbdir:-"%%AMAVISDIR%%/db"}
+# log_level 0..5, default 0
+amavisd_snmp_loglevel=${amavisd_snmp_loglevel:-"0"}
+
+load_rc_config $name
+
+required_dirs=${amavisd_snmp_dbdir}
+amavisd_snmp_flags="-D ${amavisd_snmp_dbdir} -d ${amavisd_snmp_loglevel} -P ${pidfile}"
+run_rc_command "$1"
diff --git a/security/amavisd-new/files/patch-amavisd b/security/amavisd-new/files/patch-amavisd
new file mode 100644
index 000000000000..c79491a8c807
--- /dev/null
+++ b/security/amavisd-new/files/patch-amavisd
@@ -0,0 +1,72 @@
+--- amavisd.orig 2009-06-25 14:39:01.000000000 +0200
++++ amavisd 2009-08-01 13:51:53.000000000 +0200
+@@ -1492,6 +1492,7 @@
+ CC_BANNED, sub { c('final_banned_destiny') },
+ CC_SPAM, sub { c('final_spam_destiny') },
+ CC_BADH, sub { c('final_bad_header_destiny') },
++ CC_MTA.',2', D_REJECT,
+ CC_OVERSIZED, D_BOUNCE,
+ CC_CATCHALL, D_PASS,
+ );
+@@ -11316,6 +11317,32 @@
+ $r->blocking_ccat($blocking_ccat) if !defined($r->blocking_ccat);
+ $msginfo->blocking_ccat($blocking_ccat)
+ if !defined($msginfo->blocking_ccat);
++ my($final_destiny) =
++ $r->setting_by_contents_category(cr('final_destiny_by_ccat'));
++ if ($final_destiny == D_PASS) {
++ $final_destiny = D_REJECT; # impossible to pass, change to reject
++ }
++ local($1,$2);
++ $r->recip_destiny($final_destiny);
++ if ($final_destiny == D_DISCARD && $smtp_resp =~ /^5/) {
++ $smtp_resp =~ s{^5(\d\d) 5(\.\d\.\d)}{250 2$2}; # 5xx -> 250
++ }
++ my($smtp_reason) = # get the custom smtp response reason text
++ $r->setting_by_contents_category(cr('smtp_reason_by_ccat'));
++ $smtp_reason = '' if !defined $smtp_reason;
++ if ($smtp_reason ne '') {
++ my(%mybuiltins) = %builtins; # make a local copy
++ $smtp_reason = expand(\$smtp_reason, \%mybuiltins);
++ $smtp_reason = !ref($smtp_reason) ? '' : $$smtp_reason;
++ chomp($smtp_reason); $smtp_reason = sanitize_str($smtp_reason,1);
++ $smtp_reason = substr($smtp_reason,0,100) . "..."
++ if length($smtp_reason) > 100+3;
++ }
++ $smtp_resp =~ /^(\d\d\d(?: \d\.\d\.\d)?)\s*(.*)\z/;
++ my($dis) = $final_destiny == D_DISCARD ? ' Discarded' : '';
++ $r->recip_smtp_response("$1$dis $smtp_reason, $2");
++ $r->recip_done(1); # fake a delivery (confirm delivery to a bit bucket)
++ # note that 5xx status rejects may later be converted to bounces
+ }
+ $msginfo->header_edits($hdr_edits); # restore original edits just in case
+ $elapsed{'TimeElapsedForwarding'} = Time::HiRes::time - $t0_sect;
+@@ -17774,23 +17801,21 @@
+ #
+ sub enhance_smtp_response($$$$$) {
+ my($smtp_resp,$am_id,$mta_id,$dflt_enhcode,$cmd_name) = @_;
+- local($1,$2,$3); my($resp_shortmsg,$resp_msg);
++ local($1,$2,$3); my($resp_msg);
+ my($resp_code,$resp_enhcode) = ('451', '4.5.0');
+ if (!defined($smtp_resp) || $smtp_resp eq '') {
+- $resp_shortmsg = 'No resp. to '.$cmd_name;
++ $smtp_resp = sprintf('No resp. to %s', $cmd_name);
+ } elsif ($smtp_resp !~ /^[245]\d{2}/) {
+- $resp_shortmsg = 'Bad resp. to '.$cmd_name;
++ $smtp_resp = sprintf('Bad resp. to %s: %s', $cmd_name,$smtp_resp);
+ } elsif ($smtp_resp =~ /^ (\d{3}) [ \t]+ ([245] \. \d{1,3} \. \d{1,3})?
+ \s* (.*) \z/xs) {
+ ($resp_code, $resp_enhcode, $resp_msg) = ($1, $2, $3);
+ my($c) = substr($resp_code,0,1);
+ if ($resp_enhcode eq '' && $resp_code =~ /^[245]/)
+ { $resp_enhcode = $dflt_enhcode; $resp_enhcode =~ s/^\d*/$c/ }
+- $resp_shortmsg = $c eq '2' ? 'Ok' : $c eq '4' ? 'TempFailed' : 'Failed';
+ }
+- sprintf("%s %s %s, id=%s, from MTA(%s): %s",
+- $resp_code, $resp_enhcode, $resp_shortmsg,
+- $am_id, $mta_id, $smtp_resp);
++ sprintf("%s %s from MTA(%s): %s",
++ $resp_code, $resp_enhcode, $mta_id, $smtp_resp);
+ }
+
+ # Send mail using SMTP - single transaction
diff --git a/security/amavisd-new/pkg-plist b/security/amavisd-new/pkg-plist
index 22b770f750c4..c9468ec5feec 100644
--- a/security/amavisd-new/pkg-plist
+++ b/security/amavisd-new/pkg-plist
@@ -1,6 +1,7 @@
@comment $FreeBSD$
@unexec if cmp -s %%PREFIX%%/etc/amavisd-custom.conf %%PREFIX%%/etc/amavisd-custom.conf-dist; then rm %%PREFIX%%/etc/amavisd-custom.conf; fi
%%PORTDOCS%%%%DOCSDIR%%/AAAREADME.first
+%%PORTDOCS%%%%DOCSDIR%%/AMAVIS-MIB.txt
%%PORTDOCS%%%%DOCSDIR%%/INSTALL
%%PORTDOCS%%%%DOCSDIR%%/LDAP.schema
%%PORTDOCS%%%%DOCSDIR%%/LICENSE
@@ -79,3 +80,4 @@ sbin/amavisd-agent
sbin/amavisd-nanny
sbin/amavisd-release
sbin/amavisd-requeue
+sbin/amavisd-snmp-subagent