On Wed, Jan 18, 2006 at 06:14:51PM +0100, Johan Almqvist wrote:
>Here's my first own plugin. I'd be grateful for any hints on the  
>coding style etc.
>
>What it does: It will only accept messages with an envelope sender of  
><> if the recipient is listed in the  acceptbounce  config file (or  
>if that file doesn't exist, to protect from configuration errors  
>etc). You can either add local parts or full addresses to the   
>acceptbounce  file (mine contains:
>postmaster
>abuse
>webmaster
>and my own e-mail
>)

I like this idea but it would be more useful for me if this took regexes
rather than exact strings.

Although, actually, hmm.  I would want to be able to somehow say
something like "deny bounces to everything but...".  That would allow ezmlm's
automatic unsubscribe to work while blocking spam bounces to everybody else.

I guess that would involve a more complicated config file syntax, though.

cgf

>--- snipsnap ---
>
>sub hook_mail {
>  my ($self, $transaction, $sender) = @_;
>
>  return (DECLINED) unless ($sender->format eq "<>");
>
>  $self->log(LOGDEBUG, "sender is <>");
>  $transaction->notes('bounce',1);
>
>  return (DECLINED);
>}
>
>sub hook_rcpt {
>  my ($self, $transaction, $rcpt) = @_;
>  my $note = $transaction->notes('bounce');
>  return DECLINED unless $note;
>
>  my @acceptbounce = $self->qp->config("acceptbounce");
>  return DECLINED unless (@acceptbounce);
>  # Can't do this on one line becuase config is dependent on wantarray
>
>  my $user = lc($rcpt->user);
>  my $addr = $user . '@' . lc($rcpt->host);
>
>  foreach my $to (@acceptbounce) {
>       chomp $to;
>       return DECLINED if ($user eq $to);
>       return DECLINED if ($addr eq $to);
>  }
>  $self->log(LOGDEBUG, "not accepting bounces for $addr");
>  return (DENY, "sorry, this address never sends mail ".
>                "and therefore does not accept bounces");
>}
>

Reply via email to