Jméno | Typ | Počáteční hodnota | Dokumentace |
func | *threadfunc | ? | funkce pro thread |
pop3s | int | ? | socket na POP3 |
smtps | int | ? | socket na SMTP |
sock | int | ? | socket pro thread |
valid_char | char[256] | ? | platne znaky v emailu |
whitelist_lock | pthread_mutex_t | ? | lock na zmenu whitelistu |
Modifikátor | Jméno | Parametry | Dokumentace |
void | add_to_whitelist | (config *cfg,const char *line) | zapise adresu do whitelistu |
int | email_in_list | (tree *list,const char *email) | vraci 1 pokud je email v seznamu list, jinak 0 |
const char * | get_cmd_param | (const char *cmd,const char *input) | otestuje jestli vstup input zacina na cmd a vrati odkaz na prvni nemezerovy znak za prikazem cmd, nebo NULL, pokud to neni spravny prikaz |
void | init_config | (int argc,char **argv) | nahraje konfiguracni soubor a pak ho (eventuelne) upravi podle commandline parametru |
int | is_canonical_email | (const char *string,int s_len) | vraci true, pokud podretezec retezce string delky strlen je email fe formatu user@domena |
void | line_checkwhitelist | (config *cfg,char *line) | ZKONTROLUJE jestli radka neobsahuje ^RCPT TO:(.*)$ a pokud ano, prida \1 do whitelistu |
void | log_error | () | posle do logu chybovou hlasku podle kodu v ERRNO |
void | log_init | () | inicializuje logovani hlasek |
void | log_message | (int priority,const char *err) | zaloguje hlasky. Typicky do syslogu, ale pri debugovani i na STDOUT |
void | log_messagef | (int priority, const char *fmt,...) | jako log_message(), ale s formatovanym retezcem jako u printf |
int | main | (int argc,char **argv) | main - hlavni funkce programu |
void | main_rebind | (int change_smtp,int change_pop3) | zmeni sockety, pokud je po zmene konfigurace nuntno naslouchat na jinych portech |
void | make_vch_table | () | inicializuje tabulku valid_char |
void | message_dots | (charbuffer *b,int cnt) | Escape na tecky v smtp komunikaci cnt==-1: z .. na jednom radku udela . cnt==+1: z . na jednom radku udela .. |
void | net_thread | (thread_rec *t) | wrapper kolem funkce socketu. Funkce (vnitrni) po sobe socket nezvira, to dela tato funkce |
void | net_thread_run | (thread_rec t) | spusti sitovy thread s danou funkcin a socketem |
char * | parse_email | (const char *email) | rozparsuje email z formatu typu "neco" a podobnych na normalizovany tvar user@domena |
int | pipe_filter | (charbuffer *msg,charbuffer *msg_out,pid_t pid,int h_in,int h_out) | zapise obsah msg do h_in, zaroven vyzvedne obsah z h_out do bufferu msg_out, a po ukonceni procesu pid vrati jeho navratovou hodnotu |
int | pop3_handler | (int s,config *cfg) | POP3 socket handler |
int | run_classificator | (charbuffer *b_message,const char *prog) | na zpravu spusti klasifikator dle nastaveni a vrati hodnotu zpravy |
void | run_pipe | (const char *prog, int *h_in,int *h_out,pid_t *pid) | spusti program a k nemu oboustrannou pipe - vrati handle na zapis do programu (h_in) a handle na cteni programu (h_out) Vrati tez pid child procesu (aby se dalo cekat pres waitpid, az vypise vsechen vystup) |
void | run_postaction | (charbuffer *b_message,priority_list *filt,int state) | na zpravu spusti programy postaction dle nastaveni |
void | run_postfilter | (charbuffer *b_message,priority_list *filt,int state) | na zpravu spusti programy postfilter dle nastaveni |
charbuffer | run_prefilter | (charbuffer *b_message,priority_list *filt) | spusti na zpravy b_message prefilter, vrati prefiltrovanou zpravu |
int | run_prog | (charbuffer *msg,const char *prog,programtype pt) | spusti program, msg je buffer, ktery obsahuje vstupni zpravu, pokud pt je pt_subjectmark, nebo pt_filter, bude nahrazena vystupni zpravou |
void | run_programlist | (charbuffer *msg,priority_list *filt,int state,programtype pt) | spusti vsechny programy postupne v jejich poradi ze seznamu list na zpravu msg, programy dostanou parametry state a pt |
void | run_subjmark | (charbuffer *b_message,priority_list *filt,int state) | na zpravu spusti znackovac Subjectu dle nastaveni |
int | smtp_handler | (int s,config *cfg) | SMTP proxy - start double pipe, pass input/output unchanged, if input is ^RCPT TO:(.*)$ then add $1 to whitelist (maybe: only if 250 response code received) if input is DATA, then wait for . |