• Serwer SMTP phpXmail zainstalowany na serwerze QNAP TS-659 Pro+

This topic is marked as ARCHIVAL. Please only reply if your message contains the solution (Terms and Conditions p. 12.1).

#1 Serwer SMTP phpXmail zainstalowany na serwerze QNAP TS-659 Pro+


by SebastianR 12 March 2023, 17:53
Witam,

Rozpocząłem prace zmierzające do uruchomienia własnego serwera poczty w mojej sieci lokalnej.
Nie chcąc inwestować w kolejne urządzenie które musiało by pracować 24/7 jako maszynę "gospodarza" wybrałem właśnie serwer QNAP który robi w domu m.in za serwer multimediów ale do rzeczy:

Silnikiem serwera jest oprogramowanie Xmail w wersji 1.27. W serwerze po skonfigurowaniu (dodaniu domeny, utworzeniu skrzynki, ustawieniu przekierowań portów na routerze wszystko działa perfekcyjnie, poza jedną rzeczą z którą nie mogę sobie poradzić a mianowicie zmianą domyślnego portu SMTP z 25 na 587. Mój operator Internetu planuje wyłączenie portu 25 za około pół roku w związku z powyższym, jest ryzyko że nie będę już mógł wysyłać maili z mojego nowego serwera ;)

Przeczytałem chyba wszystkie wątki jakie udało mi się odnaleźć w Internecie odnośnie tego oprogramowania ale nie mogę zmusić Xmaila żeby wysyłał maile po 587. Zaznaczam też, że nie udało mi się znaleźć po SSH w samym QNAP-ie gdzie siedzi sam program żeby poszukać pliku konfiguracyjnego. Moja wiedza na temat systemów Linuxowych nie jest jeszcze zbyt duża, może ktoś będzie w stanie pomóc :) W jaki sposób wymusić na oprogramowaniu xMail wysyłanie maili za pomocą portu 587?

Pozdrawiam!
SebastianR

Re: Serwer SMTP phpXmail zainstalowany na serwerze QNAP TS-659 Pro+


by Google Adsense [BOT] 12 March 2023, 17:53

#2 Re: Serwer SMTP phpXmail zainstalowany na serwerze QNAP TS-659 Pro+


by mrd83 25 July 2024, 15:18
Odznaka złotej łopaty dla mnie, wiem, ale skoro temat nie zamknięty i praktyki w temacie "parę" lat mam - to dorzucę swoje 3 grosze. Zaznaczam, i ostrzegam ekspertów: sporo tu uproszczeń.

    SebastianR wrote:Mój operator Internetu planuje wyłączenie portu 25 za około pół roku w związku z powyższym, jest ryzyko że nie będę już mógł wysyłać maili z mojego nowego serwera ;)

    1. [wyjaśnienie dlaczego serwer pocztowy nie będzie działał poprawnie bez portu 25]: serwery pocztowe (co nieoczywiste i często niejasno opisane w dokumentacji) mają nie dwie a trzy główne "funkcje". Dwie (względnie) dobrze znane to:
    - umożliwienie odebrania poczty (POP3[S] - fuj ;], IMAP[S], w programach pocztowych zwykle coś w stylu "serwer poczty przychodzącej").
    - umożliwienie wysłania poczty z urządzenia klienckiego (SMTP[S], "serwer poczty wychodzącej", używana funkcjonalność protokołu SMTP zwana "SMTP submission").
    Ta trzecia (niby kompletnie logiczna) - przesyłanie wiadomości pomiędzy serwerami pocztowymi - nie jest "powszechnie" znana (w sensie jej działanie - uproszczenie), i do tego jest realizowana przez wspomniany wyżej proces I PROTOKÓŁ służący do wysyłania poczty przez klienta - czyli wspomniane SMTP (używana funkcjonalność protokołu SMTP zwana "SMTP relay") - co powoduje zamieszanie zarówno w wiedzy jak i w konfiguracji. Rzecz w tym że niby protokół jest ten sam, ale procesy są osobne (powiedzmy - uproszczenie), więc ich konfiguracja także - włącznie z portami. Jako ciekawostkę dopowiem że przepięknie to widać w konfiguracji wspomnianego postfixa: w głównym pliku konfiguracyjnym elementy odpowiadające za komunikację [człowiek - nasz serwer] zaczynają się od "smtp_", a te odpowiadające za komunikację pomiędzy serwerami pocztowymi od "smtpd_" - i cała masa komend jest identyczna oprócz tej 1 litery.
    Żeby to zilustrować ukradłem obrazek stąd i lekko go przerobiłem:
    Image

    Cały problem polega na tym, że na komunikację w niebieskiej ramce mamy tylko częściowy wpływ - bo nie mamy go na inne serwery oprócz naszego. Jeśli te serwery akurat obsługują np. port 587 do komunikacji międzyserwerowej - super. Ale jeśli nie (a jest takich wedle mojej aktualnej wiedzy mnóstwo) - a my mamy wycięty/zablokowany/nie skonfigurowany port 25 - to do komunikacji najzwyczajniej w świecie nie dojdzie i email nie zostanie [przesłany do/otrzymany od] zewnętrznego serwera.
    Jest masa takich niuansów (w których musimy brać pod uwagę jak mogą być skonfigurowane inne, często stare, serwery). Na przykład z tegoż powodu mam u siebie ustawione "smtp/smtpd_tls_security_level = may" zamiast "encrypt" (czyli opcjonalne szyfrowanie) - bo przy wymaganym jakieś 40% komunikacji szło w piach (bo te "inne" serwery nie obsługiwały żadnego szyfrowania).

    2. Drobna uwaga do poniższego cytatu:
    SebastianR wrote:Silnikiem serwera jest oprogramowanie Xmail w wersji 1.27.

    wersja Xmail 1.27 wyszła ~14 lat temu (za dokumentacją xmailservera, qnap też się tym nie chwali (brak danych)).
    Osobiście bym tego nie używał (to tylko moja opinia). Dlaczego? Bo jest alternatywa. Twój sprzęt obsługuje soft QTS w wersji 4.2.6 (za dokumentacją, a na tej wersji da się zainstalować oprogramowanie Xeams - nie dość że na bieżąco supportowane (choć wersja na Twój sprzęt jest z 2017 roku - Xeams 5.3.5863b1), to do tego jeszcze obsługujące protokół IMAP (kto w naszych czasach używa POP3, przyznawać się ;]).
    Nie mam QNAP-a, nie instalowałem tego, jedynie podpowiadam.

    3. Odpowiadając na:
    SebastianR wrote:Zaznaczam też, że nie udało mi się znaleźć po SSH w samym QNAP-ie gdzie siedzi sam program żeby poszukać pliku konfiguracyjnego.

    To zwykle jest banalnie proste, dla prawie każdego softu (znowu uproszczenie): pobierasz spakowane archiwum, rozpakowujesz całkowicie (7-zip się przydaje, osobiście polecam forka ("wersję alternatywną") dokładającego obsługę paru nowych formatów) - i analizujesz ;]

    Poniżej przykład, do zastosowania w 99% tego typu problemów (uproszczenie, WIEM że można inaczej):
    - w pliku qinstall.sh ("głębokość archiwum": 3 [czyli 3 rozpakowania]) np.:
    Code: Select allSYS_QPKG_CONFIG_FILE="/etc/config/qpkg.conf" #qpkg infomation file
    albo:
    Code: Select allAPP_RUNTIME_CONF="/var/.application.conf"

    dowiadujemy się z niego również dokąd zostaną skopiowane podczas instalacji poszczególne foldery i pliki, np.:
    Code: Select allQPKG_BASE="/${publicdirp1}/${publicdirp2}"
    QPKG_INSTALL_PATH="${QPKG_BASE}/.qpkg"
    QPKG_DIR="${QPKG_INSTALL_PATH}/${QPKG_NAME}"
    więc:
    Code: Select allQPKG_DIR="${QPKG_BASE}/.qpkg/${QPKG_NAME}"
    więc:
    Code: Select allQPKG_DIR="/${publicdirp1}/${publicdirp2}/.qpkg/${QPKG_NAME}"
    QPKG_NAME jest określone w pliku qpkg.cfg (ten sam folder co qinstall.sh):
    Code: Select allQPKG_NAME="XMail_phpxmail"
    mamy więc teraz:
    Code: Select allQPKG_DIR="/${publicdirp1}/${publicdirp2}/.qpkg/XMail_phpxmail"
    a ścieżki do publicdirpX są tworzone na podstawie:
    Code: Select allpublicdir=`/sbin/getcfg Public path -f [b]/etc/config/smb.conf[/b]`
    czyli wartości "Public path" w pliku "/etc/config/smb.conf"

    Powyższa wartość QPKG_DIR odpowiada na tym etapie zawartości naszego rozpakowywanego archiwum do głębokości 5 (maksymalnej). Są tu 2 foldery: "MailRoot" i "phpxmail".

    Pierwszy w pliku qinstall.sh jest zaszyty w zmiennej:
    Code: Select allXMAIL_ROOT_NAME="MailRoot"
    i docelowo podlinkowany do /var:
    Code: Select all$CMD_LN -sf "${QPKG_DIR}/${XMAIL_ROOT_NAME}" "/var/${XMAIL_ROOT_NAME}"
    Czyli wiemy że jeden folder w którym można pogrzebać po instalacji to:
    Code: Select all/var/MailRoot

    Z kolei drugi jest po prostu przenoszony do QPKG_WEBUI_INSTALL_PATH:
    Code: Select all$CMD_MV ${QPKG_DIR}/phpxmail ${QPKG_WEBUI_INSTALL_PATH}
    czyli do:
    Code: Select allWEB_SHARE=`/sbin/getcfg SHARE_DEF defWeb -d Qweb -f /etc/config/def_share.info`
    QPKG_WEBUI_INSTALL_PATH=/share/$WEB_SHARE


    4. No i nareszcie: ROZWIĄZANIE:
    SebastianR wrote:Zaznaczam też, że nie udało mi się znaleźć po SSH w samym QNAP-ie gdzie siedzi sam program żeby poszukać pliku konfiguracyjnego.
    Same pliki omówiłem wyżej.

    SebastianR wrote:Przeczytałem chyba wszystkie wątki jakie udało mi się odnaleźć w Internecie odnośnie tego oprogramowania ale nie mogę zmusić Xmaila żeby wysyłał maile po 587.
    A w to za diabła nie uwierzę, mnie wyszukiwanie zajęło 5 minut ;]

    Do rzeczy:
      - nie ma "typowej" opcji konfiguracyjnej kontrolującej port SMTP. Przez "typową" rozumiem taką zapisywaną w pliku konfiguracyjnym, jak np. "RootDomain" w pliku server.tab, dokumentacja.
      - jedyna możliwość zmiany niektórych parametrów to użycie cli, dokumentacja. Na szczęście można te parametry podać jako parametry uruchomieniowe serwera.
      - i teraz tak: do zmiany portu SMTP mamy 2 komendy: -Sp [port] oraz -Si [ip:port]. Ta pierwsza zmienia zarówno port na kierunku OUT (czyli ten na który Twój serwer będzie się łączył z innymi) jak i na kierunku IN (czyli ten na którym Twój serwer nasłuchuje). Ta druga zmienia tylko kierunek IN i można jej użyć wielokrotnie (czyli nasłuchiwać na kilku portach naraz).
      - przykłady:
        "xmail -Sp 2525" -> łączę się NA port 2525 oraz oczekuję połączeń tylko na tym porcie.
        "xmail -Sp 2525 -Si mo.je.aj.pi:25 -Si mo.je.aj.pi:587" -> łączę się NA port 2525, ale nasłuchuję na 25 i 587.
        "xmail -Si mo.je.aj.pi:25 -Si mo.je.aj.pi:587" -> łączę się NA port 25 (standardowy - niczego nie zmieniliśmy), ale nasłuchuję na 25 i 587
      - można oczywiście konfigurować porty również dla innych protokołów, np "-Xp [port]" jest odpowiednikiem "-Sp [port]", ale dla SMTPS, a "-Xi ip[:port]" jest odpowiednikiem "-Si ip[:port]" dla tegoż samego protokołu. Wszystko opisane w dokumentacji (choć nie jest ona najwyższych lotów).
      - w jaki sposób uruchamiać serwer automatycznie przy użyciu wybranych parametrów? Są co najmniej 2 metody:
        - zmienna środowiskowa "MAIL_CMD_LINE". W linuxie (w 2 słowach) robisz export MAIL_CMD_LINE="-Sp 2525 -Si mo.je.aj.pi:25 -Si mo.je.aj.pi:587", ale żeby toto zostało zapisane na stałe trzeba (w zależności od dystrybucji) dołożyć tą komendę do odpowiedniego pliku (np. w Rocky 9 może to być /etc/profile.d/jakaśnazwa.sh). Nie zalecam Ci tej metody, gdyż po pierwsze dokumentacja mówi "(...)they will be appended (...)" (czyli że komendy zostaną dodane do już gdzieś tam istniejących), ale skrypt uruchomieniowy wydaje się istniejące nadpisywać (aczkolwiek przyznaję że moja analiza była raczej z tych szybkich i po łebkach ;]) - linijka 93 w pliku xmail, tak dla ciekawskich, a po drugie:
        SebastianR wrote:Moja wiedza na temat systemów Linuxowych nie jest jeszcze zbyt duża (...)
        ;]
        - edycja skryptu uruchomieniowego o nazwie "xmail", który powinien znajdować się w "/var/MailRoot/", "/etc/init.d/" i 3 innych lokacjach, ale że obie wymienione przeze mnie to linki - wystarczy że wyedytujesz plik w jednej z nich, a zmiana zostanie dokonana w 5 lokacjach. Co i jak zrobić? Otworzyć plik do edycji (np. vim /etc/init.d/xmail albo nano /etc/init.d/xmail, znaleźć linijkę "XMAIL_CMD_LINE" (uwaga - w tym na którym działam są dwie takie linijki, linie 13 i 16), zmodyfikować wartość, zapisać plik, zrestartować serwer.

    5. Podsumowanie:
    - poprawne działanie serwera pocztowego bez portu 25 jest mało prawdopodobne - już lepiej zapłacić tą dychę za publiczne IP i mieć spokój (oczywiście jeśli mamy taką możliwość),
    - na Twoim miejscu zaktualizowałbym tego QNAP-a i zainstalował Xeams,
    - jeśli chcesz zostać przy Xmail-u polecam źródła wiedzy: Forum oraz Archiwum listy mailingowej - ja Ci całej konfiguracji na pewno nie napiszę :lol:


P.S.: daaaawno nie grzebałem na forum z takimi datami:
Spoiler:


Pomogłem? Nie zapomnij odpowiednio oznaczyć post ;]

Re: Serwer SMTP phpXmail zainstalowany na serwerze QNAP TS-659 Pro+


by Google Adsense [BOT] 25 July 2024, 15:18
This topic is marked as ARCHIVAL. Please only reply if your message contains the solution (Terms and Conditions p. 12.1).

Who is online

Users browsing this forum: No registered users and 1 guest

_______________________________
All rights reserved. Unauthorised copying of this website's content or any of its part is strictly forbidden.
Any trademarks, brand names, products or services published on this website belong to their legal owners, are copyrighted and used for information purposes only.