#!perl -Tw # this plugin checks the badrcptto config (like badmailfrom, but for rcpt address # rather than sender address) use Qpsmtpd::DSN; sub hook_rcpt { my ($self, $transaction, $recipient, %param) = @_; my @badrcptto = $self->qp->config("badrcptto") or return (DECLINED); return (DECLINED) unless $recipient->host && $recipient->user; my $host = lc $recipient->host; my $to = lc($recipient->user) . '@' . $host; for my $bad (@badrcptto) { $bad = lc $bad; $bad =~ s/^\s*(\S+)/$1/; return Qpsmtpd::DSN->no_such_user("mail to $bad not accepted here") if $bad eq $to; return Qpsmtpd::DSN->no_such_user("mail to $bad not accepted here") if substr($bad,0,1) eq '@' && $bad eq "\@$host"; } return (DECLINED); }