diff options
author | Gabor Kovesdan <gabor@FreeBSD.org> | 2009-09-12 18:51:59 +0000 |
---|---|---|
committer | Gabor Kovesdan <gabor@FreeBSD.org> | 2009-09-12 18:51:59 +0000 |
commit | e7ea61e845f83cc4e22bab7b9713fafc9959dbf9 (patch) | |
tree | 68fdc4d17b8f79cebd6f95598eb16a038b4f9c20 | |
parent | 93f2d26ba57341c644c255565ae07e3c0da5e707 (diff) | |
download | ports-e7ea61e845f83cc4e22bab7b9713fafc9959dbf9.tar.gz ports-e7ea61e845f83cc4e22bab7b9713fafc9959dbf9.zip |
Notes
-rw-r--r-- | security/amavisd-new/Makefile | 24 | ||||
-rw-r--r-- | security/amavisd-new/files/amavisd-snmp.sh.in | 36 | ||||
-rw-r--r-- | security/amavisd-new/files/patch-amavisd | 72 | ||||
-rw-r--r-- | security/amavisd-new/pkg-plist | 2 |
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 |