ze-filter
(ze-filter-0.8.0-develop-180218)
ze-filter-data.h
Go to the documentation of this file.
1
/*
2
*
3
* ze-filter - Mail Server Filter for sendmail
4
*
5
* Copyright (c) 2001-2018 - Jose-Marcio Martins da Cruz
6
*
7
* Auteur : Jose Marcio Martins da Cruz
8
* jose.marcio.mc@gmail.org
9
*
10
* Historique :
11
* Creation : janvier 2002
12
*
13
* This program is free software, but with restricted license :
14
*
15
*
16
* This program is distributed in the hope that it will be useful,
17
* but WITHOUT ANY WARRANTY; without even the implied warranty of
18
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
19
*
20
* More details about ze-filter license can be found at ze-filter
21
* web site : http://foss.jose-marcio.org
22
*/
23
24
#ifndef __ZE_FILTER_DATA_H
25
26
#include "libmilter/mfapi.h"
27
28
#ifndef SM_LM_VRS_MAJOR
29
# define SM_LM_VRS_MAJOR(v) (((v) & 0x7f000000) >> 24)
30
#endif
31
#ifndef SM_LM_VRS_MINOR
32
# define SM_LM_VRS_MINOR(v) (((v) & 0x007fff00) >> 8)
33
#endif
34
#ifndef SM_LM_VRS_PLVL
35
# define SM_LM_VRS_PLVL(v) ((v) & 0x0000007f)
36
#endif
37
38
#define SMFI_VERSION_MAJOR SM_LM_VRS_MAJOR(SMFI_VERSION)
39
#define SMFI_VERSION_MINOR SM_LM_VRS_MINOR(SMFI_VERSION)
40
#define SMFI_VERSION_PLVL SM_LM_VRS_PLVL(SMFI_VERSION)
41
42
#include "
ze-smmacros.h
"
43
#include "
ze-reply.h
"
44
45
#if 0
46
#ifndef LIBMILTER_VERSION_MAJOR
47
# define LIBMILTER_VERSION_MAJOR 8
48
# define LIBMILTER_VERSION_MINOR 12
49
# define LIBMILTER_VERSION_PATCH 10
50
#endif
51
#endif
52
53
#include "
ze-history.h
"
54
55
typedef
struct
56
{
57
char
*
virus
;
58
}
MSG_T
;
59
60
typedef
struct
61
{
62
unsigned
long
f0
;
63
unsigned
long
f1
;
64
unsigned
long
f2
;
65
unsigned
long
f3
;
66
}
MTA_caps_T
;
67
68
typedef
struct
69
{
70
sfsistat
result
;
71
int
callback
;
72
char
*
reply
;
73
char
*
why
;
74
}
dresult_T
;
75
76
typedef
struct
77
{
78
time_t
conn_id
;
/* connection ID - obsolete */
79
CONNID_T
id
;
/* connection ID */
80
#if 1
81
char
*
mailserver
;
/* server name (Macro $j) */
82
#endif
83
int
callback_id
;
84
85
int
nb_unknown_cmd
;
86
87
char
*
reply_code
;
88
89
dresult_T
delayed_result
;
90
91
/*
92
** Connection data
93
*/
94
#if HAVE_HRTIME_T
95
hrtime_t t_open;
/* connection open date */
96
hrtime_t t_close;
/* connection close date */
97
hrtime_t t_callback;
/* time spent by the callback */
98
hrtime_t t_xmsg;
/* time spent processing message body */
99
#else
100
time_t
t_open
;
101
time_t
t_close
;
102
time_t
t_callback
;
103
time_t
t_xmsg
;
104
#endif
105
106
MTA_caps_T
mta_caps
;
107
108
/*
109
** Client and server state
110
*/
111
int
serv_rate
;
/* server connection rate */
112
int
conn_rate
;
/* client connection rate */
113
int
nb_open
;
/* # of open connections */
114
int
msg_rate
;
/* client message rate */
115
116
iprbwl_T
rbwl
;
117
netclass_T
netclass
;
118
119
int
resolve_res
;
120
121
uint32_t
ehlo_flags
;
/* result of helo parameter check */
122
123
bool
reject_connect
;
124
125
/*
126
** Spool file
127
*/
128
char
*
fname
;
/* spool file name */
129
char
*
fsuffix
;
/* quarantined file name suffix */
130
int
fd
;
131
bool
fp_open
;
/* True if spool open */
132
bool
save_msg
;
/* shall message be quarantined */
133
int
save_why
;
/* quarantine reason */
134
135
#if 0
136
MSG_SPOOL_T
spoolfile;
137
#endif
138
sm_mac_T
*
sm
;
139
140
/*
141
** Input data
142
*/
143
char
*
daemon
;
144
sa_family_t
addr_family
;
145
char
*
peer_addr
;
146
char
*
peer_name
;
147
char
*
ident
;
148
149
char
*
helohost
;
150
151
/* message flags */
152
msg_flags_T
flags
;
153
154
/*
155
** Message
156
*/
157
MSG_T
msg
;
158
char
*
sm_msgid
;
159
160
char
*
env_from
;
161
char
*
env_to
;
162
rcpt_addr_T
*
env_rcpt
;
163
int
env_nb_rcpt
;
164
165
bool
pass_ok
;
/* access granted */
166
167
char
*
hdr_mailer
;
168
char
*
hdr_from
;
169
char
*
hdr_to
;
170
char
*
hdr_subject
;
171
int
hdr_content_encoding
;
172
173
header_T
*
headers
;
174
175
/* Anti-spam */
176
msg_scores_T
rawScores
;
177
msg_scores_T
netScores
;
178
msg_scores_T
dspScores
;
179
180
spamchk_T
spamchk
;
181
182
char
*
score_str
;
183
char
*
status_str
;
184
185
/* bayes filter result */
186
int
nb_bspam
;
187
int
nb_bham
;
188
189
/* Contents */
190
char
body_chunk[
SZ_CHUNK
];
191
int
body_res_scan
;
192
int
body_scan_state
;
193
int
body_nb
;
194
195
content_field_T
tcontent
;
196
content_field_T
*
lcontent
;
197
198
bool
msg_short
;
199
unsigned
long
msg_size
;
200
unsigned
long
nb_bytes
;
201
202
int
nb_from
;
203
int
nb_rcpt
;
/* nb of recipients */
204
205
int
nb_files
;
/* nb of attached files */
206
int
nb_xfiles
;
/* nb of X-Files */
207
int
nb_virus
;
/* nb of virus */
208
int
nb_policy
;
/* nb of policy violations */
209
int
nb_msgs
;
/* nb of messagess */
210
int
nb_abort
;
/* nb of aborted messages */
211
212
int
nb_spams
;
/* nb spams */
213
214
/* RCPT database check results */
215
int
dbrcpt_reject
;
216
int
dbrcpt_access
;
217
int
dbrcpt_bad_network
;
218
int
dbrcpt_conn_unknown
;
219
int
dbrcpt_conn_spamtrap
;
220
int
dbrcpt_msg_unknown
;
221
int
dbrcpt_msg_spamtrap
;
222
223
int
nb_mbadrcpt
;
/* nb of bad recipients - message */
224
int
nb_cbadrcpt
;
/* nb of bad recipients - connection */
225
226
/*
227
** Results
228
*/
229
uint32_t
flag_rej_connection
;
230
uint32_t
flag_rej_contents
;
231
232
int
rej_rcpt
;
233
int
rej_rcpt_rate
;
234
int
rej_regex
;
235
int
rej_luser
;
236
int
rej_badmx
;
237
int
rej_spamtrap
;
238
239
bool
rej_resolve
;
240
bool
rej_conn_rate
;
241
bool
rej_open
;
242
bool
rej_empty
;
243
bool
rej_badrcpt
;
244
bool
rej_msgs
;
245
bool
rej_msg_rate
;
246
247
int
rej_greyreply
;
248
int
rej_greyrcpt
;
249
int
rej_greymsgs
;
250
251
int
nb_oracle
;
252
253
int
result
;
254
}
CTXPRIV_T
;
255
256
#define MLFIPRIV(ctx) \
257
((ctx) != NULL ? (CTXPRIV_T *) smfi_getpriv(ctx) : NULL)
258
259
#define CTX_NETCLASS_LABEL(priv) \
260
((priv) != NULL ? \
261
STREMPTY(priv->netclass.label, NET_CLASS_LABEL(priv->netclass.class)) : \
262
"UNKNOWN")
263
264
#include <
ze-check-connection.h
>
265
266
#include <
ze-callback.h
>
267
#include <
ze-callbackchecks.h
>
268
#include <
ze-callbacklogs.h
>
269
270
#include <
ze-log-files.h
>
271
#include <
ze-log-virus.h
>
272
#include <
ze-log-quarantine.h
>
273
#include <
ze-log-grey.h
>
274
#include <
ze-log-regex.h
>
275
276
#include <
ze-libmilter.h
>
277
#include <
ze-mod-tools.h
>
278
279
extern
char
my_hostname
[];
280
281
extern
int
mx_check_level
;
282
283
#define LOG_CONNECTION_HEADER(s,msg,n,ip,class) \
284
do \
285
{ \
286
snprintf(s, sizeof (s), "%s : %s : %d [%02X - %s]", \
287
msg, ip, n, class, NET_CLASS(class)); \
288
} \
289
while (0)
290
291
#define DO_QUARANTINE_MESSAGE(priv,why,suffix) \
292
do { \
293
ASSERT(priv != NULL); \
294
priv->save_msg = TRUE; \
295
priv->save_why = why; \
296
if (suffix == NULL) { \
297
switch (why) { \
298
case WHY_XFILE: \
299
priv->fsuffix = SUFFIX_XFILE; \
300
break; \
301
case WHY_VIRUS: \
302
priv->fsuffix = SUFFIX_VIRUS; \
303
break; \
304
case WHY_POLICY: \
305
priv->fsuffix = SUFFIX_POLICY; \
306
break; \
307
case WHY_SPAM: \
308
priv->fsuffix = SUFFIX_SPAM; \
309
break; \
310
case WHY_QUARANTINE: \
311
priv->fsuffix = SUFFIX_QUARANTINE; \
312
break; \
313
case WHY_ARCHIVE: \
314
priv->fsuffix = SUFFIX_ARCHIVE; \
315
break; \
316
default: \
317
priv->fsuffix = NULL; \
318
break; \
319
} \
320
} \
321
else \
322
priv->fsuffix = suffix; \
323
} while (0)
324
325
#define __ZE_FILTER_DATA_H
326
#endif
CTXPRIV_T::conn_rate
int conn_rate
Definition:
ze-filter-data.h:112
SZ_CHUNK
#define SZ_CHUNK
Definition:
ze-filter.h:98
CTXPRIV_T::env_rcpt
rcpt_addr_T * env_rcpt
Definition:
ze-filter-data.h:162
MSG_T::virus
char * virus
Definition:
ze-filter-data.h:57
iprbwl_T
Definition:
ze-dns-iprbwl.h:32
CTXPRIV_T::rej_conn_rate
bool rej_conn_rate
Definition:
ze-filter-data.h:240
CTXPRIV_T::rawScores
msg_scores_T rawScores
Definition:
ze-filter-data.h:176
CONNID_T
Definition:
ze-filter.h:38
CTXPRIV_T::save_msg
bool save_msg
Definition:
ze-filter-data.h:132
CTXPRIV_T::nb_spams
int nb_spams
Definition:
ze-filter-data.h:212
CTXPRIV_T::fname
char * fname
Definition:
ze-filter-data.h:128
CTXPRIV_T::dbrcpt_conn_unknown
int dbrcpt_conn_unknown
Definition:
ze-filter-data.h:218
CTXPRIV_T::t_xmsg
time_t t_xmsg
Definition:
ze-filter-data.h:103
CTXPRIV_T::nb_msgs
int nb_msgs
Definition:
ze-filter-data.h:209
CTXPRIV_T::rej_badmx
int rej_badmx
Definition:
ze-filter-data.h:236
msg_flags_T
Definition:
ze-chkcontent.h:34
spamchk_T
Definition:
ze-chkcontent.h:55
CTXPRIV_T::msg_short
bool msg_short
Definition:
ze-filter-data.h:198
CTXPRIV_T::nb_virus
int nb_virus
Definition:
ze-filter-data.h:207
CTXPRIV_T::flag_rej_connection
uint32_t flag_rej_connection
Definition:
ze-filter-data.h:229
ze-callbacklogs.h
CTXPRIV_T::rej_spamtrap
int rej_spamtrap
Definition:
ze-filter-data.h:237
CTXPRIV_T::mta_caps
MTA_caps_T mta_caps
Definition:
ze-filter-data.h:106
MTA_caps_T::f0
unsigned long f0
Definition:
ze-filter-data.h:62
CTXPRIV_T::peer_addr
char * peer_addr
Definition:
ze-filter-data.h:145
CTXPRIV_T::reply_code
char * reply_code
Definition:
ze-filter-data.h:87
CTXPRIV_T::msg_rate
int msg_rate
Definition:
ze-filter-data.h:114
MTA_caps_T::f1
unsigned long f1
Definition:
ze-filter-data.h:63
CTXPRIV_T::fp_open
bool fp_open
Definition:
ze-filter-data.h:131
CTXPRIV_T::rej_msgs
bool rej_msgs
Definition:
ze-filter-data.h:244
CTXPRIV_T::conn_id
time_t conn_id
Definition:
ze-filter-data.h:78
MTA_caps_T::f2
unsigned long f2
Definition:
ze-filter-data.h:64
CTXPRIV_T::hdr_content_encoding
int hdr_content_encoding
Definition:
ze-filter-data.h:171
CTXPRIV_T::hdr_mailer
char * hdr_mailer
Definition:
ze-filter-data.h:167
CTXPRIV_T::rej_msg_rate
bool rej_msg_rate
Definition:
ze-filter-data.h:245
CTXPRIV_T::dbrcpt_bad_network
int dbrcpt_bad_network
Definition:
ze-filter-data.h:217
ze-mod-tools.h
CTXPRIV_T::serv_rate
int serv_rate
Definition:
ze-filter-data.h:111
CTXPRIV_T::t_callback
time_t t_callback
Definition:
ze-filter-data.h:102
CTXPRIV_T::rej_open
bool rej_open
Definition:
ze-filter-data.h:241
ze-smmacros.h
ze-libmilter.h
CTXPRIV_T::nb_from
int nb_from
Definition:
ze-filter-data.h:202
CTXPRIV_T::reject_connect
bool reject_connect
Definition:
ze-filter-data.h:123
CTXPRIV_T::resolve_res
int resolve_res
Definition:
ze-filter-data.h:119
CTXPRIV_T::env_to
char * env_to
Definition:
ze-filter-data.h:161
CTXPRIV_T::nb_files
int nb_files
Definition:
ze-filter-data.h:205
CTXPRIV_T::nb_policy
int nb_policy
Definition:
ze-filter-data.h:208
CTXPRIV_T::env_nb_rcpt
int env_nb_rcpt
Definition:
ze-filter-data.h:163
ze-history.h
CTXPRIV_T::rej_regex
int rej_regex
Definition:
ze-filter-data.h:234
ze-log-regex.h
header_T
Definition:
ze-headers.h:33
CTXPRIV_T::dbrcpt_msg_spamtrap
int dbrcpt_msg_spamtrap
Definition:
ze-filter-data.h:221
CTXPRIV_T::rej_rcpt
int rej_rcpt
Definition:
ze-filter-data.h:232
CTXPRIV_T::addr_family
sa_family_t addr_family
Definition:
ze-filter-data.h:144
CTXPRIV_T::rej_resolve
bool rej_resolve
Definition:
ze-filter-data.h:239
sm_mac_T
Definition:
ze-smmacros.c:53
CTXPRIV_T
struct mlfiPfiv CTXPRIV_T
my_hostname
char my_hostname[]
Definition:
ze-filter.c:89
CTXPRIV_T::nb_oracle
int nb_oracle
Definition:
ze-filter-data.h:251
netclass_T
Definition:
ze-netclass.h:69
CTXPRIV_T::id
CONNID_T id
Definition:
ze-filter-data.h:79
CTXPRIV_T::rej_rcpt_rate
int rej_rcpt_rate
Definition:
ze-filter-data.h:233
CTXPRIV_T::msg_size
unsigned long msg_size
Definition:
ze-filter-data.h:199
CTXPRIV_T::tcontent
content_field_T tcontent
Definition:
ze-filter-data.h:195
CTXPRIV_T::dbrcpt_access
int dbrcpt_access
Definition:
ze-filter-data.h:216
CTXPRIV_T::mailserver
char * mailserver
Definition:
ze-filter-data.h:81
CTXPRIV_T::body_res_scan
int body_res_scan
Definition:
ze-filter-data.h:191
dresult_T::why
char * why
Definition:
ze-filter-data.h:73
CTXPRIV_T::pass_ok
bool pass_ok
Definition:
ze-filter-data.h:165
CTXPRIV_T::hdr_to
char * hdr_to
Definition:
ze-filter-data.h:169
CTXPRIV_T::rbwl
iprbwl_T rbwl
Definition:
ze-filter-data.h:116
CTXPRIV_T::fd
int fd
Definition:
ze-filter-data.h:130
rcpt_addr_T
Definition:
ze-rcpt-list.h:29
CTXPRIV_T::fsuffix
char * fsuffix
Definition:
ze-filter-data.h:129
CTXPRIV_T::nb_rcpt
int nb_rcpt
Definition:
ze-filter-data.h:203
CTXPRIV_T::nb_cbadrcpt
int nb_cbadrcpt
Definition:
ze-filter-data.h:224
CTXPRIV_T::t_open
time_t t_open
Definition:
ze-filter-data.h:100
CTXPRIV_T::daemon
char * daemon
Definition:
ze-filter-data.h:143
CTXPRIV_T::nb_bspam
int nb_bspam
Definition:
ze-filter-data.h:186
CTXPRIV_T::dbrcpt_conn_spamtrap
int dbrcpt_conn_spamtrap
Definition:
ze-filter-data.h:219
CTXPRIV_T::callback_id
int callback_id
Definition:
ze-filter-data.h:83
CTXPRIV_T::nb_abort
int nb_abort
Definition:
ze-filter-data.h:210
CTXPRIV_T::nb_bytes
unsigned long nb_bytes
Definition:
ze-filter-data.h:200
CTXPRIV_T::rej_greymsgs
int rej_greymsgs
Definition:
ze-filter-data.h:249
ze-log-virus.h
CTXPRIV_T::rej_greyrcpt
int rej_greyrcpt
Definition:
ze-filter-data.h:248
CTXPRIV_T::dbrcpt_msg_unknown
int dbrcpt_msg_unknown
Definition:
ze-filter-data.h:220
ze-reply.h
CTXPRIV_T::nb_xfiles
int nb_xfiles
Definition:
ze-filter-data.h:206
CTXPRIV_T::delayed_result
dresult_T delayed_result
Definition:
ze-filter-data.h:89
CTXPRIV_T::body_nb
int body_nb
Definition:
ze-filter-data.h:193
CTXPRIV_T::result
int result
Definition:
ze-filter-data.h:253
ze-log-grey.h
CTXPRIV_T::lcontent
content_field_T * lcontent
Definition:
ze-filter-data.h:196
CTXPRIV_T::headers
header_T * headers
Definition:
ze-filter-data.h:173
CTXPRIV_T::msg
MSG_T msg
Definition:
ze-filter-data.h:157
CTXPRIV_T::flag_rej_contents
uint32_t flag_rej_contents
Definition:
ze-filter-data.h:230
dresult_T::callback
int callback
Definition:
ze-filter-data.h:71
CTXPRIV_T::rej_luser
int rej_luser
Definition:
ze-filter-data.h:235
msg_scores_T
Definition:
ze-msg-score.h:71
CTXPRIV_T::peer_name
char * peer_name
Definition:
ze-filter-data.h:146
dresult_T::reply
char * reply
Definition:
ze-filter-data.h:72
CTXPRIV_T::netScores
msg_scores_T netScores
Definition:
ze-filter-data.h:177
CTXPRIV_T::env_from
char * env_from
Definition:
ze-filter-data.h:160
CTXPRIV_T::helohost
char * helohost
Definition:
ze-filter-data.h:149
CTXPRIV_T::score_str
char * score_str
Definition:
ze-filter-data.h:182
CTXPRIV_T::ehlo_flags
uint32_t ehlo_flags
Definition:
ze-filter-data.h:121
CTXPRIV_T::ident
char * ident
Definition:
ze-filter-data.h:147
CTXPRIV_T::sm
sm_mac_T * sm
Definition:
ze-filter-data.h:138
CTXPRIV_T::body_scan_state
int body_scan_state
Definition:
ze-filter-data.h:192
CTXPRIV_T::nb_bham
int nb_bham
Definition:
ze-filter-data.h:187
ze-log-files.h
ze-callbackchecks.h
mx_check_level
int mx_check_level
Definition:
ze-mxcheck.c:69
CTXPRIV_T::status_str
char * status_str
Definition:
ze-filter-data.h:183
ze-log-quarantine.h
MSG_T
Definition:
ze-filter-data.h:55
CTXPRIV_T::hdr_subject
char * hdr_subject
Definition:
ze-filter-data.h:170
CTXPRIV_T::nb_open
int nb_open
Definition:
ze-filter-data.h:113
ze-check-connection.h
CTXPRIV_T::rej_badrcpt
bool rej_badrcpt
Definition:
ze-filter-data.h:243
CTXPRIV_T::rej_greyreply
int rej_greyreply
Definition:
ze-filter-data.h:247
CTXPRIV_T::hdr_from
char * hdr_from
Definition:
ze-filter-data.h:168
CTXPRIV_T::netclass
netclass_T netclass
Definition:
ze-filter-data.h:117
CTXPRIV_T::nb_unknown_cmd
int nb_unknown_cmd
Definition:
ze-filter-data.h:85
CTXPRIV_T::rej_empty
bool rej_empty
Definition:
ze-filter-data.h:242
CTXPRIV_T::dspScores
msg_scores_T dspScores
Definition:
ze-filter-data.h:178
CTXPRIV_T::dbrcpt_reject
int dbrcpt_reject
Definition:
ze-filter-data.h:215
MTA_caps_T::f3
unsigned long f3
Definition:
ze-filter-data.h:65
CTXPRIV_T::nb_mbadrcpt
int nb_mbadrcpt
Definition:
ze-filter-data.h:223
uint32_t
long uint32_t
Definition:
ze-sys.h:489
MSG_SPOOL_T
Definition:
ze-spool.h:56
CTXPRIV_T::flags
msg_flags_T flags
Definition:
ze-filter-data.h:152
ze-callback.h
MTA_caps_T
Definition:
ze-filter-data.h:60
CTXPRIV_T::sm_msgid
char * sm_msgid
Definition:
ze-filter-data.h:158
CTXPRIV_T::spamchk
spamchk_T spamchk
Definition:
ze-filter-data.h:180
dresult_T
Definition:
ze-filter-data.h:68
content_field_T
Definition:
ze-mimelist.h:53
CTXPRIV_T::save_why
int save_why
Definition:
ze-filter-data.h:133
dresult_T::result
sfsistat result
Definition:
ze-filter-data.h:70
CTXPRIV_T::t_close
time_t t_close
Definition:
ze-filter-data.h:101
include
ze-filter-data.h
Generated by
1.8.13