Instruktaż/Tutorial Własny Serwer Pocztowy SMTPS+IMAPS+POP3 + DODATKI (Qnap jako ServerDNS + Autorun + ApacheConf)

Ciangi

System Engineer
Q Specialist
24 Styczeń 2016
122
26
28
31
QNAP
TVS-ECxx80
Ethernet
1 GbE
Tutorial dotyczący utworzenia własnej poczty SMTPS + POP3S + IMAPS + Zarządzanie Xmailem / Obserwacja logów z poziomu GUI


+ dodatek1 ( na pewno się przyda ) – qnap jako DNS Server w Twojej sieci ! ( dnsmasq ).

+ dodatek2 – przygotowanie konkretnego adresu url, przez który będzie dostęp do PHPXmail tylko w sieci lokalnej Qnapa.

+ wisienka na torcie, czyli konfiguracja autoruna dla xmaila, dovecota i dnsmasq.

#WYMAGANIA

To rozwiazanie zostalo przetestowane na Qnap TS-251+ jak i TVS-EC880 na wersji oprogramowania QTS 4.3.3

#KONIEC WYMAGAN

#PREINSTALACJA

1. Aby nie wydziwać z nazwami typu „foo” lub „example” przyjmijmy, że mamy wykupioną domenę o nazwie „faniqnapa.com”. Nasz server QNAP jest dostępny lokalnie pod aresem IP 192.168.120.120.

2. Na samym początku nie możemy zapomnieć o tym, że musimy przygotować sobie tzw. MX Record, który należy sobie skonfigurować samodzielnie w zależności gdzie mamy wykupioną domenę, czy to na ovh czy home.pl czy gdziekolwiek. Jednakże każda z tych dostawców usług posiada swoje własne przykłady w jaki sposób takie MX Recordy tworzyć.

Załóżmy, że nasz MX Record będzie pod nazwą „mail.faniqnapa.com”.

3. Pisząc ten tutorial nie można również zapomnieć o tym, że XMail (nie wiem czy dovecot) nie posiada już wsparcia, lecz na własnym przykładzie mogę powiedzieć, że po prawie rocznym wypuszczeniu go przeze mnie „na zewnątrz” serwer stoi dalej.

4. Kolejnym ważnym elementem jest ustawienie w routerze przekierowania portów: 25, 465, 110, 995, 143, 993, które odpowiadają kolejno za SMTP, SMTPS, POP3, POP3S, IMAP, IMAPS na adres ip Qnapa, czyli 192.168.120.120.
( Oczywiście jeżeli chcesz działać tylko na połączeniach szyfrowanych to otwórz tylko porty do szyfrowanych połączeń ).

#KONIEC PREINSTALACJI


#INSTALACJA

Na początek instalacja Entware:

Install on QNAP NAS · Entware-ng/Entware-ng Wiki · GitHub

Wszystko co należy zrobić jest opisane na tej stronie. Czyli, pobieramy odpowiedni plik .qpkg, następnie przechodzimy do AppCenter i wybieramy „ręczną instalację”.

Instalacja XMail:

Następnie z konsoli Qnapa wpisujemy komendę:
Kod:
# opkg update

# opkg install xmail

Instalacja PHPXmail:

Kolejny krok to instalacja PHPXmail ze strony

https://sourceforge.net/projects/phpxmail/

Instalacja Dovecot:

Kod:
# opkg update

# opkg install dovecot

Instalacja dnsmasq:

Kod:
# opkg update

# opkg install dnsmasq-full

# KONIEC INSTALACJI


#KONFIGURACJA

#Zacznijmy od XMaila.

Po instalacji XMaila pojawi nam się paczka w folderze /opt/etc/.

Rozpakujmy ją.

Kod:
# cd /opt/etc/

# mkdir MailRoot

# cd MailRoot

# tar xvjf /../MailRoot.tar.bz2

Zróbmy na sam początek porządek z plikiem “xmail” w folderze MailRoot.

Otwórzmy go i podmieńmy następujące linie:
Kod:
XMAIL_ROOT=/opt/var/MailRoot

XMAIL_CMD_LINE="-SX 1 -Qn 1 -Yt 1 -Ln 1 -PX 1 -CX 1"
NA
Kod:
XMAIL_ROOT=/opt/etc/MailRoot

XMAIL_CMD_LINE="-Mr 24 -SX 2 -Qn 1 -Yt 1 -Yi 1 -Ln 1 -PX 1 -CX 2 -Ph -Ql -Sl -Pl -Yl -Fl -Cl -Ll -Pw 180 -Sp 25 -Pp 110 -Cp 6017"

Co oznaczają określone komendy? Odsyłam do dokumentacji XMaila: XMail mail server v 1.27 - W skrócie - wszystko co jest przydatne do poprawnego działania XMaila.

#PRZERYWNIK

Teraz tak. Powoli zaczynają nam się pojawiać dwie drogi dotyczące ustawień XMaila. Mianowicie praca z XMailem jako root lub jako non-root.

Ja opiszę metodę działania XMaila z konta admina(roota). Jeżeli natomiast uważasz, że nie jest to bezpieczny pomysł zapraszam na link: Python Buzz Forum - XMail No Root



Według mnie, jeśli nie udostępniasz SSH ani na zewnątrz ani wewnątrz dla nikogo plus z racji, ze aktualnie na xmaila exploitów zadnych nie ma to tą drogę możesz śmiało wybrać.

#KONIEC PRZERYWNIKA

Idziemy dalej.

Nadszedł czas, aby ustawić sobie konto administratora do zarządzania XMailem z poziomu GUI.

Przechodzimy do folderu bin.

# cd /opt/etc/MailRoot/bin

Tworzymy sobie hasło do konta administratora:

# XMCrypt password

W wyniku otrzymamy: 15041616120a1701

Jest to zahaszowane słowo „password”. Kopiujemy.

Następnie w folderze MailRoot znajduje się plik „ctrlaccounts.tab”

Umieszczamy w nim zawartość np.

admin <TAB> 15041616120a1701

,gdzie „admin” jest to login, oznacza tabulację i na koniec zahaszowane hasło.

Plik zapisujemy.

Następnie przechodzimy do edycji pliku „server.tab”. Można go edytować również z poziomu GUI (PHPXmail), lecz na początku wyedytujmy go w dowolnym edytorze, który mamy pod ręką.

Tutaj podam przykładową zawartość tego pliku, po której nasz server powinien poprawnie funkcjonować:

Kod:
"RootDomain" <TAB> "faniqnapa.com"

"SmtpServerDomain"<TAB>"mail.faniqnapa.com"

"POP3Domain"<TAB>"mail.faniqnapa.com"

"HeloDomain"<TAB> "mail.faniqnapa.com"

"RemoveSpoolErrors"   <TAB> "0"

"Pop3LogPasswd"<TAB>             "0"

"MaxMTAOps"<TAB>   "16"

"ReceivedHdrType"<TAB>           "0"

"FetchHdrTags"          <TAB> "+X-Deliver-To,+Received,To,Cc"

"EnableCTRL-TLS"<TAB>                "1"

"EnableSMTP-TLS"<TAB>          "0"

"EnablePOP3-TLS"<TAB>          "1"

"EnableAuthSMTP-POP3"   <TAB> "0"

"SSLWantVerify"<TAB> "1"

"SSLAllowSelfSigned"<TAB>"0"

"SSLUseCertsFile"<TAB>         "1"

"SSLUseCertsDir"  <TAB> "1"

"DefaultSmtpPerms" <TAB> "MRVZ"

Plik zapisujemy. Prosze pamiętać, że tam gdzie jest napisane [tab] jest to znak tabulacji na klawiaturze, miedzy tabulatorami nie ma zadnych spacji.

Ustawienia SSL XMaila.

Przechodzimy do folder MailRoot.

# cd /opt/etc/MailRoot/

Tworzymy klucz prywatny oraz certyfikat:

Kod:
# openssl genrsa 2048 > server .key


# openssl req -new -x509 -key server .key -out server . cert -days 1095


# openssl req -new -key server .key -out CERTS .csr

W folderze MailRoot tworzymy katalog “certs”

# mkdir certs

I przenosimy do niego plik CERTS.csr

# mv CERTS.csr certs/

Następnie pobieramy pliki c_rehash i c_rehash.in
( które załączyłem tutaj:
c_rehash | openload
c_rehash.in | openload
) i przenosimy je do katalogu /etc/ssl/misc/

Pamiętajmy aby nadać im prawa wykonywalne, czyli:
Kod:
# mv c_rehash /etc/ssl/misc/

# mv c_rehash.in /etc/ssl/misc/

# chmod 755 /etc/ssl/misc/c_rehas*

Odpalamy:

# /etc/ssl/misc/c_rehash /opt/etc/MailRoot/certs

Już prawie koniec.

Edytujemy plik pop3link.tab, który znajduje się w folderze MailRoot. Przypuśćmy, że już wcześniej założyliśmy konto mailowe ( które można zrobić z poziomu PHPXMail, ale jeszcze nie zrobiliśmy bo nie powiedziałem jak skonfigurować PHPXMail ) o adresie mailowym postmaster@faniqnapa.com.

A więc edytujemy:

"faniqnapa.com"<TAB> "admin "<TAB>"mail.faniqnapa.com:995"<TAB>"postmaster@faniqnapa.com[EMAIL='postmaster@faniqnapa.com']"[/EMAIL]<TAB>"15041616120a1701"<TAB>"FAPOP ,POP3S"

, gdzie kolejno wpisalismy adres hosta, login do zarzadzania xmailem, adres POP3S, nazwa konta mailowego, zahaszowane haslo do konta mailowego NIE do admina!! I na koniec cos tam, nie pamiętam niestety, odsyłam do dokumentacji Xmaila.


Już naprawdę koniec.


Restart XMaila.

# /opt/etc/MailRoot/xmail restart

LUB gdy xmail jest wlaczony szukamy procesu

Kod:
# ps | grep xmail

# kill -9 numerprocesu

# /opt/etc/MailRoot/xmail start


# Konfiguracja PHPXMail + Apache

Na początku przenosimy folder z phpxmailem do folderu Web np.

# cp –R phpxmail /share /Web/

Ustawiamy sobie ładny adres url dla phpxmaila.

Możemy to uczynic na dwa sposoby. Pierwszy to z poziomu GUI panelu sterowania qnapa lub przez SSH.

Wybieram opcje przez SSH i tylko korzystania z niej, ponieważ gdy raz wprowadzicie coś przez SSH a potem dodacie coś z GUI qnapa to to co dodacie z ssh trafia szlag, w sensie się usuwa.

Czyli edytujemy plik /mnt/HDA_ROOT/.config/apache/extra/httpd-vhosts-user.conf i wpisujemy w nim np.:

Kod:
<VirtualHost *:80>

<Directory "/share/Web/phpxmail">

                Options FollowSymLinks MultiViews

                AllowOverride All

                Require all granted

</Directory>

                ServerName phpxmail.faniqnapa.com

                DocumentRoot "/share/Web/phpxmail"

</VirtualHost>


Plik zapisujemy i restartujemy Apacha:

# /etc/init.d/Qthttpd.sh restart

LUB jak kto woli

# /usr/local/apache/bin/apachectl restart

( Druga komenda lepsza, bo restartuje tylko apache I nie robi kilku według mnie innych zbednych rzeczy, które Qnap Corp. sobie wymyślił. Mówiąc krócej, druga komenda jest po prostu szybsza).

Następnie przechodzimy do katalogu phpxmail:

# cd /share/Web/phpxmail/

I edytujemy ( lub tworzymy ) plik „servers.php” i zapisujemy w nim:

ServerNAS <TAB>127.0.0.1<TAB>6017<TAB>admin<TAB>15041616120a1701<TAB>0

,gdzie kolejno wpisalismy nazwe, adres ip hosta, port wykorzystywany przez xmail do logowania, zahaszone haslo do admina I liczbe 0 ktora nie pamietam co oznacza.



W tym momencie to na tyle jeżeli chodzi o phpxmail, lecz w tym momencie niezbedna jest konfiguracja dnsmasq żeby wszystko ladnie zadzialalo.


#Konfiguracja Servera DNS – dnsmasq

Teraz tak. Jest masa różnych opcji. Odsyłam do dokumentacji. Ja przedstawię zawartość pliku dnsmasq.conf przy której powinien poprawnie dzialac server dns.

Plik dnsmasq.conf znajduje się w katalaogu /opt/etc/ , usuwamy wszystko i podmieniamy na:


Kod:
# Change this line if you want dns to get its upstream servers from

# somewhere other that /etc/resolv.conf

#resolv-file=/etc/resolv.conf

server=8.8.8.8

# If you don't want dnsmasq to read /etc/resolv.conf or any other

# file, getting its servers from this file instead (see below), then

# uncomment this.

no-resolv

# If you don't want dnsmasq to poll /etc/resolv.conf or other resolv

# files for changes and re-read them then uncomment this.

no-poll

# If you want dnsmasq to change uid and gid to something other

# than the default, edit the following lines.

user=admin

group=administrators

# If you want dnsmasq to listen for DHCP and DNS requests only on

# specified interfaces (and the loopback) give the name of the

# interface (eg eth0) here.

# Repeat the line for more than one interface.

interface=br0

listen-address=192.168.120.120

# If you want dnsmasq to provide only DNS service on an interface,

# configure it as shown above, and then use the following line to

# disable DHCP and TFTP on it.

no-dhcp-interface=

# If you don't want dnsmasq to read /etc/hosts, uncomment the

# following line.

no-hosts

addn-hosts=/opt/etc/hosts

Tutaj wazne rzeczy. Sprawdzic adres ip czy sie zgadza, czy interfejs dobry i utworzyc plik /opt/etc/hosts , w ktorym dodac:

192.168.120.120 phpxmail.faniqnapa.com

Startujemy z dnsmasq’iem:

# /opt/etc/init.d/S56dnsmasq start

Jeśli wyświetli się na czerwono “Fail” sprobowac jeszcze raz z opcja “restart”.


#Konfiguracja routera

W tym miejscu należy pamietac żeby w ustawieniach routera zmienić adres serwera dns na adres ip qnapa, czyli w naszym przypadku na 192.168.120.120 lub można tez to zrobić u siebie na komputerze w Windowsie recznie żeby przetestować czy działa. Jak to zrobić odsyłam na google – prosta sprawa.



W tym miejscu powinnismy mieć dostep do PHPXMaila z http po adresie phpxmail.faniqnapa.com a także dzialajacy server SMTPS + POP3S.


# Konfiguracja Dovecota ( IMAPS )

Na początku pobierzmy plik xmail2dovecot.php ze strony: Info - xmail

Jest tam również wyjaśnione gdzie go umieścić i w jaki sposób uruchomić. Należy pamiętać żeby przed uruchomieniem edytować ten plik!!! Na samym początku należy podac odpowiednie dane w sekcji configuration. Aby nikt nie miał problemów z tym punktem przedstawiam przykladowa konfiguracje pliku xmail2dovecot.php

Kod:
$XMAILHOST = "localhost";

$XMAILADMINPORT = "6017";

$XMAILADMINUSERNAME = 'admin';

$XMAILADMINPASSWORD = 'password'; //put your xmail admin pwd

$CONFIGURED = 'YES';


Teraz, z racji, że dovecot nie pozwala nam siebie uruchamiać jako root musimy stworzyć użytkownika i grupe:

Kod:
# addgroup dovecot

# adduser -D -H -G dovecot dovecot

Stworzmy rowniez katalog, gdzie beda znajdowaly sie logi dovecota:

# mkdir /opt/var/log

W katalogu /opt/etc/dovecot powinien znajdować się plik dovecot.conf, jeśli nie tworzymy go i wpisujemy w nim (tutaj również przykladowa konfiguracja tak, aby poprawnie dzialal IMAPS):

Kod:
mail_location =  maildir:/opt/etc/MailRoot/domains/%d/%n/Maildir

 

listen = *

mail_debug=yes

auth_verbose=yes

auth_debug=yes


 auth default {

          verbose = yes

          mechanisms = plain

          passdb {

                      driver = passwd-file

              args = username_format=%u /opt/etc/MailRoot/kontadovecot.tab

          

           }

          userdb {

                      driver = passwd-file

          

              args = username_format=%u /opt/etc/MailRoot/kontadovecot.tab


           }

  socket listen {

    master {

      # Master socket provides access to userdb information. It's typically

      # used to give Dovecot's local delivery agent access to userdb so it

      # can find mailbox locations.

      path = /opt/var/run/dovecot/auth-master

      mode = 0600

      # Default user/group is the one who started dovecot-auth (root)

      user = dovecot

      group = dovecot

    }

    client {

      # The client socket is generally safe to export to everyone. Typical use

      # is to export it to your SMTP server so it can do SMTP AUTH lookups

      # using it.

      path = /opt/var/run/dovecot/auth-client

      mode = 0660

user = dovecot

group = dovecot

    }

}

        }

auth_default_realm = faniqnapa.com

default_login_user = dovecot

login_chroot = no

login_dir = /opt/var/run/dovecot/login

ssl = yes

ssl_cert_file = /opt/etc/MailRoot/server.cert

ssl_key_file = /opt/etc/MailRoot/server.key

disable_plaintext_auth=no

info_log_path = /opt/var/log/dovecot-info.log

log_path = /opt/var/log/dovecot.log

last_valid_gid = 5000

last_valid_uid = 5000

first_valid_gid = 0

first_valid_uid = 0

protocols = imaps

Proszę zauważyć ze znajduje się tam nazwa typu „kontadovecot.tab” taka nazwa pliku musi zostać wygenerowana podczas wywolania pliku xmail2dovecot.php, czyli:

example: /opt/etc/MailRoot/bin/xmail2dovecot.php > /opt/etc/MailRoot/kontadovecot.tab

I teraz trzeba wykonać dwie komendy, które mogą trochę zaboleć, czyli:

Kod:
# chown –R /opt/etc/MailRoot/domains dovecot:dovecot

# chmod –R 777 /opt/etc/MailRoot/domains

ponieważ i admin jako XMail musi mieć dostep do maili jak i uzytkownik dovecot jako Dovecot musi mieć dostep do maili.

I na koniec odpalamy dovecota komendą:

# /opt/etc/init.d/S90dovecot start

LUB

# dovecot –c /opt/etc/dovecot/dovecot.conf


# Konfiguracja Autorun

Dopisujemy do pliku /mnt/HDA_ROOT/.config/qpkg.conf zawartość np.:

Kod:
[autorun]
Name = autorun
Version = 1.0
Author = Ciangi
Shell = /share/CACHEDEV1_DATA /autorun/autorun.sh
Install_Path = /share/CACHEDEV1_DATA/ autorun
Enable = TRUE

Następnie tworzymy plik katalog autorun i plik autorun.sh

Kod:
# mkdir /share/CACHEDEV1_DATA /autorun/autorun/

# cd  /share/CACHEDEV1_DATA /autorun/autorun/

Tworzymy plik autorun.sh z zawartoscia:

Kod:
#!/bin/sh

/opt/etc/init.d/S56dnsmasq

/opt/etc/MailRoot/xmail start &

/opt/etc/init.d/S90dovecot

Lub jesli nie zadziala to:

Kod:
#!/bin/sh

eval "/opt/etc/init.d/S90dovecot"

eval "/opt/etc/MailRoot/xmail start &"

eval "/opt/etc/init.d/S56dnsmasq"

Restart QNAPA.

Powinno dzialac.


Wazna notka:

Przypominam, ze jezeli uzywamy POP3S lub IMAPS jestesmy zobowiazani przy kazdym dodaniu nowego konta mailowego na uzupelnienie w przypadku POP3 pliku pop3link.tab jak i w przypadku IMAPS na synchronizacje kont za pomocą pliku xmail2dovecot.php.

Oczywiście istnieje również możliwość robienia powyższych rzeczy automatycznie w przypadku dodawania nowych kont mailowych z PHPXMaila. Sprawa nie jest trudna i dla dociekliwych dam wskazówkę, że należy wykorzystać plik xmail2dovecot.php w plikach useradd.inc i uservars.inc w folderze phpxmail.

UWAGA

Tutorial napisany z głowy + z notatek.

Jeżeli pojawią się komuś gdzieś po drodze błędy to postaram się pomóc + będę update’ował tutoriala.
 
Good morning, I'm new at this forum: first of all I'm Italian and don't know Polish language, so please, answer me in english language. After that, I have made all the steps listed on the first page of this topic (for setup Perl I have runned the following command: "opkg install perl").
At step

# /opt/etc/MailRoot/xmail restart

it's showed "Restart Xmail server:" and nothin happen...It's normal or not?
The model of qnap is a ts-231 with an armv7 cpu and with firmware 4.3.3.

Moreover I want know why has been used dnsmasq in the tutorial and if it's possible and how to set the server smtp from client mail (such as outlook, thunderbird) because the qnap mail server will contain e-mail downloaded with POP3 from various provider, and when e-mail is sended it's important specify the provider.

Hope that somebody help me
 

Użytkownicy znaleźli tą stronę używając tych słów:

  1. xmail
  2. serwer pocztowy
  3. plesk
  4. serwer pocztowy na qnap
  5. własny serwer poczty
  6. qnap jako serwer poczty
  7. komendy
  8. konfiguracja entware
  9. smtp serwer www
  10. własny mail server
  11. serwer poczty na nas qnap