Mailcow — własny serwer email na VPS
Opublikowano: 9 kwietnia 2026 · Kategoria: VPS / Email
Własny serwer email brzmi groźnie — Postfix, Dovecot, antyspam, DKIM, TLS... To kilka dni konfiguracji z plikami tekstowymi. Mailcow Dockerized zamienia to w 30-minutową instalację: kompletny stack email w Docker Compose z nowoczesnym web UI, automatycznym SSL i Rspamd antyspamem. Pełna kontrola nad danymi, zero kosztów licencji.
Co zawiera Mailcow
| Komponent | Rola |
|---|---|
| Postfix | MTA — wysyłanie i odbieranie SMTP |
| Dovecot | IMAP/POP3 — dostęp do skrzynek (Outlook, Thunderbird) |
| Rspamd | Antyspam z ML, DKIM signing, ARC |
| SOGo | Webmailer + CalDAV/CardDAV (kalendarz, kontakty) |
| Nginx | Reverse proxy + web UI Mailcow |
| MySQL/MariaDB | Baza danych kont, aliasów, polityk |
| ClamAV | Antywirusowy skan załączników (opcjonalnie) |
Wymagania przed instalacją
- VPS z min. 4 GB RAM i 20 GB dysku (stały przyrost: ~1 GB/rok/użytkownik)
- Port 25 (SMTP) odblokowany — zadzwoń do supportu VPS jeśli blokuje
- Statyczne IPv4 z możliwością ustawienia PTR (rDNS) — krytyczne dla dostarczalności
- FQDN dla serwera — np.
mail.example.com(A record → IP serwera) - Docker + Docker Compose zainstalowane
Instalacja krok po kroku
# 1. Ustaw hostname serwera (musi być FQDN) sudo hostnamectl set-hostname mail.example.com # 2. Sklonuj repozytorium Mailcow cd /opt sudo git clone https://github.com/mailcow/mailcow-dockerized cd mailcow-dockerized # 3. Wygeneruj konfigurację sudo ./generate_config.sh # Podaj: FQDN serwera (np. mail.example.com), timezone # 4. Sprawdź wygenerowany mailcow.conf cat mailcow.conf
# mailcow.conf — kluczowe ustawienia MAILCOW_HOSTNAME=mail.example.com DBPASS=auto_generated_password DBROOT=auto_generated_password HTTP_PORT=80 HTTPS_PORT=443 SKIP_LETS_ENCRYPT=n # Automatyczne SSL SKIP_CLAMD=y # Wyłącz ClamAV (oszczędność RAM na małych VPS) ADDITIONAL_SAN= # Dodatkowe domeny dla certyfikatu SSL
# 5. Uruchom Mailcow sudo docker compose pull sudo docker compose up -d # 6. Sprawdź status kontenerów (wszystkie powinny być Up) sudo docker compose ps # 7. Logi podczas startu sudo docker compose logs -f nginx-mailcow
Po kilku minutach Mailcow będzie dostępny pod https://mail.example.com.
Domyślne dane: admin / moohoo — zmień natychmiast!
Konfiguracja DNS — SPF, DKIM, DMARC, MX
Bez poprawnych rekordów DNS twoje maile trafią do spamu. Mailcow generuje DKIM klucz automatycznie — znajdziesz go w panelu: Configuration → Domains → DKIM.
# Rekordy DNS dla example.com # MX — wskazuje na serwer pocztowy example.com. IN MX 10 mail.example.com. # A — adres IP serwera mail.example.com. IN A 1.2.3.4 # SPF — tylko ten serwer wysyła maile z @example.com example.com. IN TXT "v=spf1 mx -all" # DKIM — wygenerowany przez Mailcow (skopiuj z panelu!) dkim._domainkey.example.com. IN TXT "v=DKIM1; k=rsa; p=MIIBIjANBg..." # DMARC — polityka + raporty _dmarc.example.com. IN TXT "v=DMARC1; p=quarantine; rua=mailto:[email protected]; pct=100" # PTR (rDNS) — ustaw u dostawcy VPS w panelu 1.2.3.4 → mail.example.com
Weryfikacja DNS: Użyj https://mxtoolbox.com/SuperTool.aspx do
sprawdzenia MX, SPF, DKIM i DMARC. Wszystkie muszą być zielone zanim wyślesz pierwszego maila.
Mail Tester (mail-tester.com) daje ocenę 1-10 i wskazuje problemy.
Tworzenie skrzynek i aliasów
W panelu Mailcow (E-Mail → Mailboxes) dodajesz skrzynki. Kilka przydatnych funkcji:
- Aliasy —
kontakt@przekierowuje najan@bez osobnej skrzynki - Catch-all — wszystkie nieistniejące adresy trafiają na jeden adres
- Aliasy domenowe — ta sama skrzynka odbiera
[email protected]i[email protected] - SOGo Webmailer —
https://mail.example.com/SOGo— pełny webmail + kalendarz - IMAP/SMTP — ustawienia dla Thunderbird/Outlook: serwer
mail.example.com, port IMAP 993 (SSL), SMTP 587 (STARTTLS)
Rspamd — antyspam i DKIM
Rspamd jest zintegrowany z Mailcow i robi kilka ważnych rzeczy naraz: ocenia przychodzące
maile (filtr spamu), podpisuje wychodzące (DKIM), obsługuje ARC (Authenticated Received
Chain). Panel Rspamd dostępny jest pod https://mail.example.com/rspamd.
# Sprawdź score maila przez rspamd-analyzer docker compose exec rspamd-mailcow rspamd_stats # Wyucz Rspamd na spam (jeśli coś przeszło przez filtr) docker compose exec rspamd-mailcow rspamc learn_spam < spam_message.eml
Aktualizacje i backup
# Aktualizacja Mailcow (uruchamiaj regularnie!) cd /opt/mailcow-dockerized sudo ./update.sh # Backup danych mailcow (baza + maile + konfiguracja) sudo ./helper-scripts/backup_and_restore.sh backup all # Backup trafią do: /opt/mailcow-dockerized/backup/