[Mimedefang] add_recipient and delete_recipient

J.J. Day day1234 at hotmail.com
Mon Jul 18 18:13:35 EDT 2016


From: MIMEDefang [mailto:mimedefang-bounces at lists.roaringpenguin.com] On Behalf Of Javier Kohan
Sent: Thursday, July 14, 2016 3:21 PM
To: mimedefang at lists.roaringpenguin.com
Subject: [Mimedefang] add_recipient and delete_recipient

Hello, Im  trying to use those functions in filter_recipient and they
seem not to work, at least in the way I use them.


The inteded use is to check incoming mail for some particular users in a
border gateway  and in case they match, rewrite their domain so
sendmail, via mailertable, can send  to another server instead.

Schematically

filter_recipient {
...
if( $recipient meets some condition ) {

    #  change userX at domain1.com to userX at domain2.com.
    #    change_domain() is checked to work
    $newrec=change_domain($recipient)    ;
    add_recipient($newrec);
    delete_recipient($recipient)  # $recipient is the unmodified
argument of filter_recipient
}
....
return ( 'CONTINUE', 'ok' );
}

I checked via md_syslog in various places: the match, the values of
$recipient and $newrec, but sendmail logs shows the address unmodified
and sends it to domain1`s server

Is there anything wrong on how I assume those functions do work ?. Are
they restricted to only some filter_* and don´t work in
filter_recipient, or anything else I can be missing ?

Thanks

Javier


I know that I am coming to the conversation late, but FWIW I do a similar process to redirect spam mail.
I am using FreeBSD, Sendmail, SpamAssassin 3.4.1 and mimedefang 2.78. I have been using this for some time so the versions should not be relevant.

Since my redirection is after the spam is detected, the code is in sub filter_end rather than filter_recipient.
	    if ($hits >= $req
	      or $Recipients[0] meets some condition
              )  {
                 md_graphdefang_log('spam', $hits, $RelayAddr);
		     action_change_header("X-Spam-Score", "$hits ($score) $names");
	 	     # add the SA report
		     action_add_part($entity, "text/plain", "-suggest", "$report\n",
				"SpamAssassinReport.txt", "inline");
	           #	then modify envelope to divert msg to the spam folder
	           #	these are envelope procs & do not modify msg headers
		     my($spamfolder) = "<spam.mail\@example.net>";
		     delete_recipient($Recipients[0]);
		     add_recipient("$spamfolder");

	        } else {

And the virtusertable entry for Sendmail is:
spam.mail at example.net		review+spam_mail

JJ





More information about the MIMEDefang mailing list