-PublicInbox::MDA->set_list_headers($mime, $dst);
-my $v = $dst->{version} || 1;
-my $im;
-if ($v == 2) {
- require PublicInbox::V2Writable;
- $im = PublicInbox::V2Writable->new($dst);
- $im->{parallel} = 0; # pointless to be parallel for a single message
-} elsif ($v == 1) {
- my $git = $dst->git;
- $im = PublicInbox::Import->new($git, $dst->{name}, $recipient, $dst);
-} else {
- die "Unsupported inbox version: $v\n";
+my @rejects;
+for my $ibx (@$dests) {
+ mda_filter_adjust($ibx);
+ my $filter = $ibx->filter;
+ my $mime = PublicInbox::Eml->new($str);
+ my $ret = $filter->delivery($mime);
+ if (ref($ret) && ($ret->isa('PublicInbox::Eml') ||
+ $ret->isa('Email::MIME'))) { # filter altered message
+ $mime = $ret;
+ } elsif ($ret == PublicInbox::Filter::Base::IGNORE) {
+ next; # nothing, keep looping
+ } elsif ($ret == PublicInbox::Filter::Base::REJECT) {
+ push @rejects, $filter->err;
+ next;
+ }
+
+ PublicInbox::MDA->set_list_headers($mime, $ibx);
+ my $im = $ibx->importer(0);
+ if (defined $im->add($mime)) {
+ # ->abort is idempotent, no emergency if a single
+ # destination succeeds
+ $emm->abort;
+ } else { # v1-only
+ my $mid = $mime->header_raw('Message-ID');
+ # this message is similar to what ssoma-mda shows:
+ print STDERR "CONFLICT: Message-ID: $mid exists\n";
+ }
+ $im->done;