gcc -g -O2 -Wall -Wstrict-prototypes -pthread -o mimedefang mimedefang.o drop_privs_threaded.o utils.o rm_r.o syslog-fac.o dynbuf.o milter_cap.o gen_id.o -L../sendmail-8.14.5.Alpha0/obj.Linux.2.6.34.i686/libmilter -lmilter -lpthread -lnsl ../sendmail-8.14.5.Alpha0/obj.Linux.2.6.34.i686/libmilter/libmilter.a(listener.o)(.text+0x5d5): In function `mi_milteropen': : undefined reference to `freehostent' collect2: ld returned 1 exit status make: *** [mimedefang] Error 1
Needs "-lbind" when freehostent (3) is defined in libbind and NOT "stubbed" in libmilter. See http://www.isc.org/software/libbind - version 6.0. All other references to "bounce" (vs. reject) seem to be in documentation files. I leave that for you to change. Here is a unified-diff to the operational files for that change: --- mimedefang.pl.in 2010-06-17 01:49:19.000000000 +0000 +++ mimedefang.pl.in 2010-06-17 01:55:59.000000000 +0000 @@ -1135,13 +1135,13 @@ # %ARGUMENTS: # None # %RETURNS: -# True if message has been rejected (with action_bounce or action_tempfail); +# True if message has been rejected (with action_reject or action_tempfail); # false otherwise. #*********************************************************************** sub message_rejected () { return 0 if (!in_message_context("message_rejected")); return (defined($Actions{'tempfail'}) || - defined($Actions{'bounce'}) || + defined($Actions{'reject'}) || defined($Actions{'discard'})); } @@ -1477,6 +1477,19 @@ return 1; } +sub action_reject ($;$$) { + my($reply, $code, $dsn) = @_; + return 0 if (!in_message_context("action_reject")); + + $reply = "Forbidden for policy reasons" unless (defined($reply) and ($reply ne "")); + $code = 554 unless (defined($code) and $code =~ /^5\d\d$/); + $dsn = "5.7.1" unless (defined($dsn) and $dsn =~ /^5\.\d{1,3}\.\d{1,3}$/); + + write_result_line('B', $code, $dsn, $reply); + $Actions{'reject'}++; + return 1; +} + #*********************************************************************** # %PROCEDURE: action_bounce # %ARGUMENTS: @@ -1486,21 +1499,11 @@ # %RETURNS: # Nothing # %DESCRIPTION: -# Causes the SMTP transaction to fail with an SMTP 554 failure code and the -# specified reply text. If code or DSN are omitted or invalid, -# use 554 and 5.7.1. +# Backwards-compatible function call name for actin_reject() for versions +# of MIMEDefang prior to 2.70. #*********************************************************************** sub action_bounce ($;$$) { - my($reply, $code, $dsn) = @_; - return 0 if (!in_message_context("action_bounce")); - - $reply = "Forbidden for policy reasons" unless (defined($reply) and ($reply ne "")); - $code = 554 unless (defined($code) and $code =~ /^5\d\d$/); - $dsn = "5.7.1" unless (defined($dsn) and $dsn =~ /^5\.\d{1,3}\.\d{1,3}$/); - - write_result_line('B', $code, $dsn, $reply); - $Actions{'bounce'}++; - return 1; + action_reject(@_); } #*********************************************************************** @@ -2286,7 +2289,7 @@ foreach $recip (@Recipients) { if (!resend_message_one_recipient($recip)) { md_syslog('crit', 'stream_by_recipient: COULD NOT RESEND MESSAGE - PLEASE INVESTIGATE'); - action_bounce("Unable to stream message"); + action_reject("Unable to stream message"); # We return 1 to avoid rest of filter return 1; @@ -2334,7 +2337,7 @@ foreach $key (keys %Domains) { if (!resend_message(@{$Domains{$key}})) { md_syslog('crit', 'stream_by_domain: COULD NOT RESEND MESSAGE - PLEASE INVESTIGATE'); - action_bounce("Unable to stream message"); + action_reject("Unable to stream message"); # We return 1 to avoid rest of filter return 1; @@ -5887,8 +5890,8 @@ close FILE; if (!defined($entity) && $MaxMIMEParts > 0) { - # Message is too complex; bounce it - action_bounce("Message contained too many MIME parts. We do not accept such complicated messages."); + # Message is too complex; reject it + action_reject("Message contained too many MIME parts. We do not accept such complicated messages."); signal_unchanged(); signal_complete(); return; --- mimedefang.c 2010-06-16 19:08:24.000000000 +0000 +++ mimedefang.c 2010-06-17 02:15:42.000000000 +0000 @@ -1662,7 +1662,7 @@ if (*rptr == 'T' || *rptr == 'D' || *rptr == 'B') { - /* We are tempfailing, discarding or bouncing the message */ + /* We are tempfailing, discarding or rejecting the message */ rejecting = 1; break; } @@ -1701,8 +1701,8 @@ switch(*rptr) { case 'B': - /* Bounce */ - syslog(LOG_DEBUG, "%s: Bouncing because filter instructed us to", + /* Reject */ + syslog(LOG_DEBUG, "%s: Rejecting because filter instructed us to", data->qid); split_on_space3(rptr+1, &code, &dsn, &reply); percent_decode(code); _______________________________________________ NOTE: If there is a disclaimer or other legal boilerplate in the above message, it is NULL AND VOID. You may ignore it. Visit http://www.mimedefang.org and http://www.roaringpenguin.com MIMEDefang mailing list [email protected] http://lists.roaringpenguin.com/mailman/listinfo/mimedefang

