Konfiguracja serwera pocztowego w OpenWrt/Kamikaze
Ostatnia zmiana: 2013-11-26 18:43


Changelog
2010-03-22
- modyfikacja sposobu rozpakowania szablonów


Poniższy poradnik prezentuje sposób instalacji i konfiguracji serwera pocztowego XMail w OpenWrt Kamikaze (8.09.x/trunk). Ze względu na ilość danych które XMail zapisuje niezbędne jest posiadanie zewnętrznego nośnika - pendrive lub dysku USB, chociaż ze względów na częste zapisy raczej to drugie.

UWAGA 1: Źle skonfigurowany serwer pocztowy może posłużyć do wysyłania spamu przez złych ludzi. Więc jeżeli nie musisz - nie udostępniaj serwera w internecie, tylko i wyłączenie w sieci lokalnej.
UWAGA 2: Niezbędny jest oczywiście adres publiczny (lub przekierowane porty z rutera brzegowego) oraz rekord MX danej domeny wskazujący na ten adres lub po prostu skonfigurowana domena na ten adres. Ten poradnik zakłada że już tak jest zrobione i w szczególności nie tłumaczy w ogóle jak to zrobić.
UWAGA 3: Niektóre serwery pocztowe odmawiają przyjęcia poczty jeżeli domena jest niezaufana, jest na czarnej liście lub pochodzi z niepewnej klasy adresowej. Z tego też względu w większości przypadków odrzucane są mejle pochodzące z neostrady, która uważana jest za sieć spamerską.

Założenia:
- obsługujemy domenę moja_domena.pl
- zakładamy administratora o nazwie postmaster z hasłem admin
- zakładamy użytkownika user1 z hasłem 1234567890 w w/w domenie
- udostępniamy tylko smtp/pop3
- dysk podmontowany jest w katalogu /hdd. System plików może być dowolny, działa poprawnie nawet z vfat (ciekawostka!)

Instalacja



    # opkg update
    # opkg install xmail

Filozofii tu nie ma. Wraz z pakietem zainstalują się zależności - uclibcxx, zlib, libopenssl oraz libpthread. Należy więc upewnić się, że mamy dostatecznie dużo wolnego miejsca do instalacji.

Konfiguracja

Odblokowanie portów

Jeżeli chcemy aby nasz serwer był widoczny w sieci internet, należy umożliwić światu komunikację z nim. W tym celu należy odblokować porty 25 (smtp) i 110 (pop3) w standardowy sposób poprzez dopisanie odpowiednich reguł do firewalla:


    # uci add firewall rule
    # uci set firewall.@rule[-1]._name=smtp
    # uci set firewall.@rule[-1].src=wan
    # uci set firewall.@rule[-1].target=ACCEPT
    # uci set firewall.@rule[-1].proto=tcp
    # uci set firewall.@rule[-1].dest_port=25
    # uci add firewall rule
    # uci set firewall.@rule[-1]._name=pop3
    # uci set firewall.@rule[-1].src=wan
    # uci set firewall.@rule[-1].target=ACCEPT
    # uci set firewall.@rule[-1].proto=tcp
    # uci set firewall.@rule[-1].dest_port=110
    # uci commit firewall
    # /etc/init.d/firewall start

Konfiguracja systemu plików

Najważniejsza sprawa to określenie gdzie będzie tzw. MAIL_ROOT czyli miejsce przechowywania plików konfiguracyjnych oraz poczty użytkowników. Jeżeli dysk mamy podmontowany w /hdd to określmy katalog roboczy na /hdd/poczta, czyli


    # mkdir -p /hdd/poczta
    # uci set xmail.@xmail[0].mail_root=/hdd/poczta
    # uci commit xmail

Tworzymy ten katalog na dysku, a następnie w pliku konfiguracyjnym /etc/config/xmail (składnia zgodna z UCI) ustawiamy ten katalog. Plik /etc/config/xmail definiuje jakie usługi można włączyć przez xmail, można zostawić go na razie w takiej postaci jakiej jest.
Następnie należy utworzyć odpowiednie pliki i katalogi niezbędne do działania serwera e-mail. Szablon dostępny w pliku /etc/MailRoot.tar.bz2. I teraz uwaga: samo archiwum można później skasować w celu oszczędności miejsca. Ale można je zostawić jeżeli chcemy mieć szablon pod ręką.


    # cd /hdd/poczta
    # bzcat /etc/MailRoot.tar.bz2 > MailRoot.tar
    # tar xvf MailRoot.tar
    # rm /etc/MailRoot.tar.bz2

Konfiguracja XMail

W pierwszym kroku należy wygenerować hasło administratora. Robi się to przy pomocy programu XMCrypt


    # XMCrypt admin
    0401080c0b

Wygenerowaliśmy sobie zakodowane hasło z admin. Teraz należy to wpisać do pliku /hdd/poczta/ctrlaccounts.tab w postaci


    "user"<TAB>"pass"

Gdzie <TAB> oznacza znak tabulacji, user to nazwa administratora a pass to wygenerowane wcześniej hasło. Można to zrobić np. edytorem vi. Czyli sam plik ma wyglądać następująco:


    # cat /hdd/poczta/ctrlaccounts.tab
    "postmaster"	"0401080c0b"

Uruchamiamy teraz XMail poleceniem


    # /etc/init.d/xmail enable
    # /etc/init.d/xmail start

Przy pierwszym uruchomieniu tworzone są pewne katalogi więc może chwilę potrwać zanim będzie działać na prawdę. Jeżeli wszystko jest w porządku to po wydaniu polecenia ps powinien być widoczny proces XMail (a raczej kilka, w zależności od konfiguracji)

Konfiguracja domeny i kont pocztowych

Serwer XMail udostępnia specjalny protokół komunikacyjny i nasłuchuje w tym celu na porcie 6017. Aby skonfigurować go wystarczy więc zwykły program telnet (obojętnie już czy z rutera czy z komputera w sieci lokalnej), który połączy się z portem 6017 a następnie wyda polecenia w określonym formacie. Polecenia zawsze mają identyczną budowę: polecenie, następnie znak tabulacji, parametr (lub ich wiele oddzielone tabulacją) i Enter.

Połączenie administracyjne z serwerem
Najpierw należy podłączyć się do serwera i zalogować się jako administrator (w tym celu poprzednio były modyfikowany plik ctrlaccounts.tab). Poniżej telnet wykonano z poziomu rutera, dlatego też adres to 127.0.0.1 czyli odwołujemy się do rutera.


    # telnet 127.0.0.1 6017
    +00000 <1255799280.18451@127.0.0.1> XMail 1.26 CTRL Server; Sat, 17 Oct 2009 19:08:00 +0200
    postmaster	admin
    +00000 OK

Pierwsza linia to zgłoszenie się serwera pocztowego, +00000 oznacza poprawnie wykonanie polecenia. Następnie wprowadzamy użytkownika (postmaster), naciskamy Tab, następnie hasło (admin) i Enter. Odpowiedź +00000 oznacza poprawnie zalogowanie się jako administrator.

Dodanie nowej obsługiwanej domeny


    domainadd       moja_domena.pl
    +00000 OK
    domainlist
    +00100 OK
    "xmailserver.test"
    "moja_domena.pl"
    .
    domaindel       xmailserver.test
    +00000 OK

Dodana została domena moja_domena.pl, następnie wyświetlone wszystkie obsługiwane domeny i usunięta xmailserver.test (to domena domyślna, zawarta w plikach konfiguracyjnych).

Dodanie użytkownika do domeny


    useradd	moja_domena.pl	user1	1234567890	U
    +00000 OK

Dodajemy (useradd) do domeny (moja_domena.pl) użytkownika (user1) z hasłem (1234567890). I jest to zwykły (U) użytkownik, nie lista.

Zamknięcie połączenia


    quit
    +00000 OK
    Connection closed by foreign host

To wszystko!

Oczywiście możliwości konfiguracyjnych jest o wiele więcej - listy wysyłkowe, aliasy i wszystkie inne sprawy normalnie spotykane w serwerach pocztowych. Po szczegóły odsyłam do dokumentacji projektu (http://www.xmailserver.org/Readme.html) lub na inne strony użytkowników (http://www.geocities.com/xmailearn/).

Jak sprawdzić czy działa? Należy utworzyć w dowolnym programie pocztowym nowe konto o parametrach:
- serwer smtp/pop3: moja_domena.pl
- nazwa użytkownika: user1@moja_domena.pl
- hasło: 1234567890
bez ssl/tls. Jeżeli serwer obsługuje tylko jedną domenę można pominąć w loginie domenę, w przeciwnym przypadku należy ja podać w w/w sposób. A następnie po prostu wysłać mejla z tego konta.

Dalsza konfiguracja

Domyślna konfiguracja serwera

Czyli nazwy serwera itd. zawarte są w pliku server.tab. Opcje są raczej czytelne; należy je zmienić na odpowiednią domenę (w szczególności RootDomain/SmtpServerDomain/POP3Domain/HeloDomain).

Sprawdzenie stanu użytkownika



    # telnet 127.0.0.1 6017
    +00000 <1255799819.25619@127.0.0.1> XMail 1.26 CTRL Server; Sat, 17 Oct 2009 19:16:59 +0200
    postmaster	admin
    +00000 OK
    userstat	moja_domena.pl	user1
    +00100 OK
    "RealAddress"	"user1@moja_domena.pl"
    "MailboxSize"	"848"
    "MailboxMessages"	"1"
    "LastLoginTimeDate"	"Sat, 17 Oct 2009 19:16:19 +0200"
    "LastLoginIP"	"192.168.1.155"
    .
    quit
    +00000 OK
    Connection closed by foreign host

Zakończenie

Docelowo należy pamiętać o modyfikacji pliku /etc/config/xmail - wyłączyć zbędne usługi, zmniejszyć ilość poszczególnych procesów (szczególne niezbędne przy słabej maszynie jakiej jest ruter). Należy też pamiętać o właściwej konfiguracji samego xmail, wpisaniu parametrów serwera. Przede wszystkim należy zabezpieczyć go przed spamem (czyli żeby nie był open relay - plik smtprelay.tab). Sam XMail może dość poważnie obciążyć ruter, zwłaszcza jeżeli mamy tam mało ramu i niezbyt silny procesor.
Samą konfigurację można także wykonać edytując określone pliki (jak się wie co) lub wykorzytsać program CtrlClnt czy MkUsers dostępne standardowo w paczce.

Informacje o filtrach i zabezpieczeniach xmail można znaleźć pod adresem http://xmail.nomadcf.com/ (znalezione przez macmus, dziękujemy!)