opendmarc_spf_test()
May be called anytime all its needed information is gathered. The envelope sender (MAIL From: or mlfi_envfrom)
is the earliest it can be called. The mlfi_eom() is the optimum time because that is the only
routine that can add a header.

ARGUMENTS

Argument

Description

ip_address

A pointer to a string representation of an IPv4 or IPv6 address.

mail_from_domain

This can be the domain itself, or the full sender address or even the
angle brace enclosed address. Any of of those will work, including the
empty address <> and the literal MAILER_DAEMON.

helo_domain

This is the domain specified with the HELO command. This domain is ignored
if the mail_from_domain contains an actual domain.

spf_record

If not NULL, is a string containing the SPF record to validate.
If NULL, the record will be looked up based on either the mail_from_domain or helo_domain/.

softfail_okay_flag

If zero softfails (~all and ?all) are treated the same as if the are hard fails.
If non-zero, softfails are threated as a pass.

human_readable

If not NULL, is the address of a string buffer into which to scribble a human readble reason for
any result.

human_readable_len

The sizeof() or number of characters available in human_readable.

used_mfrom

Address of an integer into which either TRUE or FALSE will be written. If TRUE,
the mail_from_domain was used to validate the SPF record. If FALSE,
the helo_domain was used to validate the SPF record.

RETURN VALUES

DMARC_POLICY_SPF_OUTCOME_PASS -- On success

DMARC_POLICY_SPF_OUTCOME_FAIL -- If the SPF record check failed.

DMARC_POLICY_SPF_OUTCOME_TMPFAIL -- If there was as recoverable failure.

DMARC_POLICY_SPF_OUTCOME_NONE -- If domain did not have an spf record.

NOTES

This spf record check performs it own DNS lookups. There are no hooks provided
to subsitute your own DNS lookup routines at this time.

Copyright (c) 2012, The Trusted Domain Project. All rights reserved.
By using this file, you agree to the terms and conditions set
forth in the license.