/* This file is part of mailfromd. Copyright (C) 2007 Sergey Poznyakoff This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #define SPF_MAX_TXT_REC 10 #define SPF_MAX_RECURSION 10 typedef enum spf_result { spf_none, spf_neutral, spf_pass, spf_fail, spf_soft_fail, spf_temp_error, spf_perm_error #define max_spf_result (spf_perm_error+1) } spf_result; typedef struct { const char *ipstr; /* Originator IP in textual form */ const char *domain; /* Sender domain */ const char *sender; /* Sender email */ const char *helo_domain; /* HELO domain */ const char *my_domain; /* My own domain name */ const char *exp_prefix; /* Explanation prefix (optional) */ } spf_query_t; typedef struct { unsigned long ttl; /* Minimal ttl */ char *exp_text; /* Explanation text */ char *mech; /* SPF mechanism that decided about the result */ } spf_answer_t; spf_result spf_check_host(spf_query_t *query, spf_answer_t *ans); spf_result spf_test_record(const char *rec, spf_query_t *query, spf_answer_t *ans); dns_status spf_lookup(const char *domain, char **txt, size_t maxtxt, unsigned long *ttl, char *answer, size_t answer_size); void spf_answer_free(spf_answer_t *ans);