Mail::DMARC::Iterator

This module can be used to validate mails against DMARC policies like
specified in RFC 7208.  The main difference to Mail::DMARC is that it
does no blocking operations.  Instead it implements a state machine
where user input is fed into and instructions what the machine wants is
returned.  The state machine only wants the data from the mail and the
result of specific DNS lookups. With each new data fed into the machine
it will provide new information what it needs next, until it finally
has enough input and returns the final result.  Because of this design
the DMARC policy validation can be easily integrated into event-driven
programs or coupled with a specific DNS resolver.

Mail::DMARC::Iterator uses the similarly designed modules
Mail::DKIM::Iterator and Mail::SPF::Iterator to provide the necessary
functionality of validating against DKIM and SPF records.

Mail::DMARC::Iterator currently only validates a mail against the
policy. It does not provide any kind of feedback to the owner of the
domain, i.e. feedback based on the "ruf" and "rua" attributes of the
DMARC policy is not implemented. One can still access the necessary
information using the "record" method.