"Fossies" - the Fresh Open Source Software Archive 
Member "libspf2-1.2.10/src/include/spf_server.h" (28 Jan 2012, 3533 Bytes) of package /linux/privat/libspf2-1.2.10.tar.gz:
As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style:
standard) with prefixed line numbers and
code folding option.
Alternatively you can here
view or
download the uninterpreted source code file.
For more information about "spf_server.h" see the
Fossies "Dox" file reference documentation.
1 /*
2 * This program is free software; you can redistribute it and/or modify
3 * it under the terms of either:
4 *
5 * a) The GNU Lesser General Public License as published by the Free
6 * Software Foundation; either version 2.1, or (at your option) any
7 * later version,
8 *
9 * OR
10 *
11 * b) The two-clause BSD license.
12 *
13 * These licenses can be found with the distribution in the file LICENSES
14 */
15
16 #ifndef INC_SPF_SERVER
17 #define INC_SPF_SERVER
18
19 typedef struct SPF_server_struct SPF_server_t;
20
21 #include "spf_record.h"
22 #include "spf_dns.h"
23
24 #ifndef SPF_MAX_DNS_MECH
25 /* It is a bad idea to change this for two reasons.
26 *
27 * First, the obvious reason is the delays caused on the mail server
28 * you are running. DNS lookups that timeout can be *very* time
29 * consuming, and even successful DNS lookups can take 200-500ms.
30 * Many MTAs can't afford to wait long and even 2sec is pretty bad.
31 *
32 * The second, and more important reason, is the SPF records come from
33 * a third party which may be malicious. This third party can direct
34 * DNS lookups to be sent to anyone. If there isn't a limit, then it
35 * is easy for someone to create a distributed denial of service
36 * attack simply by sending a bunch of emails. Unlike the delays on
37 * your system caused by many DNS lookups, you might not even notice
38 * that you are being used as part of a DDoS attack.
39 */
40 #define SPF_MAX_DNS_MECH 10
41 #endif
42 #ifndef SPF_MAX_DNS_PTR
43 /* It is a bad idea to change this for the same reasons as mentioned
44 * above for SPF_MAX_DNS_MECH
45 */
46 #define SPF_MAX_DNS_PTR 10
47 #endif
48 #ifndef SPF_MAX_DNS_MX
49 /* It is a bad idea to change this for the same reasons as mentioned
50 * above for SPF_MAX_DNS_MECH
51 */
52 #define SPF_MAX_DNS_MX 10
53 #endif
54
55 struct SPF_server_struct {
56 SPF_dns_server_t*resolver; /**< SPF DNS resolver. */
57 SPF_record_t *local_policy; /**< Local policies. */
58 SPF_macro_t *explanation; /**< Explanation string. */
59
60 char *rec_dom; /**< Default receiving domain. */
61
62 int max_dns_mech; /**< DoS limit on SPF mechanisms. */
63 int max_dns_ptr; /**< DoS limit on PTR records. */
64 int max_dns_mx; /**< DoS limit on MX records. */
65
66 int sanitize; /**< Limit charset in messages. */
67 int debug; /**< Print debug info. */
68 int destroy_resolver; /**< true if we own the resolver. */
69 };
70
71 typedef
72 enum SPF_server_dnstype_enum {
73 SPF_DNS_RESOLV, SPF_DNS_CACHE, SPF_DNS_ZONE
74 } SPF_server_dnstype_t;
75
76 SPF_server_t *SPF_server_new(SPF_server_dnstype_t dnstype,int debug);
77 SPF_server_t *SPF_server_new_dns(SPF_dns_server_t *dns,int debug);
78 void SPF_server_free(SPF_server_t *sp);
79 SPF_errcode_t SPF_server_set_rec_dom(SPF_server_t *sp,
80 const char *dom);
81 SPF_errcode_t SPF_server_set_sanitize(SPF_server_t *sp,
82 int sanitize);
83 SPF_errcode_t SPF_server_set_explanation(SPF_server_t *sp,
84 const char *exp, SPF_response_t **spf_responsep);
85 SPF_errcode_t SPF_server_set_localpolicy(SPF_server_t *sp,
86 const char *policy, int use_default_whitelist,
87 SPF_response_t **spf_responsep);
88
89 SPF_errcode_t SPF_server_get_record(SPF_server_t *spf_server,
90 SPF_request_t *spf_request,
91 SPF_response_t *spf_response,
92 SPF_record_t **spf_recordp);
93
94 /**
95 * Prototypes for the various maximum accessors.
96 */
97 #define SPF_DECL_ACCESS_INT(f) \
98 SPF_errcode_t \
99 SPF_server_set_ ## f(SPF_server_t *spf_server, int n); \
100 int \
101 SPF_server_get_ ## f(SPF_server_t *spf_server);
102
103 SPF_DECL_ACCESS_INT(max_dns_mech);
104 SPF_DECL_ACCESS_INT(max_dns_ptr);
105 SPF_DECL_ACCESS_INT(max_dns_mx);
106
107 #endif