summaryrefslogtreecommitdiffstats
path: root/rfc1035/testspf.c
diff options
context:
space:
mode:
authorSam Varshavchik2013-08-19 16:39:41 -0400
committerSam Varshavchik2013-08-25 14:43:51 -0400
commit9c45d9ad13fdf439d44d7443ae75da15ea0223ed (patch)
tree7a81a04cb51efb078ee350859a64be2ebc6b8813 /rfc1035/testspf.c
parenta9520698b770168d1f33d6301463bb70a19655ec (diff)
downloadcourier-libs-9c45d9ad13fdf439d44d7443ae75da15ea0223ed.tar.bz2
Initial checkin
Imported from subversion report, converted to git. Updated all paths in scripts and makefiles, reflecting the new directory hierarchy.
Diffstat (limited to 'rfc1035/testspf.c')
-rw-r--r--rfc1035/testspf.c120
1 files changed, 120 insertions, 0 deletions
diff --git a/rfc1035/testspf.c b/rfc1035/testspf.c
new file mode 100644
index 0000000..a28482f
--- /dev/null
+++ b/rfc1035/testspf.c
@@ -0,0 +1,120 @@
+/*
+** Copyright 2004 Double Precision, Inc.
+** See COPYING for distribution information.
+*/
+
+#include "config.h"
+#include "rfc1035.h"
+#include "spf.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+
+static struct testsuite_s {
+ const char *mailfrom;
+ const char *tcpremoteip;
+ const char *tcpremotehost;
+ const char *helodomain;
+ const char *mydomain;
+} testsuite[]={
+ {"spf1.email-scan.com","192.168.1.10","spf1.email-scan.com","spf1","example.com"},
+ {"spf2.email-scan.com","192.168.1.10","spf1.email-scan.com","spf1","example.com"},
+ {"spf3.email-scan.com","192.168.1.10","spf1.email-scan.com","spf1","example.com"},
+ {"spf3.email-scan.com","191.168.2.10","spf1.email-scan.com","spf3.test","example.com"},
+ {"spf3.email-scan.com","1234:5678::9ABC","spf1.email-scan.com","spf1","example.com"},
+ {"spf4.email-scan.com","192.168.2.10","spf1.email-scan.com","10-1-168-192","example.com"},
+ {"spf5.email-scan.com","::ffff:192.168.1.0","spf5.email-scan.com","helo","example.com"},
+ {"spf5.email-scan.com","::ffff:192.168.1.1","spf5.email-scan.com","helo","example.com"},
+ {"spf6.email-scan.com","::ffff:192.168.1.0","spf5.email-scan.com","helo","example.com"},
+ {"spf6.email-scan.com","::ffff:192.168.1.1","spf5.email-scan.com","helo","example.com"},
+ {"spf7.email-scan.com","::ffff:192.168.1.1","spf5.email-scan.com","helo","example.com"},
+ {"spf7.email-scan.com","::ffff:192.168.2.1","spf5.email-scan.com","helo","example.com"},
+ {"spf7.email-scan.com","::ffff:192.168.1.255","spf5.email-scan.com","helo","example.com"},
+ {"spf8.email-scan.com","::ffff:192.168.1.1","spf5.email-scan.com","helo","example.com"},
+ {"spf8.email-scan.com","::ffff:192.168.2.1","spf5.email-scan.com","helo","example.com"},
+ {"spf8.email-scan.com","::ffff:192.168.1.255","spf5.email-scan.com","helo","example.com"},
+ {"spf9.email-scan.com","::ffff:192.168.1.130","spf5.email-scan.com","helo","example.com"},
+ {"spf9.email-scan.com","::ffff:192.168.1.129","spf5.email-scan.com","helo","example.com"},
+ {"spf9.email-scan.com","::ffff:192.168.1.10","spf5.email-scan.com","helo","example.com"},
+ {"spf10.email-scan.com","::ffff:192.168.1.10","spf10.email-scan.com","helo","example.com"},
+ {"spf10.email-scan.com","::ffff:192.168.1.50","spf10.email-scan.com","helo","example.com"},
+ {"spf11.email-scan.com","::ffff:192.168.0.1","spf10.email-scan.com","helo","example.com"},
+ {"spf11.email-scan.com","::ffff:192.168.0.2","spf10.email-scan.com","helo","example.com"},
+ {"spf12.email-scan.com","::ffff:192.168.0.1","spf10.email-scan.com","helo","example.com"},
+ {"spf12.email-scan.com","::ffff:192.168.1.1","spf10.email-scan.com","helo","example.com"},
+ {"spf13.email-scan.com","::ffff:192.168.1.1","spf10.email-scan.com","spf1","example.com"},
+ {"spf13.email-scan.com","::ffff:192.168.1.1","spf10.email-scan.com","spf50","example.com"},
+ {"spf14.email-scan.com","::ffff:192.168.2.0","spf10.email-scan.com","helo","example.com"},
+ {"spf14.email-scan.com","::ffff:192.168.2.1","spf10.email-scan.com","helo","example.com"},
+ {"spf14.email-scan.com","::ffff:192.168.2.1","spf10.email-scan.com","spf11","example.com"},
+ {"spf14.email-scan.com","::ffff:192.168.0.1","spf10.email-scan.com","spf11","example.com"},
+ {"spf15.email-scan.com","::ffff:192.168.0.1","spf10.email-scan.com","spf11","example.com"}
+};
+
+static int testspf(const char *mailfrom,
+ const char *tcpremoteip,
+ const char *tcpremotehost,
+ const char *helodomain,
+ const char *mydomain)
+{
+ char buf[256];
+
+ switch (rfc1035_spf_lookup(mailfrom, tcpremoteip, tcpremotehost,
+ helodomain, mydomain, buf, sizeof(buf))) {
+ case SPF_NONE:
+ printf("none\n");
+ break;
+ case SPF_NEUTRAL:
+ printf("neutral\n");
+ break;
+ case SPF_PASS:
+ printf("pass\n");
+ break;
+ case SPF_FAIL:
+ printf("fail: %s\n", buf);
+ break;
+ case SPF_SOFTFAIL:
+ printf("softfail\n");
+ break;
+ case SPF_ERROR:
+ printf("error\n");
+ break;
+ default:
+ printf("unknown\n");
+ }
+ return 0;
+}
+
+int main(int argc, char **argv)
+{
+ if (argc == 2 && strncmp(argv[1], "-test=", 6) == 0)
+ {
+ int loop_cnt=atoi(argv[1]+6);
+ int i;
+
+ for (i=0;i<loop_cnt;i++)
+ {
+ int j;
+
+ for (j=0; j<sizeof(testsuite)/sizeof(testsuite[0]);
+ j++)
+ testspf(testsuite[j].mailfrom,
+ testsuite[j].tcpremoteip,
+ testsuite[j].tcpremotehost,
+ testsuite[j].helodomain,
+ testsuite[j].mydomain);
+ }
+ return 0;
+ }
+
+ if (argc < 6)
+ {
+ printf("Usage: %s mailfrom remoteip remotehost helo me\n",
+ argv[0]);
+ exit(1);
+ }
+
+ return testspf(argv[1], argv[2], argv[3], argv[4], argv[5]);
+}
+