Mail-DMARC

 view release on metacpan or  search on metacpan

CHANGELOG.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

        $self->populate_agg_records( \$agg, $report->{rid} );
        push @reports_todo, $agg;
    }
    return \@reports_todo;
}

sub delete_report( $self, $report_id = undef ) {
    $report_id 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 (@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 {

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

    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( $self, $domain ) {
    croak "missing domain calling " . ( caller(0) )[3] if !$domain;
    my $r = $self->query( $self->grammar->select_domain_id, [$domain] );
    if ( $r && @$r ) {
        return $r->[0]{id};
    }



( run in 1.493 second using v1.01-cache-2.11-cpan-df04353d9ac )