SSD Nodes Learn Hosting plans →
Przewodniki Matt ConnorAutor: Matt Connor

Własny serwer pocztowy mailcow na VPS - konfiguracja

Sprawdź dostępność portu 25 przed instalacją mailcow, aby uniknąć blokady wiadomości w kolejce. Skonfiguruj rekordy DNS, które eliminują błąd Gmail 550 5.7.25 PTR rejection.

Co budujesz

Kompletny serwer pocztowy na własnym serwerze: SMTP do wysyłania i odbierania wiadomości, IMAP do synchronizacji telefonu i laptopa, klient poczty webmail oraz filtr antyspamowy oceniający każdą wiadomość w obu kierunkach. mailcow-dockerized łączy Postfix, Dovecot, Rspamd, SOGo webmail, MariaDB, Redis oraz klienta ACME w jeden stos Docker Compose, więc oprogramowanie nie stanowi głównego wyzwania. Uruchomienie całości zajmie pół godziny.

Trudność polega na wszystkim, co znajduje się wokół. Poczta elektroniczna to usługa, w przypadku której reszta Internetu aktywnie nie ufa nowo powstałym serwerom. Różnica między stanem „działa” a sytuacją, w której „Gmail po cichu odrzuca każdą wiadomość”, sprowadza się głównie do czterech rekordów DNS oraz jednego ustawienia reputacji adresu IP, na które użytkownik może nie mieć pełnego wpływu. Przed wynajęciem jakiejkolwiek infrastruktury należy zapoznać się z poniższymi wymaganiami wstępnymi. Jeśli po ich przeczytaniu uznasz, że walka o reputację nie jest tego warta, jest to w pełni uzasadniona decyzja; nasze zestawienie usług, które warto hostować samodzielnie w 2026 roku klasyfikuje pocztę e-mail w kategorii „tylko jeśli podchodzisz do tego poważnie” właśnie z tych powodów.

Wymagania wstępne stanowią fundament projektu

Pominięcie któregokolwiek z nich spowoduje, że poczta nigdy nie dotrze do adresata. Poniżej przedstawiono listę w kolejności odpowiadającej częstotliwości występowania problemów:

Port wyjściowy 25 musi być otwarty. Serwer dostarcza pocztę do Gmaila i Microsoftu za pośrednictwem protokołu TCP na porcie 25. Znaczna część dostawców VPS i usług chmurowych domyślnie blokuje ruch wychodzący na tym porcie w celu ograniczania spamu. Blokada ta jest niewidoczna: podczas uruchamiania systemu nie pojawiają się żadne błędy, wszystko wydaje się sprawne, a wiadomości pozostają w kolejce do momentu, gdy Postfix zrezygnuje i zwróci komunikat o błędzie (mailcow domyślnie ustawia maksymalny czas przechowywania w kolejce na pięć dni). Przetestuj to przed instalacją jakiegokolwiek oprogramowania. Jeśli port jest zablokowany, jedynym rozwiązaniem jest zgłoszenie do działu wsparcia technicznego dostawcy z prośbą o jego odblokowanie; niektórzy dostawcy robią to dla długoletnich kont, inni odmawiają tego całkowicie.

Czysty adres IP z odpowiednią reputacją. Adresy IP z puli VPS często znajdują się na czarnych listach z powodu działań poprzednich użytkowników. Przed rozpoczęciem prac sprawdź swój adres w serwisach takich jak Spamhaus lub mxtoolbox. Obecność adresu IP na czarnej liście skutkuje odrzucaniem wiadomości, czego nie da się naprawić zmianami w konfiguracji.

Kontrola nad DNS oraz poprawny rekord PTR. Niezbędne jest dodanie rekordów do strefy DNS domeny oraz skonfigurowanie rekordu odwrotnego (PTR) dla adresu IP serwera, wskazującego na nazwę hosta pocztowego. Rekord PTR niemal nigdy nie jest ustawiany w panelu DNS domeny; zarządza nim właściciel adresu IP, dlatego należy go skonfigurować w panelu sterowania dostawcy VPS lub poprzez zgłoszenie techniczne.

6 GiB pamięci RAM i 2 vCPU to bezpieczne minimum. Minimalne wymagania mailcow dla instalacji prywatnej to 6 GiB RAM oraz 1 GiB przestrzeni wymiany (swap), przy czym zaleca się 8 GiB, gdy z serwera korzysta większa liczba użytkowników. Poniżej około 2.5 GiB pamięci RAM, generate_config.sh oferuje wyłączenie skanera antywirusowego ClamAV, aby zapobiec zabijaniu kontenerów przez jądro systemu. Dokumentacja mailcow określa minimalną przestrzeń dyskową na 20 GiB przed zapisaniem jakiejkolwiek wiadomości, dlatego warto przydzielić więcej miejsca na starcie, aby zapewnić przestrzeń na rozwój skrzynek pocztowych.

Nazwa DNS, a nie sam adres IP. Wybierz nazwę hosta, taką jak mail.example.com. Ta nazwa stanie się Twoim MAILCOW_HOSTNAME, podmiotem certyfikatu TLS, celem rekordu PTR oraz banerem SMTP. Należy zachować spójność tej nazwy w całej konfiguracji.

Krok 1, Weryfikacja otwartego portu wyjściowego 25

Należy wykonać to zadanie w pierwszej kolejności. Jeśli ten krok zakończy się niepowodzeniem, dalsze działania będą bezcelowe. Z poziomu świeżo zainstalowanego VPS należy spróbować nawiązać sesję SMTP z rzeczywistym serwerem pocztowym:

sudo apt update && sudo apt install -y netcat-openbsd
nc -vz -w 5 gmail-smtp-in.l.google.com 25

Prawidłowy wynik jest natychmiastowy:

Connection to gmail-smtp-in.l.google.com (142.250.x.x) 25 port [tcp/smtp] succeeded!

Zablokowany port powoduje zawieszenie połączenia na pełne pięć sekund, a następnie błąd:

nc: connect to gmail-smtp-in.l.google.com port 25 (tcp) timed out: Operation now in progress

Na świeżym VPS, przy braku własnych reguł zapory sieciowej, ten limit czasu oznacza blokadę nałożoną przez dostawcę. Jest to filtr sieciowy po stronie dostawcy, a nie lokalna zapora, dlatego żadna zmiana w konfiguracji lokalnej nie rozwiąże problemu. Należy otworzyć zgłoszenie techniczne: "Proszę o odblokowanie wyjściowego portu TCP 25 dla mojego VPS o adresie <IP>; uruchamiam legalny serwer pocztowy". Nie należy instalować mailcow, dopóki wynik nie wskaże "succeeded". Należy pamiętać, że ruch przychodzący na port 25 (połączenia z innych serwerów) jest odrębną ścieżką i zazwyczaj jest otwarty; dostawcy ograniczają głównie ruch wychodzący.

Krok 2, skonfiguruj rekordy DNS

Zmiany w DNS wymagają czasu na propagację, dlatego opublikuj wszystkie rekordy przed rozpoczęciem instalacji. Przyjmij, że Twoja domena to example.com, host pocztowy to mail.example.com, a adres IP to 10.0.0.10. W swojej strefie DNS utwórz:

mail.example.com.        A      10.0.0.10
mail.example.com.        AAAA   2001:db8::10          ; only if you have IPv6
example.com.             MX  10 mail.example.com.
example.com.             TXT    "v=spf1 mx -all"
_dmarc.example.com.      TXT    "v=DMARC1; p=none; rua=mailto:postmaster@example.com"

Rekord SPF informuje, że "tylko mój serwer MX może wysyłać wiadomości w imieniu tej domeny, odrzuć resztę". Ustaw DMARC na p=none, aby monitorować raporty bez odrzucania własnej poczty; po potwierdzeniu poprawności konfiguracji zaostrz politykę do p=quarantine, a następnie do p=reject. Celowo pominięto dwa rekordy: DKIM, który mailcow wygeneruje w kroku 6, oraz PTR, który należy ustawić teraz w panelu dostawcy.

Ustaw rekord PTR (reverse DNS) dla 10.0.0.10 na mail.example.com, co stanowi dokładną wartość MAILCOW_HOSTNAME. Jest to rekord, o którym zapomina najwięcej osób, a duzi dostawcy poczty odrzucają wiadomości w przypadku jego braku. Jeśli Twój panel nie posiada pola rDNS, zgłoś się do wsparcia technicznego dostawcy.

Krok 3, Instalacja Docker

mailcow wymaga Docker Engine w wersji 24.0 lub nowszej oraz Docker Compose w wersji 2.0 lub nowszej. Wtyczka Compose (docker compose) jest najprostszą metodą, choć mailcow obsługuje również samodzielny plik binarny docker-compose. Należy użyć oficjalnego skryptu instalacyjnego Docker zamiast pakietu docker.io z repozytoriów Ubuntu, który nie zawiera wtyczki Compose:

curl -fsSL https://get.docker.com | sudo sh
sudo docker compose version

Powinna pojawić się linia Docker Compose version wskazująca wersję v2.x lub v5.x. Wersja Compose v5, wydana w 2025 roku, jest funkcjonalnie identyczna z v2 i każda z nich spełnia wymagania mailcow. Jeśli docker compose version zwraca docker: 'compose' is not a docker command, oznacza to, że Docker Engine jest zainstalowany, ale wtyczka Compose nie. Należy zainstalować wtyczkę z repozytorium Docker, uruchomić ponownie powyższy skrypt lub skorzystać z naszego przewodnika po podstawach Docker Compose, który konfiguruje oba komponenty z oficjalnego repozytorium apt firmy Docker.

Krok 4, Sklonowanie mailcow i wygenerowanie konfiguracji

cd /opt
sudo git clone https://github.com/mailcow/mailcow-dockerized
cd mailcow-dockerized
umask
sudo ./generate_config.sh

Sprawdzenie, czy umask zwraca 0022, jest zgodne z procedurą instalacji mailcow, która wymaga ustawienia umask 0022 przed klonowaniem. Żaden test w mailcow nie weryfikuje tej wartości, a świeża powłoka root w Ubuntu 24.04 domyślnie zwraca 0022. Skrypt następnie prosi o podanie kluczowej informacji: w pełni kwalifikowanej nazwy hosta (FQDN). Wprowadź mail.example.com; wartość musi być dokładnie zgodna z rekordem A oraz rekordem PTR. Skrypt tworzy mailcow.conf, czyli pojedynczy plik środowiskowy, z którego korzysta cały stos. Otwórz go, jeśli musisz zmienić porty WWW (HTTP_PORT, HTTPS_PORT) lub wyłączyć ClamAV na serwerze o małych zasobach:

MAILCOW_HOSTNAME=mail.example.com
HTTP_PORT=80
HTTPS_PORT=443
SKIP_CLAMD=n          # set to y to drop the virus scanner on a <2.5 GiB box

SKIP_FTS=y to drugi parametr istotny w przypadku serwerów z małą ilością pamięci RAM: wyszukiwanie pełnotekstowe jest drugim procesem najbardziej obciążającym pamięć według dokumentacji mailcow, a jego wyłączenie skutkuje jedynie brakiem możliwości przeszukiwania treści wiadomości w webmailu.

Pozostaw HTTP_PORT=80 oraz HTTPS_PORT=443 bez zmian, chyba że są one już zajęte przez inną usługę na hoście. Wbudowany klient ACME w mailcow domyślnie korzysta z wyzwania HTTP-01, które wymaga dostępności portu 80 z Internetu w celu uzyskania certyfikatu. (mailcow w wersji 2026-03 i nowszych może zamiast tego użyć wyzwania DNS-01 za pomocą ACME_DNS_CHALLENGE=y, co nie wymaga portu 80, ale wymaga dostępu do API dostawcy DNS). Z tego powodu prosta konfiguracja nie zakłada uruchamiania oddzielnej instancji nginx z Certbotem na tym samym serwerze; mailcow wystawia i odnawia własne certyfikaty TLS wewnętrznie, a druga usługa blokująca porty 80/443 uniemożliwiłaby to działanie. mailcow dokumentuje alternatywne rozwiązanie: powiązanie lokalnych nasłuchów WWW z HTTP_BIND=127.0.0.1 HTTP_PORT=8080 HTTPS_BIND=127.0.0.1 HTTPS_PORT=8443, umieszczenie reverse proxy na portach 80 i 443 oraz, jeśli wymagane jest użycie lokalnego Certbota do zarządzania certyfikatami, wskazanie ich w mailcow i dodanie skryptu odnawiającego (renewal hook). Zwiększa to liczbę komponentów serwera pocztowego, dlatego ten sam kompromis dotyczy każdej innej usługi wymagającej publicznego interfejsu WWW: instalacja taka jak Halcyon zmieniająca bibliotekę Jellyfin w wypożyczalnię wideo z lat 90., która oczekuje własnego reverse proxy na porcie 443, powinna znajdować się na innym hoście, chyba że przeniesiesz mailcow za to proxy. Wyjątkiem są usługi, które nie wymagają publicznego portu WWW: własny przekaźnik RustDesk nasłuchuje wyłącznie na własnym zakresie portów od 21115 do 21119, więc może współdzielić serwer, o ile dysponujesz odpowiednim zapasem przepustowości łącza.

Krok 5, Uruchomienie stosu i logowanie

sudo docker compose pull
sudo docker compose up -d
sudo docker compose ps

Proces pobierania obejmuje około dwudziestu czterech obrazów; należy odczekać kilka minut. Gdy docker compose ps pokaże, że każdy kontener ma status running (lub healthy), otwórz https://mail.example.com/admin w przeglądarce. Domyślne dane logowania administratora to nazwa użytkownika admin oraz hasło moohoo. Zmień to hasło niezwłocznie w interfejsie administratora w sekcji System → Configuration, a następnie Access → Administrators. Jeśli przeglądarka wyświetli ostrzeżenie NET::ERR_CERT_AUTHORITY_INVALID, oznacza to, że certyfikat ACME nie został jeszcze wystawiony. Przed założeniem, że wystąpiła awaria, zapoznaj się z sekcją dotyczącą błędów ACME poniżej; użycie samopodpisanego certyfikatu zastępczego jest normalnym zjawiskiem przez pierwsze minutę lub dwie.

Krok 6, Dodanie domeny, skrzynki pocztowej i publikacja DKIM

W interfejsie administracyjnym należy przejść do E-Mail → Configuration, a następnie w zakładce Domains kliknąć Add domain i wprowadzić example.com. Następnie w sekcji Mailboxes należy wybrać Add mailbox, aby utworzyć you@example.com wraz z hasłem. Tak utworzona skrzynka jest gotowa do użycia i dostępna przez protokół IMAP.

Teraz należy skonfigurować klucz DKIM. Należy przejść do System → Configuration, a następnie Options → ARC/DKIM keys. Mailcow mógł wygenerować klucz automatycznie podczas dodawania domeny; jeśli nie, należy go wygenerować w tym miejscu, wybrać domenę, zachować selektor dkim, wybrać długość 2048-bit i kliknąć Add. Należy skopiować długą wartość TXT i opublikować ją jako:

dkim._domainkey.example.com.  TXT  "v=DKIM1;k=rsa;t=s;s=email;p=MIIBIjANBgkqh...long-key...QAB"

Strona Domains w mailcow posiada przycisk DNS, który wyświetla listę wszystkich wymaganych rekordów oraz wskazuje zielonym znacznikiem lub czerwonym krzyżykiem stan ich publikacji. Należy traktować to jako listę kontrolną i doprowadzić do uzyskania zielonych znaczników dla wszystkich wierszy przed testowaniem dostarczalności. Czerwony wiersz DKIM po publikacji zazwyczaj oznacza, że klucz został niepoprawnie podzielony na fragmenty TXT. Klucz 2048-bitowy przekracza limit 255 znaków dla pojedynczego ciągu TXT, dlatego należy wkleić go jako jedną logiczną wartość i pozwolić dostawcy DNS na automatyczny podział na fragmenty.

Krok 7, Testowanie dostarczalności i uzyskanie wyniku 10/10

Przejdź do serwisu mail-tester.com, skopiuj wygenerowany losowo adres i wyślij na niego wiadomość ze swojej nowej skrzynki pocztowej. Zaloguj się do interfejsu SOGo pod adresem https://mail.example.com/SOGo i wyślij wiadomość stamtąd. Następnie kliknij przycisk "Then check your score".

Dąż do uzyskania wyniku 10/10. Typowe przyczyny obniżenia punktacji:

  • Brak zgodności SPF, rekord MX/SPF jest nieobecny lub adres IP nadawcy nie został w nim uwzględniony. Sprawdź ponownie rekord TXT dla SPF.
  • Brak weryfikacji podpisu DKIM, rekord TXT dkim._domainkey jest nieobecny, wciąż propagowany lub zawiera błędy. Jest to najczęstsza przyczyna problemów.
  • Brak PTR / niezgodność PTR, rekord reverse DNS nie wskazuje na mail.example.com. Popraw ustawienia u dostawcy usług.
  • Obecność na czarnej liście, niska reputacja adresu IP. Złóż wniosek o usunięcie z listy lub poproś o przydzielenie czystego adresu IP.

Nie wysyłaj rzeczywistej poczty do Gmail lub Outlook, dopóki wynik nie osiągnie 10/10. Niska punktacja w połączeniu z nowym adresem IP to najszybsza droga do oznaczenia domeny jako źródła spamu już pierwszego dnia.

Krok 8, Podłączenie klienta poczty

Skonfiguruj program Thunderbird, Apple Mail lub aplikację w telefonie, używając poniższych ustawień. Hostem serwera dla wszystkich połączeń jest mail.example.com:

  • IMAP: port 993, SSL/TLS (lub 143 z STARTTLS)
  • SMTP submission: port 465, SSL/TLS (lub 587 z STARTTLS)
  • Nazwa użytkownika: pełny adres e-mail, you@example.com
  • Hasło: hasło do skrzynki pocztowej ustawione podczas konfiguracji

Nigdy nie wysyłaj poczty z klienta przez port 25. Port ten służy wyłącznie do komunikacji między serwerami. mailcow nie obsługuje na nim autoryzacji, a próba połączenia klienta zakończy się odrzuceniem. Jeśli klient zgłasza błąd Relay access denied, oznacza to próbę wysyłki przez port 25 lub brak autoryzacji; należy przełączyć konfigurację na port 465 lub 587, używając danych logowania do skrzynki.

Krok 9, Tworzenie kopii zapasowej istotnych danych

mailcow zawiera skrypt do tworzenia kopii zapasowych, który wykonuje migawki wszystkich wolumenów stanowych. Należy uruchomić go, kierując dane na dysk zewnętrzny lub zamontowany zasób zdalny:

sudo MAILCOW_BACKUP_LOCATION=/opt/mailcow-backups \
  ./helper-scripts/backup_and_restore.sh backup all

all przechwytuje sześć elementów, których utrata oznacza utratę danych: vmail (właściwe skrzynki pocztowe), crypt (klucze deszyfrujące vmail, bezużyteczne bez niego), mysql (baza MariaDB przechowująca domeny, użytkowników, aliasy i ustawienia), redis (stan kolejki i pamięci podręcznej), rspamd (wyuczone reguły spam/ham) oraz postfix (kolejka poczty). Skrypt działa wewnątrz kontenera pomocniczego, tworząc skompresowane archiwa, dzięki czemu kopie pozostają spójne nawet podczas pracy całego stosu. Należy zautomatyzować ten proces za pomocą nocnego zadania cron i dodać --delete-days 14, aby usuwać stare zestawy kopii. Zadanie cron, które przestaje działać, zawodzi bez powiadomienia, dlatego należy przesyłać kod wyjścia skryptu w miejsce, w którym zostanie zauważony; własny serwer ntfy pozwala na wysłanie powiadomienia o awarii na telefon za pomocą jednego polecenia curl dodanego do tego samego wpisu w cronie. Przywracanie danych odbywa się za pomocą tego samego skryptu z flagą restore, która wyświetla listę migawek i pozwala wybrać dane do odzyskania. Kopia zapasowa, której nigdy nie przetestowano pod kątem przywracania, jest tylko nadzieją, a nie zabezpieczeniem; należy wykonać próbne przywrócenie na testowym serwerze VPS.

Krok 10, Aktualizacja według harmonogramu

mailcow aktualizuje się za pomocą własnego skryptu, który pobiera nowy kod, przeprowadza migrację mailcow.conf, wstępnie pobiera obrazy i restartuje kontenery w odpowiedniej kolejności:

cd /opt/mailcow-dockerized
sudo ./update.sh --check   # reports whether an update exists, changes nothing
sudo ./update.sh           # applies it

Najpierw wykonaj kopię zapasową (Krok 9), ponieważ migracja schematu jest trudna do cofnięcia. Aktualizacje pojawiają się często i zawierają poprawki bezpieczeństwa dla demonów wystawionych na działanie Internetu, dlatego nie należy dopuszczać do wielomiesięcznych opóźnień w utrzymaniu serwera pocztowego. Jeśli po aktualizacji którykolwiek kontener nie osiągnie stanu gotowości, sudo docker compose logs --tail=50 <service>-mailcow wskaże nazwę demona, który nie został poprawnie uruchomiony.

Uwagi dotyczące zabezpieczeń

mailcow uruchamia własną usługę netfilter (netfilter-mailcow), która blokuje adresy IP próbujące atakować porty pocztowe oraz webmail, dzięki czemu obsługa poczty jest chroniona domyślnie. Nie obejmuje to jednak usługi SSH na samym hoście, która pozostaje wystawiona na ataki typu brute-force. Należy połączyć tę konfigurację z Fail2ban monitorującym logi uwierzytelniania SSH oraz logowaniem wyłącznie przy użyciu kluczy. Interfejs administracyjny mailcow powinien być zabezpieczony silnym hasłem i, w miarę możliwości, odizolowany od publicznego Internetu lub udostępniony wyłącznie przez VPN.

Tryby awaryjne i dokładne komunikaty

Kolejka poczty rośnie, ale wiadomości nie są dostarczane. Uruchom sudo docker compose exec postfix-mailcow postqueue -p lub sprawdź kolejkę poczty w interfejsie administratora; wpisy pozostają w stanie deferred przez okres do pięciu dni, zanim Postfix je odrzuci, z komunikatem:

status=deferred (connect to gmail-smtp-in.l.google.com[142.250.x.x]:25: Connection timed out)

Przyczyną jest niemal zawsze zablokowany przez dostawcę port wyjściowy 25 (Krok 1). Reguła wyjściowa w lokalnym firewallu hosta powoduje ten sam timeout, więc należy ją wykluczyć w pierwszej kolejności; jeśli host jest poprawnie skonfigurowany, żadna zmiana w konfiguracji nie pomoże – należy zgłosić problem do dostawcy. Nie jest to problem z DNS ani TLS; kluczowym wskaźnikiem jest słowo timed out w połączeniu z zewnętrznym serwerem MX na porcie 25.

Gmail oznacza wszystko jako spam lub odrzuca wiadomości. Otwórz wiadomość w Gmailu, wybierz "Pokaż oryginał" i odczytaj wyniki uwierzytelniania. dkim=fail lub dkim=none oznacza, że rekord dkim._domainkey TXT jest brakujący, błędny lub jeszcze nie został rozpropagowany; opublikuj dokładnie to, co wskazuje strona ARC/DKIM i poczekaj na wygaśnięcie TTL. spf=fail oznacza, że rekordy SPF/MX nie obejmują Twojego adresu IP. Zgodność jest kluczowa; jeden nieudany test wystarczy, aby wiadomość trafiła do spamu.

Odrzucenie przez dużych dostawców podczas nawiązywania połączenia. Komunikaty o odrzuceniu lub logi Postfixa zawierają informację o odrzuceniu PTR przez Gmaila:

550-5.7.25 [10.0.0.10] The IP address sending this message does not have a PTR
550-5.7.25 record setup, or the corresponding forward DNS entry does not match
550 5.7.25 the sending IP. As a policy, Gmail does not accept messages from IPs
550 5.7.25 with missing PTR records.

Kod 550 5.7.25 oznacza brakujący lub niedopasowany rekord odwrotny DNS. Ustaw rekord PTR dla swojego adresu IP na mail.example.com u dostawcy (Krok 2). Rekordy A (forward) oraz PTR (reverse) muszą być zgodne i oba muszą wskazywać na tę samą nazwę hosta, którą mailcow przedstawia innym serwerom.

Przeglądarka wyświetla ostrzeżenie o certyfikacie, które nie znika. Kontener acme-mailcow nie uzyskał poprawnego certyfikatu. Sprawdź jego logi:

sudo docker compose logs acme-mailcow | tail -n 40

Linia typu Cannot validate any hostnames, skipping Let's Encrypt for 1 hour. lub błąd wyzwania (challenge failure) oznacza, że port 80 nie jest osiągalny z Internetu lub rekord A nie wskazuje na ten serwer. Jeśli opublikowano rekord AAAA, sprawdź również jego poprawność: mailcow weryfikuje najpierw rekord AAAA i pomija sprawdzenie rekordu A, jeśli AAAA istnieje. Błędny rekord AAAA lub ścieżka IPv6, która nie dociera do portu 80, spowoduje niepowodzenie walidacji, nawet przy poprawnym rekordzie A. Potwierdź, że mail.example.com wskazuje na serwer, otwórz porty 80 i 443 w firewallu hosta i upewnij się, że żadna inna usługa nie zajmuje tych portów. Po usunięciu przyczyny zrestartuj klienta za pomocą sudo docker compose restart acme-mailcow, zamiast czekać na godzinny okres karencji.

FAQ

Czy samodzielne hostowanie poczty e-mail jest opłacalne?

Jeśli zależy Ci na własności danych, nieograniczonej liczbie aliasów i pełnej kontroli, to tak – mailcow zapewnia profesjonalny stos w cenie VPS. Jednak dbałość o dostarczalność jest stałym obowiązkiem: reputacja IP, zgodność DNS i monitorowanie list blokad to procesy, które nigdy się nie kończą. W przypadku krytycznego adresu biznesowego, gdzie jeden dzień w folderze spam kosztuje realne straty, wybór zewnętrznego dostawcy jest pragmatycznym rozwiązaniem. Hostuj samodzielnie, gdy cenisz kontrolę bardziej niż wygodę i zamierzasz faktycznie zajmować się utrzymaniem serwera. Jeśli Twoim głównym celem jest przeniesienie danych z serwerów innych firm, a niekoniecznie poczta e-mail, zacznij od usługi, która nie podlega zewnętrznym ograniczeniom: biblioteka zdjęć nie ma problemów z dostarczalnością, a nasze porównanie PhotoPrism i Immich zawiera wymagania dotyczące pamięci RAM oraz polecenia kopii zapasowych dla takiej instalacji na tym samym typie VPS.

Skąd mam wiedzieć, czy wychodzący port 25 jest zablokowany?

Uruchom nc -vz -w 5 gmail-smtp-in.l.google.com 25 z poziomu serwera. Komunikat "succeeded!" oznacza, że port jest otwarty; timed out po pauzie oznacza, że port jest zablokowany. Jeśli na serwerze nie skonfigurowano własnych reguł zapory sieciowej, przyczyną jest dostawca usługi. Jest to najczęstszy powód, dla którego serwer pocztowy może odbierać wiadomości, ale nie może ich wysyłać. Jedynym rozwiązaniem blokady ze strony dostawcy jest otwarcie przez niego portu; żadne zmiany w ustawieniach lokalnych tego nie naprawią.

Dlaczego moja poczta nadal trafia do folderu spam w Gmailu?

Przyczyną jest niemal zawsze uszkodzony łańcuch uwierzytelniania. Użyj opcji "Pokaż oryginał" w Gmailu i sprawdź spf=pass, dkim=pass oraz dmarc=pass. Wynik dkim=fail wskazuje na brakujący lub błędny rekord TXT dkim._domainkey; problemem może być również niedopasowanie PTR lub nowy adres IP bez historii wysyłania. Najpierw uzyskaj wynik 10/10 w serwisie mail-tester.com, a następnie powoli rozgrzewaj adres IP, wysyłając początkowo kilka wiadomości dziennie i stopniowo zwiększając ich liczbę, zamiast wysyłać dużą ilość poczty pierwszego dnia.

Co dokładnie muszę archiwizować?

Uruchom backup_and_restore.sh backup all i przechowuj cały zestaw poza serwerem. Kopia ta obejmuje vmail (skrzynki pocztowe), crypt (klucze deszyfrujące), bazę danych MariaDB (domeny, użytkownicy, aliasy, ustawienia), Redis, dane wyuczone Rspamd oraz kolejkę Postfix. Wolumen crypt jest często pomijany, a bez niego kopia vmail jest nieczytelnym tekstem zaszyfrowanym. Przetestuj przywracanie danych na serwerze testowym przynajmniej raz.

Czy mogę uruchomić mailcow na VPS z 2 GB RAM?

Nie jest to komfortowe rozwiązanie. generate_config.sh oferuje wyłączenie ClamAV przy mniej niż 2,5 GiB pamięci, ale nawet przy wyłączonym ClamAV, Rspamd, Dovecot, MariaDB i reszta stosu rywalizują o pamięć. Przy jakimkolwiek realnym obciążeniu wystąpią problemy z pamięcią swap i mechanizmem OOM kill. Należy przyjąć 6 GiB RAM oraz 1 GiB swap jako minimum dla stabilnej instalacji dla jednego użytkownika i zwiększyć zasoby do 8 GiB, gdy z poczty korzysta więcej niż dwie osoby.