ze-filter  (ze-filter-0.8.0-develop-180218)
ze-msg-score-test.c
Go to the documentation of this file.
1 
2 /*
3  *
4  * ze-filter - Mail Server Filter for sendmail
5  *
6  * Copyright (c) 2001-2018 - Jose-Marcio Martins da Cruz
7  *
8  * Auteur : Jose Marcio Martins da Cruz
9  * jose.marcio.mc@gmail.org
10  *
11  * Historique :
12  * Creation : janvier 2002
13  *
14  * This program is free software, but with restricted license :
15  *
16  *
17  * This program is distributed in the hope that it will be useful,
18  * but WITHOUT ANY WARRANTY; without even the implied warranty of
19  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
20  *
21  * More details about ze-filter license can be found at ze-filter
22  * web site : http://foss.jose-marcio.org
23  */
24 
25 #include <ze-sys.h>
26 #include <ze-filter.h>
27 
28 #if 1
29 #define COEFS "KBAYES=1.0, KURLBL=0.04, KREGEX=0.02, KORACLE=0.08 "
30 #define SCALE "SSCORE=7."
31 #endif
32 
33 int
34 main(argc, argv)
35  int argc;
36  char **argv;
37 {
38  int i;
39 
40  int res = 0;
41  extern int ze_logLevel;
42 
43  bool eval = FALSE;
44  char *s;
45  double score = 0.;
46  char buf[256];
47 
48  msg_scores_T scores;
49 
50  memset(&scores, 0, sizeof (scores));
51  scores.bayes = 0.4;
52  scores.urlbl = 10;
53  scores.body = 0;
54  scores.headers = 0;
55  scores.oracle = 0;
56 
57 
58  ze_logLevel = 10;
60 
61  ZE_MessageInfo(9, "\n --- ");
62  s = "VECTOR; " COEFS;
63 
64  eval = register_msg_action(MSG_ACTION_OK, "REGEX:");
65  printf("EVAL = %d\n", eval);
66  eval = register_msg_action(MSG_ACTION_REJECT, "REGEX:");
67  printf("EVAL = %d\n", eval);
68  eval = register_msg_action(MSG_ACTION_DISCARD, "REGEX:");
69  printf("EVAL = %d\n", eval);
71  printf("EVAL = %d\n", eval);
73  printf("EVAL = %d\n", eval);
75  printf("EVAL = %d\n", eval);
76  eval = register_msg_action(MSG_ACTION_HEADER_SPAM_HI, "THRESHOLD:0.650");
77  printf("EVAL = %d\n", eval);
78 
79  s = "REGEX: ze-filter score : XXX.*U=##";
81  printf("EVAL = %d\n", eval);
82 
83  eval = evaluate_msg_action(MSG_ACTION_HEADER_SPAM_HI, NULL, 0.7, NULL);
84  printf("ACTION = %d\n", eval);
85  eval = evaluate_msg_action(MSG_ACTION_HEADER_SPAM_HI, NULL, 0.8, NULL);
86  printf("ACTION = %d\n", eval);
87 
88  eval = evaluate_msg_action(MSG_ACTION_HEADER_NEUTRAL, NULL, 0.8, NULL);
89  printf("ACTION = %d\n", eval);
90 
91  s =
92  "MSGID : NOID on UNKNOWN : ze-filter score : XX : R=. U=# O=. B=0.400 -> S=0.566";
93  eval = evaluate_msg_action(MSG_ACTION_HEADER_NEUTRAL, NULL, 0.8, s);
94  printf("ACTION = %d\n", eval);
95 
96  s =
97  "MSGID : NOID on UNKNOWN : ze-filter score : XXX : R=. U=## O=. B=0.400 -> S=0.566";
98  eval = evaluate_msg_action(MSG_ACTION_HEADER_NEUTRAL, NULL, 0.8, s);
99  printf("ACTION = %d\n", eval);
100 
101 
102  s = NULL;
103  eval = configure_msg_eval_function(s);
104  printf("* %-60s : %s\n", STRNULL(s, "NULL"), STRBOOL(eval, "OK", "KO"));
106 
107  score = compute_msg_score(&scores);
108  ZE_MessageInfo(9, " SCORE : %7.3f", score);
109  create_msg_score_header(buf, sizeof (buf), NULL, NULL, &scores);
110  ZE_MessageInfo(9, " HEADER : %s", buf);
111 
112 #if 0
113  ZE_MessageInfo(9, "\n --- ??? ");
114  score = compute_msg_score(regex, oracle, urlbl, -1.);
115  ZE_MessageInfo(9, " SCORE : %7.3f", score);
116  create_msg_score_header(buf, sizeof (buf), NULL, NULL, regex, oracle, urlbl,
117  -1);
118  ZE_MessageInfo(9, " HEADER : %s", buf);
119 
120  ZE_MessageInfo(9, "\n --- ??? ");
121  score = evaluate_msg_score(regex, oracle, urlbl, -1.);
122  ZE_MessageInfo(9, " SCORE : %7.3f", score);
123  create_msg_score_header(buf, sizeof (buf), NULL, NULL, regex, oracle, urlbl,
124  -1);
125  ZE_MessageInfo(9, " HEADER : %s", buf);
126 #endif
127 
128 #if 0
129  ZE_MessageInfo(9, "\n --- ");
130  s = "VEC; " COEFS;
131  eval = configure_msg_eval_function(s);
132  printf("* %-60s : %s\n", STRNULL(s, "NULL"), STRBOOL(eval, "OK", "KO"));
134 
135  score = evaluate_msg_score(regex, oracle, urlbl, bayes);
136  ZE_MessageInfo(9, " SCORE : %7.3f", score);
137  create_msg_score_header(buf, sizeof (buf), NULL, NULL,
138  regex, oracle, urlbl, bayes);
139  ZE_MessageInfo(9, " HEADER : %s", buf);
140 #endif
141 
142 #if 0
143  ZE_MessageInfo(9, "\n --- ");
144  s = "VECTOR; " COEFS;
145  eval = configure_msg_eval_function(s);
146  printf("* %-60s : %s\n", STRNULL(s, "NULL"), STRBOOL(eval, "OK", "KO"));
148 
149  score = evaluate_msg_score(regex, oracle, urlbl, bayes);
150  ZE_MessageInfo(9, " SCORE : %7.3f", score);
151  create_msg_score_header(buf, sizeof (buf), NULL, NULL,
152  regex, oracle, urlbl, bayes);
153  ZE_MessageInfo(9, " HEADER : %s", buf);
154 #endif
155 
156  return 0;
157 }
#define STRBOOL(x, t, f)
Definition: macros.h:87
bool register_msg_action(int which, char *val)
Definition: ze-msg-score.c:968
#define MSG_ACTION_HEADER_NEUTRAL
Definition: ze-msg-score.h:50
int ze_logLevel
Definition: zeSyslog.c:34
#define STRNULL(x, r)
Definition: macros.h:81
bool configure_msg_eval_function(char *val)
Definition: ze-msg-score.c:450
int main(int argc, char **argv)
bool display_msg_eval()
Definition: ze-msg-score.c:555
void zeLog_SetOutput(bool, bool)
Definition: zeSyslog.c:490
#define FALSE
Definition: macros.h:160
#define MSG_ACTION_OK
Definition: ze-msg-score.h:40
bool evaluate_msg_action(int action, msg_scores_T *scp, double score, char *str)
#define MSG_ACTION_HEADER_SPAM_LO
Definition: ze-msg-score.h:48
bool create_msg_score_header(char *buf, size_t size, char *id, char *hostname, msg_scores_T *scores)
Definition: ze-msg-score.c:737
#define ZE_MessageInfo(level,...)
Definition: zeSyslog.h:90
#define TRUE
Definition: macros.h:157
double bayes
Definition: ze-msg-score.h:88
#define MSG_ACTION_HEADER_SPAM_HI
Definition: ze-msg-score.h:49
#define MSG_ACTION_QUARANTINE
Definition: ze-msg-score.h:45
#define COEFS
#define MSG_ACTION_DISCARD
Definition: ze-msg-score.h:43
double compute_msg_score(msg_scores_T *scores)
Definition: ze-msg-score.c:634
#define MSG_ACTION_HEADER_HAM
Definition: ze-msg-score.h:47
#define MSG_ACTION_REJECT
Definition: ze-msg-score.h:42