mirror of
https://bitbucket.org/jsuto/piler.git
synced 2025-06-13 12:27:03 +02:00
@ -71,7 +71,7 @@ int import_message(struct session_data *sdata, struct data *data, struct config
|
||||
sdata->import = 1;
|
||||
|
||||
state = parse_message(sdata, 1, data, cfg);
|
||||
post_parse(sdata, data, &state, cfg);
|
||||
post_parse(sdata, &state, cfg);
|
||||
rule = check_against_ruleset(data->archiving_rules, &state, sdata->tot_len, sdata->spam_message);
|
||||
|
||||
if(rule){
|
||||
|
18
src/parser.c
18
src/parser.c
@ -68,11 +68,21 @@ struct parser_state parse_message(struct session_data *sdata, int take_into_piec
|
||||
add_recipient(data->import->extra_recipient, strlen(data->import->extra_recipient), sdata, &state, data, cfg);
|
||||
}
|
||||
|
||||
// If both Sender: and From: headers exist, and they are different, then append
|
||||
// the From: address to recipients list to give him access to this email as well
|
||||
|
||||
if(state.b_sender_domain[0] && strcmp(state.b_from, state.b_sender)){
|
||||
char tmpbuf[SMALLBUFSIZE];
|
||||
get_first_email_address_from_string(state.b_from, tmpbuf, sizeof(tmpbuf));
|
||||
tmpbuf[strlen(tmpbuf)] = ' ';
|
||||
add_recipient(tmpbuf, strlen(tmpbuf), sdata, &state, data, cfg);
|
||||
}
|
||||
|
||||
return state;
|
||||
}
|
||||
|
||||
|
||||
void post_parse(struct session_data *sdata, struct data *data, struct parser_state *state, struct config *cfg){
|
||||
void post_parse(struct session_data *sdata, struct parser_state *state, struct config *cfg){
|
||||
int i;
|
||||
|
||||
clearhash(state->boundaries);
|
||||
@ -87,12 +97,6 @@ void post_parse(struct session_data *sdata, struct data *data, struct parser_sta
|
||||
if(strlen(state->b_sender) > 255) state->b_sender[255] = '\0';
|
||||
if(strlen(state->b_sender_domain) > 255) state->b_sender_domain[255] = '\0';
|
||||
|
||||
// TODO: If both Sender: and From: headers exist, and they are different, then
|
||||
// append the From: address to recipients list to give him access to this email
|
||||
// as well
|
||||
|
||||
|
||||
|
||||
// Truncate the message_id if it's >255 characters
|
||||
if(strlen(state->message_id) > 255) state->message_id[255] = '\0';
|
||||
|
||||
|
@ -10,7 +10,7 @@
|
||||
#include "defs.h"
|
||||
|
||||
struct parser_state parse_message(struct session_data *sdata, int take_into_pieces, struct data *data, struct config *cfg);
|
||||
void post_parse(struct session_data *sdata, struct data *data, struct parser_state *state, struct config *cfg);
|
||||
void post_parse(struct session_data *sdata, struct parser_state *state, struct config *cfg);
|
||||
int parse_line(char *buf, struct parser_state *state, struct session_data *sdata, int take_into_pieces, char *writebuffer, unsigned int writebuffersize, char *abuffer, unsigned int abuffersize, struct data *data, struct config *cfg);
|
||||
|
||||
void init_state(struct parser_state *state);
|
||||
|
@ -163,7 +163,7 @@ int process_email(char *filename, struct session_data *sdata, struct data *data,
|
||||
|
||||
parser_state = parse_message(sdata, 1, data, cfg);
|
||||
|
||||
post_parse(sdata, data, &parser_state, cfg);
|
||||
post_parse(sdata, &parser_state, cfg);
|
||||
|
||||
if(cfg->syslog_recipients == 1){
|
||||
char *rcpt = parser_state.b_to;
|
||||
|
@ -124,7 +124,7 @@ uint64 retrieve_email_by_metadata_id(struct session_data *sdata, struct data *da
|
||||
snprintf(sdata->filename, SMALLBUFSIZE-1, "%s", filename);
|
||||
|
||||
state = parse_message(sdata, 1, data, cfg);
|
||||
post_parse(sdata, data, &state, cfg);
|
||||
post_parse(sdata, &state, cfg);
|
||||
|
||||
rc = store_index_data(sdata, &state, data, stored_id, cfg);
|
||||
|
||||
|
@ -147,7 +147,7 @@ int main(int argc, char **argv){
|
||||
state = parse_message(&sdata, 1, &data, &cfg);
|
||||
|
||||
printf("post parsing...\n");
|
||||
post_parse(&sdata, &data, &state, &cfg);
|
||||
post_parse(&sdata, &state, &cfg);
|
||||
|
||||
printf("message-id: %s / %s\n", state.message_id, state.message_id_hash);
|
||||
printf("from: *%s (%s)*\n", state.b_from, state.b_from_domain);
|
||||
|
Reference in New Issue
Block a user