--------------------------------------------------------------------
SMTP-Proxy (alias SMTP-gated)
Strona domowa projektu: http://smtp-proxy.klolik.org
Bartlomiej Korupczynski
bartek {malpa} klolik {kropka} org
(c) Warszawa 2004-2005
--------------------------------------------------------------------


WSTEP
-----

Co potrafi lub nie potrafi:
- Skanowanie odbywa sie na bieco; nie ma w zwizku z tym opnie i
ewentualnych timeout-w serwera {by moe clamsmtpd te tak robi}
- Akceptuje STARTTLS oraz PIPELINING (w przygotowaniu take akceptacja
chunking RFC3030)
- Umoliwia zbudowanie farmy 'skanerw' (wymaga to spatchowanego oidentd,
by moe wkrtce wprowadz jakie prostsze rozwizanie), dla jednego bd
kilku routerw. (*)
- Umoliwia wstawianie w nagwku informacji o rdowym IP (i ewentualnie
idencie - patrz punkt poprzedni)
- Dziaa z NAT-em wycznie netfilter-owym
- Ma bardzo fajny podgld w to co si aktualnie dzieje ;)
- Umoliwia wprowadzenie ogranicze na ilo sesji: wszystkich, per IP
(ewentualnie per ident - patrz punkt *)
- Odrzucanie pocze przy wysokim loadavg (z komunikatem)
- Ograniczenie skanowania do przesyek mniejszych ni administrator sobie
zayczy
- Wsppraca z clamav oraz mksd (to drugie nie testowane od jakiego czasu)
- Umoliwia skanowaniem spamassasinem kadej przesyki (rezultaty lduj w
syslogu).
- Dla kadego poczenia tworzy nowy proces
- (obecnie) Nie obsuguje akcji w wypadku napotkania wirusa; do klienta
dociera wycznie komunikat o jego napotkaniu. W przygotowaniu jest blokada
czasowa dla takiego osobnika.
- Nie ma zbyt uporzdkowanego kodu ;]
- Brak szczeglnej dokumentacji


Wbrew pozorom nie ma (narazie) supportu dla PostgreSQL.
Obsluga BDAT nie jest obecnie (<=1.4.4) przetestowana i prawdopodobnie nie
dziala.


INSTALACJA
----------

Plik wykonywalny instaluje sie domyslnie w /usr/local/sbin.
Do kompilacji potrzebne sa naglowki netfilter-a. Jesli jadro zainstalowane
zostalo z dystrybucji, to zazwyczaj oznacza to koniecznosc instalacji pakietu
iptables-dev badz iptables-devel.


0. Dostosowanie kompilacji - przejrzyj src/setup.h oraz src/Makefile
   W chwili obecnej interesujace moga byc polskie komunikaty (#define POLISH).

1. Kompilacja

	./configure
	make

   Jesli nie zostanie wykryty ipfw na FreeBSD, mozna sprobowac tak:

	./configure --enable-nat
	make

2. Instalacja (domyslnie w /usr/local/sbin)

	make install

   W katalogu lib/ znajduja sie skrypty startowe dla debiana i redhata, ktore
   nalezy umiescic w /etc/rc.d/init.d/

4. Ewentualne uaktualnienia: podmienia program, weryfikuje
   plik konfiguracyjny i restartuje proces

	./configure
	make
	su root
	sh upgrade.sh


ZMIANY KONFIGURACJI
-------------------


1.4.12-rc5: zmiana nazwy opcji nat_header na nat_header_type

KONFIGURACJA - WSTEP
--------------------

1. Wszystkie opcje konfiguracyjne opisane sa w kodzie programu
   (wystarczy znalezc tekst "smtp-proxy.isp").

2. Uzywane ustawienia mozna zweryfikowac poprzez:

	smtp-gated -t /etc/smtp-gated.conf
	smtp-gated -T /etc/smtp-gated.conf (*)

   Powinna sie wyswietlic rzeczywista konfiguracja uzywane przez program.
   Jesli nie pokaze sie nic, nalezy poszukac bledow w logach systemowych.
   (*) drugie wywolanie pokazuje dodatkowo uzywane teksty komunikatow.
   Komunikaty takze mozna dostosowac do wlasnych potrzeb.

3. Utworzenie katalogow potrzebnych do pracy

   Skaner musi miec dostep do plikow "spool_path" (domyslnie jest to
   /var/spool/smtp-gated/msg). Ja preferuje takie rozwiazanie:

	mkdir -p /var/spool/smtp-gated/msg /var/spool/smtp-gated/lock
	chmod 750 /var/spool/smtp-gated
	chown -R smtpgw:smtpgw /var/spool/smtp-gated

   A nastepnie dodanie np. ClamAV do grupy smtpgw.
   Powyzszy chown mozna tez zamienic na:

	chown -R smtpgw:clamav /var/spool/smtp-gated

4. Plik konfiguracyjny do edycji mozna przygotowac przez:

	smtp-gated -t >nowy_plik

   Wartosci domyslne (lub nie uzywane) nalezy zakomentowac, aby nie
   przeszkadzaly przy upgrade-ach. Zostawiamy tylko to co jest inne
   niz domyslne. Linie zaczynajace sie od znakow '#' oraz ';' sa ignorowane.
   Ignorowane sa takze spacje i tabulatory na poczatku i koncu linii, oraz
   po nazwie opcji. Wszystkie inne znaki sa traktowane jako czesc parametru
   (takze cudzyslowy).
   Opcje konfiguracyjne s opisane dokadnie w src/vars.h

5. Przekierowanie iptables (najprostsza wersja)

	iptables -t nat -A PREROUTING
	  -p tcp --dport 25 -j DNAT --to ip_proxy:port_proxy

   Najlepiej jednak przekierowac wylacznie polaczenia z interfejsu
   wewnetrznego i sieci wewnetrznej, np.:

	iptables -t nat -A PREROUTING
	  -p tcp --dport 25 -i eth1 -s 192.168.1.0/24 -j DNAT --to ip:port

6. Status demona mozemy uzyskac poprzez:

	/etc/rc.d/init.d/smtp-gated status


UWAGA!
   Jesli dzieje sie cos nie halo i nie wiadomo o co chodzi - w pierwszej
   kolejnosci sprawdz logi systemowe.

   Poziom logowania okreslony przez log_level dotyczy *wszystkich* wpisow,
   a co za tym idzie ustawiony zbyt nisko moze wyciac np. wpisy dotyczace
   adresow e-mail.

BEZPIECZENSTWO
--------------

1. Nalezy wziac pod uwage fakt, iz nie zabezpieczony smtp-gated (czyli w
   domyslnej konfiguracji) bedzie open-relay-em (czyli de facto pomaga spamerom
   i wirusom). Rozwiazaniem tego problemu moga byc:

   a) Zabezpieczenie portu na ktorym slucha smtp-gated przy pomocy iptables

	iptables -I INPUT -p tcp --dport 9199 ! -s 192.168.1.0/24 -j DROP

      badz

	iptables -I INPUT -p tcp --dport 9199 -i eth0 -j DROP

      gdzie:
         192.168.1.0: siec wewnetrzna
         eth0: interfejs zewnetrzny (do Internetu)

   b) Ustawienie bind_address na adres interfejsu sieci wewnetrznej, dzieki
      czemu wylacznie uzytkownicy w jej obrebie beda mogli z niego korzystac.

2. Na wiekszosci systemow porty od 1024 w zwyz, moga byc uzywane przez dowolnego
   uzytkownika. Nie nalezy wiec ich uzywac na serwerze z publicznym dostepem do
   shella. Nalezy wtedy zmienic "port" na dowolny nieuzywany, ponizej 1024.
 
3. Wszystkie wiadomosci sa przechowywane w plikach tymczasowych. Nalezy
   ograniczyc do nich dostep dla innych uzytkownikow. Dostep musi byc jednak
   zapewniony dla ClamAV i ewentualnie SpamAssassina. Najlatwiej to uzyskac
   ustawiajac odpowiednie grupy dla procesow.

INNE
----

Uzywasz tego oprogramowania na wlasne ryzyko. Autor nie ponosi
odpowiedzialnosci za jakiekolwiek straty badz szkody spowodowane jego
uzyciem, ani odpowiedzialnosci z jakichkolwiek innych przyczyn.

Jesli uzywasz programu powyzej miesiaca, chetnie sie dowiem o jego
stabilnosci. Tym chetniej im bedzie ona nizsza ;) Wszelkie tego typu
informacje prosze na maila, wraz z gzip-owanym logiem.

Adres: smtp-proxy {mapa} klolik {kropka} org


PODZIEKOWANIA
-------------

Dla Grzegorza Janoszki za zgloszenie kilku niedorobek.


: vim: tw=80 :

