libspf2 1.2.10
|
00001 /* 00002 * This program is free software; you can redistribute it and/or modify 00003 * it under the terms of either: 00004 * 00005 * a) The GNU Lesser General Public License as published by the Free 00006 * Software Foundation; either version 2.1, or (at your option) any 00007 * later version, 00008 * 00009 * OR 00010 * 00011 * b) The two-clause BSD license. 00012 * 00013 * These licenses can be found with the distribution in the file LICENSES 00014 */ 00015 00016 #ifndef INC_SPF_REQUEST 00017 #define INC_SPF_REQUEST 00018 00019 typedef struct SPF_request_struct SPF_request_t; 00020 00021 #include "spf_server.h" 00022 00023 struct SPF_request_struct { 00024 /* Structure variables */ 00025 SPF_server_t *spf_server; /* The server. */ 00026 00027 /* Input client-end variables */ 00028 int client_ver; /* AF_INET/AF_INET6 */ 00029 struct in_addr ipv4; /* client (sending) MTA IP addr */ 00030 struct in6_addr ipv6; /* client (sending) MTA IP addr */ 00031 char *env_from; /* envelope-from/MAIL FROM: */ 00032 char *helo_dom; /* domain name from HELO cmd */ 00033 char *rcpt_to_dom; /* RCPT TO: domain for 2mx */ 00034 00035 #if 0 00036 /* Input server-end variables */ 00037 char *rec_dom; /* receiving MTA domain name */ 00038 #endif 00039 00040 /* Per-request configuration variables */ 00041 char use_local_policy; 00042 char use_helo; 00043 00044 /* State/derived variables */ 00045 char *env_from_lp; /* Local part of env_from */ 00046 char *env_from_dp; /* Domain part of env_from */ 00047 char *client_dom; /* Verified domain from client IP */ 00048 00049 /* I'm not sure whether this should be in here. */ 00050 const char *cur_dom; /* "current domain" of SPF spec */ 00051 }; 00052 00053 SPF_request_t *SPF_request_new(SPF_server_t *spf_server); 00054 void SPF_request_free(SPF_request_t *sr); 00055 SPF_errcode_t SPF_request_set_ipv4(SPF_request_t *sr, 00056 struct in_addr addr); 00057 SPF_errcode_t SPF_request_set_ipv6(SPF_request_t *sr, 00058 struct in6_addr addr); 00059 SPF_errcode_t SPF_request_set_ipv4_str(SPF_request_t *sr, 00060 const char *astr); 00061 SPF_errcode_t SPF_request_set_ipv6_str(SPF_request_t *sr, 00062 const char *astr); 00063 SPF_errcode_t SPF_request_set_helo_dom(SPF_request_t *sr, 00064 const char *dom); 00065 int SPF_request_set_env_from(SPF_request_t *sr, 00066 const char *from); 00067 const char *SPF_request_get_rec_dom(SPF_request_t *sr); 00068 00069 const char *SPF_request_get_client_dom(SPF_request_t *sr); 00070 int SPF_request_is_loopback(SPF_request_t *sr); 00071 00072 SPF_errcode_t SPF_request_query_mailfrom(SPF_request_t *spf_request, 00073 SPF_response_t **spf_responsep); 00074 SPF_errcode_t SPF_request_query_rcptto(SPF_request_t *spf_request, 00075 SPF_response_t **spf_responsep, 00076 const char *rcpt_to); 00077 SPF_errcode_t SPF_request_query_fallback(SPF_request_t *spf_request, 00078 SPF_response_t **spf_responsep, 00079 const char *record); 00080 00081 00082 /* In spf_get_exp.c */ 00083 SPF_errcode_t SPF_request_get_exp(SPF_server_t *spf_server, 00084 SPF_request_t *spf_request, 00085 SPF_response_t *spf_response, 00086 SPF_record_t *spf_record, 00087 char **bufp, size_t *buflenp); 00088 00089 /* In spf_interpret.c - this is a kludge */ 00090 00091 SPF_errcode_t SPF_i_done(SPF_response_t *spf_response, 00092 SPF_result_t result, SPF_reason_t reason, 00093 SPF_errcode_t err); 00094 00095 00096 #endif