Add a hook for the DATA command
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@269 958fd67b-6ff1-0310-b445-bb7760255be9
This commit is contained in:
parent
de9a7fa02a
commit
c60710e871
@ -2,7 +2,7 @@ package Qpsmtpd::Plugin;
|
|||||||
use strict;
|
use strict;
|
||||||
|
|
||||||
my %hooks = map { $_ => 1 } qw(
|
my %hooks = map { $_ => 1 } qw(
|
||||||
config queue data_post quit rcpt mail ehlo helo
|
config queue data data_post quit rcpt mail ehlo helo
|
||||||
auth auth-plain auth-login auth-cram-md5
|
auth auth-plain auth-login auth-cram-md5
|
||||||
connect reset_transaction unrecognized_command disconnect
|
connect reset_transaction unrecognized_command disconnect
|
||||||
);
|
);
|
||||||
|
@ -365,7 +365,35 @@ sub data {
|
|||||||
my $self = shift;
|
my $self = shift;
|
||||||
$self->respond(503, "MAIL first"), return 1 unless $self->transaction->sender;
|
$self->respond(503, "MAIL first"), return 1 unless $self->transaction->sender;
|
||||||
$self->respond(503, "RCPT first"), return 1 unless $self->transaction->recipients;
|
$self->respond(503, "RCPT first"), return 1 unless $self->transaction->recipients;
|
||||||
$self->respond(354, "go ahead");
|
|
||||||
|
my ($rc, $msg) = $self->run_hooks("data");
|
||||||
|
if ($rc == DONE) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
elsif ($rc == DENY) {
|
||||||
|
$self->respond(554, $msg || "Message denied");
|
||||||
|
$self->reset_transaction();
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
elsif ($rc == DENYSOFT) {
|
||||||
|
$self->respond(451, $msg || "Message denied temporarily");
|
||||||
|
$self->reset_transaction();
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
elsif ($rc == DENY_DISCONNECT) {
|
||||||
|
$self->respond(554, $msg || "Message denied");
|
||||||
|
$self->disconnect;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
elsif ($rc == DENYSOFT_DISCONNECT) {
|
||||||
|
$self->respond(451, $msg || "Message denied temporarily");
|
||||||
|
$self->disconnect;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$self->respond(354, "go ahead");
|
||||||
|
}
|
||||||
|
|
||||||
my $buffer = '';
|
my $buffer = '';
|
||||||
my $size = 0;
|
my $size = 0;
|
||||||
my $i = 0;
|
my $i = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user