Fixed unit tests for sender

Signed-off-by: Janos SUTO <sj@acts.hu>
This commit is contained in:
Janos SUTO
2020-12-13 08:36:12 +01:00
parent 4b37b4fc1a
commit 58a164467e
10 changed files with 23 additions and 19 deletions

View File

@ -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){

View File

@ -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';

View File

@ -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);

View File

@ -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;

View File

@ -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);

View File

@ -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);