Date: Tue, 14 Jul 2009 01:11:16 GMT From: Sahil Tandon <sahil@tandon.net> To: freebsd-gnats-submit@FreeBSD.org Subject: ports/136730: [MAINTAINER UPDATE] mail/postfix-postfwd: update to 1.14 + my mrcpt() patch Message-ID: <200907140111.n6E1BG1g052055@www.freebsd.org> Resent-Message-ID: <200907140120.n6E1K1fB013798@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 136730 >Category: ports >Synopsis: [MAINTAINER UPDATE] mail/postfix-postfwd: update to 1.14 + my mrcpt() patch >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: maintainer-update >Submitter-Id: current-users >Arrival-Date: Tue Jul 14 01:20:01 UTC 2009 >Closed-Date: >Last-Modified: >Originator: Sahil Tandon >Release: 7.1-RELEASE >Organization: >Environment: FreeBSD internal.hamla.org 7.1-RELEASE FreeBSD 7.1-RELEASE >Description: >From upstream changelog: - feature: new compare operators - feature: added --nodaemon option - code: non dns items first: if a rule contains dns and non dns items, the lookups will only be done if all non dns items matched - bugfix: empty pcre with empty sender_(ns|mx)_names was parsed incorrectly. - bugfix: negated pcre items with '~=' operator were parsed incorrectly. My patch: I created a quick patch to add a new rate-limiting feature: mrcpt(), maximum recipients per time window. It is disabled by default. I've submitted this to the developer who is currently on holidays and has agreed to look at adding this feature upstream. >How-To-Repeat: >Fix: Patch attached with submission follows: Index: Makefile =================================================================== RCS file: /home/ncvs/ports/mail/postfix-postfwd/Makefile,v retrieving revision 1.3 diff -u -r1.3 Makefile --- Makefile 6 Jul 2009 20:18:05 -0000 1.3 +++ Makefile 14 Jul 2009 00:50:58 -0000 @@ -6,7 +6,7 @@ # PORTNAME= postfwd -PORTVERSION= 1.13 +PORTVERSION= 1.14 CATEGORIES= mail MASTER_SITES= http://www.${PORTNAME}.org/old/ PKGNAMEPREFIX= postfix- @@ -23,14 +23,21 @@ SUB_FILES= pkg-message -USE_RC_SUBR= ${PORTNAME} +USE_RC_SUBR= ${PORTNAME} USE_PERL5_RUN= yes NO_BUILD= yes MAN8= ${PORTNAME}.8 +OPTIONS= MRCPT "Sahil's patch for max recipients per time window" off + .include <bsd.port.pre.mk> +.if defined(WITHOUT_MRCPT) +do-patch: + @${DO_NADA} +.endif + do-install: @${INSTALL_SCRIPT} ${WRKSRC}/sbin/${PORTNAME} ${PREFIX}/bin/ @${INSTALL_DATA} ${WRKSRC}/etc/${PORTNAME}.cf.sample ${PREFIX}/etc/${PORTNAME}.conf.sample @@ -46,5 +53,18 @@ @${INSTALL_DATA} ${WRKSRC}/tools/${PORTEXAMPLES} ${EXAMPLESDIR} .endif @${CAT} ${PKGMESSAGE} +.if !defined(WITHOUT_MRCPT) + @${ECHO_MSG} + @${ECHO_MSG} The mrcpt\(\) command works like the rate\(\) command, + @${ECHO_MSG} except that the rate counter is incremented by the + @${ECHO_MSG} request\'s recipient_count. To do this reliably, + @${ECHO_MSG} call postfwd from smtpd_data_restrictions. + @${ECHO_MSG} + @${ECHO_MSG} Example: + @${ECHO_MSG} " id=MAX_RECIPIENTS; protocol_state=DATA; \\ " + @${ECHO_MSG} " client_address==192.168.1.1; \\ " + @${ECHO_MSG} " action==mrcpt(\$$\$$client_address/5/3600/450 4.7.1 max 5 recip/hour) " + @${ECHO_MSG} +.endif .include <bsd.port.post.mk> Index: distinfo =================================================================== RCS file: /home/ncvs/ports/mail/postfix-postfwd/distinfo,v retrieving revision 1.3 diff -u -r1.3 distinfo --- distinfo 6 Jul 2009 20:18:05 -0000 1.3 +++ distinfo 14 Jul 2009 00:50:58 -0000 @@ -1,3 +1,3 @@ -MD5 (postfwd-1.13.tar.gz) = 4790bdc66509f504dac38a0ef67033e1 -SHA256 (postfwd-1.13.tar.gz) = 5d8571ce6e3e5d2802e94a5c784a873822fd5b010d6e98b32c66e3dfd583defa -SIZE (postfwd-1.13.tar.gz) = 94497 +MD5 (postfwd-1.14.tar.gz) = 24feb8cd2c0fea566603a6ba1a38caea +SHA256 (postfwd-1.14.tar.gz) = 9810609239633021ea87fab48431adc23d61445e5c9fc997cad0cba10a0428c4 +SIZE (postfwd-1.14.tar.gz) = 95061 Index: files/patch-sbin-postfwd =================================================================== RCS file: files/patch-sbin-postfwd diff -N files/patch-sbin-postfwd --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ files/patch-sbin-postfwd 14 Jul 2009 00:50:58 -0000 @@ -0,0 +1,42 @@ +--- sbin/postfwd.orig 2009-06-29 05:36:15.000000000 -0400 ++++ sbin/postfwd 2009-07-09 22:56:26.000000000 -0400 +@@ -1229,7 +1229,7 @@ + type => $mycmd, + maxcount => $ratecount, + ttl => $ratetime, +- count => ( ($mycmd eq 'size') ? $request{size} : 1 ), ++ count => (($mycmd eq 'size') ? $request{size} : (($mycmd eq 'mrcpt') ? $request{recipient_count} : 1)), + time => $now, + rule => $Rules[$index]{$COMP_ID}, + action => $ratecmd, +@@ -1246,6 +1246,8 @@ + }, + # size() command + "size" => sub { return &{$postfwd_actions{rate}}(@_); }, ++ # mrcpt() command ++ "mrcpt" => sub { return &{$postfwd_actions{rate}}(@_); }, + # wait() command + "wait" => sub { + my($index,$now,$mycmd,$myarg,$myline,%request) = @_; +@@ -1724,7 +1726,9 @@ + next RATES unless ( $request{$checkreq} and (defined $Rates{$request{$checkreq}}) ); + if ( ($now - $Rates{$request{$checkreq}}{"time"}) > $Rates{$request{$checkreq}}{ttl} ) { + # renew rate +- $Rates{$request{$checkreq}}{count} = ( ($Rates{$request{$checkreq}}{type} eq 'size') ? $request{size} : 1 ); ++ $Rates{$request{$checkreq}}{count} = ( ($Rates{$request{$checkreq}}{type} eq 'size') ++ ? $request{size} : (($Rates{$request{$checkreq}}{type} eq 'mrcpt') ++ ? $request{recipient_count} : 1) ); + $Rates{$request{$checkreq}}{"time"} = $now; + mylogs $syslog_priority, "[RATE] renewing rate object ".$request{$checkreq} + ." [type: ".$Rates{$request{$checkreq}}{type} +@@ -1733,7 +1737,9 @@ + if ($opt_verbose > 1); + } else { + # increase rate +- $Rates{$request{$checkreq}}{count} += ( ($Rates{$request{$checkreq}}{type} eq 'size') ? $request{size} : 1 ); ++ $Rates{$request{$checkreq}}{count} += (($Rates{$request{$checkreq}}{type} eq 'size') ++ ? $request{size} : (($Rates{$request{$checkreq}}{type} eq 'mrcpt') ++ ? $request{recipient_count} : 1)); + mylogs $syslog_priority, "[RATE] increasing rate object ".$request{$checkreq} + ." to ".$Rates{$request{$checkreq}}{count} + ." [type: ".$Rates{$request{$checkreq}}{type} Index: files/pkg-message.in =================================================================== RCS file: /home/ncvs/ports/mail/postfix-postfwd/files/pkg-message.in,v retrieving revision 1.2 diff -u -r1.2 pkg-message.in --- files/pkg-message.in 6 Jul 2009 20:18:05 -0000 1.2 +++ files/pkg-message.in 14 Jul 2009 00:50:58 -0000 @@ -3,7 +3,7 @@ # %%PREFIX%%/etc/rc.d/postfwd start -* Integrate thusly in: %%PREFIX%%/etc/postfix/main.cf +* Integrate thusly in: %%LOCALBASE%%/etc/postfix/main.cf 127.0.0.1:10040_time_limit = 3600 >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200907140111.n6E1BG1g052055>