| SYNOPSIS | 
#include <dmarc.h>
int opendmarc_spf_test(
	char *ip_address, char *mail_from_domain, char *helo_domain,
	char *spf_record, int softfail_okay_flag, char *human_readable,
	size_t human_readable_len, int *used_mfrom
);
Validate a passed in SPF record or look up one and validate it. | 
|---|
| DESCRIPTION | 
| Called When | 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.
 |