summaryrefslogtreecommitdiffstats
path: root/rfc1035/spf.h
diff options
context:
space:
mode:
Diffstat (limited to 'rfc1035/spf.h')
-rw-r--r--rfc1035/spf.h73
1 files changed, 73 insertions, 0 deletions
diff --git a/rfc1035/spf.h b/rfc1035/spf.h
new file mode 100644
index 0000000..c4afea8
--- /dev/null
+++ b/rfc1035/spf.h
@@ -0,0 +1,73 @@
+/*
+** Copyright 2004 Double Precision, Inc.
+** See COPYING for distribution information.
+*/
+
+#ifndef rfc1035_spf_h
+#define rfc1035_spf_h
+
+
+#include "rfc1035/rfc1035.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ An SPF client evaluates an SPF record and produces one of seven
+ results:
+
+ None: The domain does not publish SPF data.
+
+ Neutral (?): The SPF client MUST proceed as if a domain did not
+ publish SPF data. This result occurs if the domain explicitly
+ specifies a "?" value, or if processing "falls off the end" of
+ the SPF record.
+
+ Pass (+): the message meets the publishing domain's definition of
+ legitimacy. MTAs proceed to apply local policy and MAY accept or
+ reject the message accordingly.
+
+ Fail (-): the message does not meet a domain's definition of
+ legitimacy. MTAs MAY reject the message using a permanent
+ failure reply code. (Code 550 is RECOMMENDED. See [RFC2821]
+ section 7.1.)
+
+ Softfail (~): the message does not meet a domain's strict
+ definition of legitimacy, but the domain cannot confidently state
+ that the message is a forgery. MTAs SHOULD accept the message
+ but MAY subject it to a higher transaction cost, deeper scrutiny,
+ or an unfavourable score.
+
+ There are two error conditions, one temporary and one permanent.
+
+ Error: indicates an error during lookup; an MTA SHOULD reject the
+ message using a transient failure code, such as 450.
+
+ Unknown: indicates incomplete processing: an MTA MUST proceed as
+ if a domain did not publish SPF data.
+*/
+
+#define SPF_NONE 0
+#define SPF_NEUTRAL '?'
+#define SPF_PASS '+'
+#define SPF_FAIL '-'
+#define SPF_SOFTFAIL '~'
+#define SPF_ERROR '4'
+
+ /* Everything else is SPF_UNKNOWN */
+#define SPF_UNKNOWN '5'
+
+char rfc1035_spf_lookup(const char *mailfrom,
+ const char *tcpremoteip,
+ const char *tcpremotehost,
+ const char *helodomain,
+ const char *mydomain,
+ char *errmsg_buf,
+ size_t errmsg_buf_size);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif