Mail-DMARC

 view release on metacpan or  search on metacpan

Changes.md  view on Meta::CPAN

- test: mock DNS during testing #213
- ci: restore CI tests to working order
- Force lower case for SPF domain input #212

### 1.20230215

- Fix error when logging a report which was skipped for size

### 1.20211209

- Properly delete sent reports when the database does not support cascade

### 1.20210927

- Fix reporting for selectors whose name evaluates to false
- Use maybestarttls for opportunistic encryption when sending reports using Email::Sender v2.0 or greater
- Remove dead domain dmarc-qa.com from tests
- Print full syntax guide with "--help" option (Jeremiah Morris)

### 1.20210427

lib/Mail/DMARC/Report/Store/SQL.pm  view on Meta::CPAN

        push @reports_todo, $agg;
    }
    return \@reports_todo;
}

sub delete_report {
    my $self = shift;
    my $report_id = shift or croak "missing report ID";
    print "deleting report $report_id\n" if $self->verbose;

    # deletes with FK don't cascade in SQLite? Clean each table manually
    my $rows = $self->query( $self->grammar->report_record_id, [$report_id] );
    my @row_ids = map { $_->{id} } @$rows;

    if (scalar @row_ids) {
        foreach my $table (qw/ report_record_spf report_record_dkim report_record_reason /) {
            print "deleting $table rows " . join(',', @row_ids) . "\n" if $self->verbose;
            eval { $self->query( $self->grammar->delete_from_where_record_in($table), \@row_ids); };
            # warn $@ if $@;
        }
    }
    foreach my $table (qw/ report_policy_published report_record report_error /) {
        print "deleting $table rows for report $report_id\n" if $self->verbose;
        eval { $self->query( $self->grammar->delete_from_where_report($table), [$report_id] ); };
        # warn $@ if $@;
    }

    # In MySQL, where FK constraints DO cascade, this is the only query needed
    $self->query( $self->grammar->delete_report, [$report_id] );
    return 1;
}

sub get_domain_id {
    my ( $self, $domain ) = @_;
    croak "missing domain calling " . ( caller(0) )[3] if !$domain;
    my $r = $self->query( $self->grammar->select_domain_id, [$domain] );
    if ( $r && scalar @$r ) {
        return $r->[0]{id};



( run in 0.555 second using v1.01-cache-2.11-cpan-49f99fa48dc )