}
my $sender = $get_real_sender->($ref);
- my $username = $ref->{pmail};
if ($action eq 'whitelist') {
- PMG::Quarantine::add_to_blackwhite($dbh, $username, 'WL', [ $sender ]);
+ PMG::Quarantine::add_to_blackwhite($dbh, $pmail, 'WL', [ $sender ]);
} elsif ($action eq 'blacklist') {
- PMG::Quarantine::add_to_blackwhite($dbh, $username, 'BL', [ $sender ]);
+ PMG::Quarantine::add_to_blackwhite($dbh, $pmail, 'BL', [ $sender ]);
} elsif ($action eq 'deliver') {
- PMG::Quarantine::deliver_quarantined_mail($dbh, $ref, $pmail);
+ PMG::Quarantine::deliver_quarantined_mail($dbh, $ref, $ref->{receiver} // $pmail);
} elsif ($action eq 'delete') {
- PMG::Quarantine::delete_quarantined_mail($dbh, $ref, $pmail);
+ PMG::Quarantine::delete_quarantined_mail($dbh, $ref, $ref->{receiver} // $pmail);
} else {
die "internal error"; # should not be reached
}
}
sub deliver_quarantined_mail {
- my ($dbh, $ref, $target) = @_;
+ my ($dbh, $ref, $receiver) = @_;
my $filename = $ref->{file};
my $spooldir = $PMG::MailQueue::spooldir;
die sprintf("smtp from error - got: %s %s\n", $smtp->code, $smtp->message);
}
- if (!$smtp->to($target)) {
+ if (!$smtp->to($receiver)) {
die sprintf("smtp to error - got: %s %s\n", $smtp->code, $smtp->message);
}
my $sth = $dbh->prepare(
"UPDATE CMSReceivers SET Status='D', MTime = ? " .
- "WHERE CMailStore_CID = ? AND CMailStore_RID = ? AND PMail = ?");
- $sth->execute(time(), $ref->{cid}, $ref->{rid}, $target);
+ "WHERE CMailStore_CID = ? AND CMailStore_RID = ? AND (PMail = ? OR Receiver = ?)");
+ $sth->execute(time(), $ref->{cid}, $ref->{rid}, $receiver, $receiver);
$sth->finish;
};
my $err = $@;
}
sub delete_quarantined_mail {
- my ($dbh, $ref, $target) = @_;
+ my ($dbh, $ref, $receiver) = @_;
my $filename = $ref->{file};
my $spooldir = $PMG::MailQueue::spooldir;
eval {
my $sth = $dbh->prepare(
"UPDATE CMSReceivers SET Status='D', MTime = ? WHERE " .
- "CMailStore_CID = ? AND CMailStore_RID = ? AND PMail = ?");
- $sth->execute (time(), $ref->{cid}, $ref->{rid}, $target);
+ "CMailStore_CID = ? AND CMailStore_RID = ? AND (PMail = ? OR Receiver = ?)");
+ $sth->execute (time(), $ref->{cid}, $ref->{rid}, $receiver, $receiver);
$sth->finish;
};
if (my $err = $@) {