#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <unistd.h>
#include <sys/types.h>
#include <ctype.h>
#include <regex.h>
#include <locale.h>
#include <errno.h>
Makródefiníciók | |
#define | ERROR_NETWORK 3 |
#define | ERROR_PARAM 4 |
#define | ERROR_CODING 5 |
#define | RET_OPENRELAY 1 |
#define | RET_NOT_OPEN_RELAY 0 |
Függvények | |
int | mailaddr_test (char *) |
void | get_params (int argc, char *argv[], struct param_t *p) |
void | default_params (struct param_t *p) |
void | print_message (char from, char *msg_text) |
int | send_message (int sock, char *msg_text, int verbose) |
int | rt_quit (int sock, int ret, int verbose) |
int | receive_message (int sock, int answer_ok, char *msg_text, int msg_len, int timeout, int verbose) |
void | usage (void) |
int | test_smtp (int sock, struct param_t *params) |
int | main (int argc, char *argv[]) |
|
programozási hiba, vagy standard függvények hibái Definíció a(z) openrt.c fájl 30. sorában. Hivatkozások: get_params(), mailaddr_test(), print_message(), rt_quit() és test_smtp(). |
|
hálózati hiba Definíció a(z) openrt.c fájl 26. sorában. Hivatkozások: main(), receive_message() és rt_quit(). |
|
Elrontott paraméterezés a felhasználótól Definíció a(z) openrt.c fájl 28. sorában. Hivatkozások: get_params(), main() és rt_quit(). |
|
Definíció a(z) openrt.c fájl 33. sorában. Hivatkozások: receive_message(), rt_quit() és test_smtp(). |
|
Definíció a(z) openrt.c fájl 32. sorában. Hivatkozások: rt_quit() és test_smtp(). |
|
Alapéretlmezett adatok beírása az adatstruktúrába Definíció a(z) openrt.c fájl 153. sorában. Hivatkozások param_t::comment, param_t::from, param_t::help, param_t::port, param_t::timeout, param_t::to és param_t::verbose. Hivatkozások: main(). |
|
Paraméterek kinyerése, adatstruktura feltöltése A program hívásakor megadott paramétereknek megfelelő értékeket állítja be az adatstuktúrában, valamint ellenőrzi is azokat. Lehetésges paramétereink valának... tesztlevél feladója tesztlevél címzettje További szöveg a tesztlevélbe az alapértelmezetten kívül Ismeretlen opció Ha maradt még feldolgozatlan paraméter, akkor az a host lesz - illetve muszáj annak lennie. Ha még mindig van paraméter, akkor annak a port-nak kell lennie - ez már csak opcionális. Eldöntjük, hogy int-e, illetve megfelelő-e az értéke. Ha nincs port, akkor marad a default (default_params() állítja). Ha még mindig van paraméter... az már nekünk tutira nem kell, valamit elírhatott a felhasználó. Definíció a(z) openrt.c fájl 53. sorában. Hivatkozások param_t::comment, ERROR_CODING, ERROR_PARAM, param_t::from, param_t::help, param_t::host, mailaddr_test(), param_t::port, param_t::timeout, param_t::to és param_t::verbose. Hivatkozások: main(). |
|
Mailcim ervenyessegenek tesztelese (regexp alapjan)
Egyszeru regexp, a hibak nagy reszet kiszuri Itt mar komoly gondok vannak... Definíció a(z) openrt.c fájl 473. sorában. Hivatkozások ERROR_CODING. Hivatkozások: get_params(). |
|
main() - szokasos argumentumok... Rootkent inkabb ne hasznaljuk... Ha nem adott meg parametert, akkor sugo megadott parameterek kezelese Teszt Kapcsolat lezeras es kilepes Definíció a(z) openrt.c fájl 505. sorában. Hivatkozások default_params(), ERROR_NETWORK, ERROR_PARAM, get_params(), param_t::help, param_t::host, param_t::port, rt_quit(), test_smtp(), usage() és param_t::verbose. |
|
Verbose üzenetek kiírása a képernyőre Tobb sorból álló üzenetket is kezel, minden sor elérakja a >>> <<< stringek valamelyikét a from paraméter értékétől függően (C, S)
tokenekre bontjuk, soronkent, majd soronkent kiirjuk Definíció a(z) openrt.c fájl 171. sorában. Hivatkozások ERROR_CODING. Hivatkozások: receive_message() és send_message(). |
|
Üzenet vétele az SMTP szervertől (és ellenőrzése)
Megkeresi az elso szokozt az uzenetben. Elotte lesz a kod, ami nekunk kell Ervenyes-e az uzenetkod? Ha ilyen kapunk, akkor tuti nem open-relay, ki is lephetunk Talan nem a legszebb, de hatekony Definíció a(z) openrt.c fájl 274. sorában. Hivatkozások ERROR_NETWORK, print_message(), RET_NOT_OPEN_RELAY és rt_quit(). Hivatkozások: test_smtp(). |
|
Kilépés a programból és (igény szerint) a kapcsolat lezárása
Definíció a(z) openrt.c fájl 230. sorában. Hivatkozások ERROR_CODING, ERROR_NETWORK, ERROR_PARAM, RET_NOT_OPEN_RELAY, RET_OPENRELAY és send_message(). Hivatkozások: main() és receive_message(). |
|
Üzenet küldése az SMTP szervernek
Definíció a(z) openrt.c fájl 214. sorában. Hivatkozások print_message(). Hivatkozások: rt_quit() és test_smtp(). |
|
SMTP szerver tesztelese
Helyi gep nevenek meghatarozasa a koszoneshez Koszonunk, HELO kuldese Az EHLO már advanced, és arra több sor is jöhet válaszként (a HELO-ra nem). Az RFC szerint minden SMTP-nek tudnia kell a HELO-t is (és tudják is) 250 OK-ot varunk Fejlec - felado Itt szokott 550 lenni Ez lesz az uzenet Valami oknal fogva megsem sikerult elkuldeni a levelet Definíció a(z) openrt.c fájl 383. sorában. Hivatkozások param_t::comment, ERROR_CODING, param_t::from, receive_message(), RET_NOT_OPEN_RELAY, RET_OPENRELAY, send_message(), param_t::timeout, param_t::to és param_t::verbose. Hivatkozások: main(). |
|
Hasznalati utasitas megjelenitese Definíció a(z) openrt.c fájl 364. sorában. Hivatkozások: main(). |