1.  [Strona główna](/) ›
2.  [Baza wiedzy](/baza-wiedzy/) ›
3.  Postfix - konfiguracja SMTP na VPS

# Postfix - konfiguracja serwera SMTP na VPS

Opublikowano: 9 kwietnia 2026 · Kategoria: VPS / Email

⚡ W skrócie · 9 min czytania

-   Postfix krok po kroku: instalacja, konfiguracja main.cf, TLS, OpenDKIM, testowanie przez swaks, zarządzanie kolejką, typowe błędy relay access denied i deferred.
-   Własny Postfix vs relay service - kiedy co wybrać?
-   Instalacja Postfix (Ubuntu/Debian).
-   Konfiguracja main.cf.
-   Certyfikat TLS (Let’s Encrypt).

Postfix to najpopularniejszy MTA (Mail Transfer Agent) dla systemów Linux - szybki, bezpieczny i dobrze udokumentowany. Konfiguracja własnego serwera SMTP na VPS daje pełną kontrolę nad dostarczalnością i nagłówkami emaili, choć wymaga kilku kroków: TLS, DKIM i właściwej konfiguracji DNS. Oto kompletny przewodnik od zera.

## Własny Postfix vs relay service - kiedy co wybrać?

Cecha

Własny Postfix

Relay service (SendGrid/SES)

Koszt

Darmowy (tylko VPS)

$0.10/1000 (SES) lub $15+/mies (SendGrid)

Dostarczalność

Zależy od reputacji IP

Wysoka (dedykowane IP z dobrą reputacją)

Konfiguracja

Wymagana (TLS, DKIM, SPF)

Minimalna (DNS + API key)

Bounce/unsubscribe

Własna implementacja

Wbudowany (webhook)

Kiedy używać

Transakcyjne emaile, duże wolumeny, legacy

Marketing, wysoka dostarczalność bez konfiguracji

## Instalacja Postfix (Ubuntu/Debian)

```
# Instalacja Postfix i narzędzi
sudo apt update
sudo apt install postfix mailutils swaks -y
# Podczas instalacji wybierz: "Internet Site"
# System mail name: twojadomena.pl

# Sprawdź status
sudo systemctl status postfix

# Wyślij testowy email (lokalnie)
echo "Test Postfix" | mail -s "Test" root@localhost
```

## Konfiguracja main.cf

Główny plik konfiguracji Postfixa to `/etc/postfix/main.cf`. Poniżej kluczowe dyrektywy dla typowego serwera VPS:

```
# /etc/postfix/main.cf

# --- IDENTYFIKACJA SERWERA ---
myhostname = mail.twojadomena.pl    # FQDN serwera (musi być w DNS jako A record)
mydomain = twojadomena.pl
myorigin = $mydomain

# --- SIEĆ ---
inet_interfaces = all               # Nasłuchuj na wszystkich interfejsach
inet_protocols = ipv4               # lub "all" dla IPv4+IPv6
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

# --- RELAY ---
# mynetworks - kto może wysyłać bez auth (localhost i sieci prywatne)
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

# relayhost - jeśli chcesz użyć smarthost (SES jako relay)
# relayhost = [email-smtp.eu-west-1.amazonaws.com]:587

# --- ROZMIAR ---
message_size_limit = 52428800       # Maks. rozmiar wiadomości: 50 MB
mailbox_size_limit = 0              # Bez limitu skrzynki (jeśli lokalna)

# --- TLS ---
smtpd_tls_cert_file = /etc/letsencrypt/live/mail.twojadomena.pl/fullchain.pem
smtpd_tls_key_file  = /etc/letsencrypt/live/mail.twojadomena.pl/privkey.pem
smtpd_use_tls = yes
smtpd_tls_security_level = may      # Akceptuj TLS jeśli klient obsługuje
smtp_tls_security_level = may       # Używaj TLS przy wysyłaniu jeśli możliwe
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database  = btree:${data_directory}/smtp_scache

# --- POLITYKA ANTYSPAMOWA ---
smtpd_recipient_restrictions =
    permit_mynetworks,
    reject_unauth_destination

# --- ALIAS ---
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
```

```
# Zastosuj konfigurację
sudo postfix check          # Sprawdź błędy składni
sudo systemctl reload postfix
```

## Certyfikat TLS (Let's Encrypt)

```
# Instalacja certbota i certyfikatu dla subdomeny mail.*
sudo apt install certbot -y
sudo certbot certonly --standalone -d mail.twojadomena.pl

# Certyfikat w /etc/letsencrypt/live/mail.twojadomena.pl/
# fullchain.pem - certyfikat + łańcuch CA
# privkey.pem   - klucz prywatny

# Upewnij się że postfix może czytać klucz prywatny
sudo adduser postfix ssl-cert
# lub:
sudo chmod 640 /etc/letsencrypt/live/mail.twojadomena.pl/privkey.pem
sudo chown root:postfix /etc/letsencrypt/live/mail.twojadomena.pl/privkey.pem
```

## OpenDKIM - podpisywanie emaili

DKIM (DomainKeys Identified Mail) dodaje kryptograficzny podpis do każdego emaila - serwery odbiorców mogą zweryfikować że wiadomość naprawdę pochodzi z Twojej domeny:

```
# Instalacja OpenDKIM
sudo apt install opendkim opendkim-tools -y

# Konfiguracja /etc/opendkim.conf
sudo tee /etc/opendkim.conf <<'DKIM_EOF'
AutoRestart             Yes
AutoRestartRate         10/1h
Syslog                  yes
SyslogSuccess           Yes
LogWhy                  Yes
Canonicalization        relaxed/simple
ExternalIgnoreList      refile:/etc/opendkim/TrustedHosts
InternalHosts           refile:/etc/opendkim/TrustedHosts
KeyTable                refile:/etc/opendkim/KeyTable
SigningTable            refile:/etc/opendkim/SigningTable
Mode                    sv
PidFile                 /run/opendkim/opendkim.pid
SignatureAlgorithm      rsa-sha256
UserID                  opendkim:opendkim
Socket                  inet:12301@localhost
DKIM_EOF

# Utwórz klucze DKIM
sudo mkdir -p /etc/opendkim/keys/twojadomena.pl
sudo opendkim-genkey \
    -s mail \
    -d twojadomena.pl \
    -D /etc/opendkim/keys/twojadomena.pl/
sudo chown opendkim:opendkim /etc/opendkim/keys/twojadomena.pl/mail.private

# KeyTable i SigningTable
echo "mail._domainkey.twojadomena.pl twojadomena.pl:mail:/etc/opendkim/keys/twojadomena.pl/mail.private" | sudo tee /etc/opendkim/KeyTable
echo "@twojadomena.pl mail._domainkey.twojadomena.pl" | sudo tee /etc/opendkim/SigningTable
printf "127.0.0.1\nlocalhost\n.twojadomena.pl\n" | sudo tee /etc/opendkim/TrustedHosts
```

```
# Pobierz wartość rekordu DNS TXT dla DKIM
cat /etc/opendkim/keys/twojadomena.pl/mail.txt
# Dodaj ten rekord DNS: mail._domainkey.twojadomena.pl TXT "v=DKIM1; k=rsa; p=..."

# Podłącz OpenDKIM do Postfixa (main.cf)
sudo postconf -e "milter_protocol = 2"
sudo postconf -e "milter_default_action = accept"
sudo postconf -e "smtpd_milters = inet:localhost:12301"
sudo postconf -e "non_smtpd_milters = inet:localhost:12301"

# Uruchom i załaduj
sudo systemctl enable --now opendkim
sudo systemctl reload postfix
```

## Testowanie - swaks i telnet

```
# Wyślij testowy email przez swaks (najwygodniejsze narzędzie)
swaks \
    --to test@gmail.com \
    --from no-reply@twojadomena.pl \
    --server localhost \
    --port 25 \
    --body "Test Postfix z DKIM" \
    --h-Subject "Test SMTP"

# Podstawowy test przez telnet (SMTP dialog ręcznie)
telnet localhost 25
# EHLO twojadomena.pl
# MAIL FROM:<test@twojadomena.pl>
# RCPT TO:<odbiorca@example.com>
# DATA
# Subject: Test
# .
# QUIT

# Sprawdź logi wysyłki
sudo tail -f /var/log/mail.log
```

## Zarządzanie kolejką Postfix

```
# Wyświetl kolejkę
postqueue -p
# lub: mailq

# Wymuś ponowne wysłanie wszystkich wiadomości w kolejce
postqueue -f

# Wyświetl szczegóły konkretnej wiadomości (QUEUE_ID np. ABC123)
postcat -q ABC123

# Usuń konkretną wiadomość z kolejki
postsuper -d ABC123

# Usuń WSZYSTKIE wiadomości z kolejki (ostrożnie!)
postsuper -d ALL

# Usuń tylko deferred (tymczasowo odroczone)
postsuper -d ALL deferred

# Statystyki kolejki
postqueue -p | tail -1
```

## Najczęstsze pytania

Kiedy warto używać własnego Postfixa zamiast SendGrid czy SES? +

Własny Postfix ma sens gdy: wysyłasz dużo transakcyjnych emaili (faktury, powiadomienia) i chcesz unikać kosztów per-email (SendGrid ~$15/mies za 50k, SES $0.10/1000), masz pełną kontrolę nad nagłówkami i DKIM, lub integrujesz legacy system. Relay service (SendGrid/SES/Mailgun) jest lepszy gdy: zależy Ci na wysokiej dostarczalności bez konfiguracji reputacji IP, wysyłasz marketing emaile, lub nie chcesz zarządzać blacklistami i bounce handling. Kompromis: własny Postfix jako MTA + relay przez SES jako smarthost - pełna kontrola i dobra dostarczalność.

Co zrobić gdy Postfix odrzuca email z błędem "relay access denied"? +

Błąd "relay access denied" oznacza że Postfix nie chce przekazać maila dalej - to zabezpieczenie przed open relay. Sprawdź: (1) mynetworks w main.cf - lista sieci uprawnionych do wysyłania przez ten serwer (domyślnie 127.0.0.0/8). (2) inet\_interfaces - czy Postfix nasłuchuje na właściwym interfejsie. (3) smtpd\_recipient\_restrictions - polityka przyjmowania emaili. Jeśli wysyłasz z aplikacji lokalnej: dodaj 127.0.0.1 do mynetworks lub użyj sendmail zamiast SMTP (Postfix przetworzy lokalnie). Jeśli wysyłasz z zewnątrz: skonfiguruj SMTP AUTH (sasl) i TLS.

Jak sprawdzić czy DKIM jest prawidłowo skonfigurowany? +

Użyj narzędzi online: mail-tester.com (wyślij email na podany adres i sprawdź wynik), mxtoolbox.com/dkim (sprawdź rekord DNS TXT), lub dkimvalidator.com. Z linii komend: dig TXT mail.\_domainkey.twojadomena.pl +short - powinien zwrócić klucz publiczny. Po wysłaniu emaila możesz sprawdzić nagłówki w Gmail (Pokaż oryginał) - szukaj Authentication-Results: dkim=pass. Najczęstsze błędy: zła nazwa selektora, klucz publiczny nie zgadza się z prywatnym, OpenDKIM nie jest podłączony do Postfixa (brak milter w main.cf).

Jak zarządzać kolejką Postfix (defer, bounce)? +

Podstawowe komendy: postqueue -p (wyświetl kolejkę), postqueue -f (wymuś ponowne wysłanie wszystkich), postsuper -d ALL (usuń wszystkie wiadomości z kolejki - ostrożnie!), postsuper -d QUEUE\_ID (usuń konkretną wiadomość). Wiadomości "deferred" to te które serwer docelowy tymczasowo odrzucił (greylist, chwilowa niedostępność) - Postfix ponawia próby automatycznie. Wiadomości "bounced" (stały błąd 5xx) wracają do nadawcy i są usuwane z kolejki. Sprawdzaj /var/log/mail.log dla szczegółów każdego błędu.

## Sprawdź oferty pasujące do tego scenariusza

Poniżej masz szybkie przejścia do ofert i stron z kodami rabatowymi tam, gdzie są dostępne.

Contabo

VPS z dedykowanym IP - kluczowe dla reputacji serwera SMTP

Dedicated IP

[Aktywuj rabat →](/out/contabo/#reklama "Contabo")

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/contabo/)

Mikrus

Tani VPS do konfiguracji i testowania Postfixa

Dev/Test

[Aktywuj rabat →](/out/mikrus/#reklama "Mikrus")

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/mikrus/)

LH.pl

Hosting z SMTP relay i skrzynkami pocztowymi - bez własnej konfiguracji

Managed SMTP

[Aktywuj rabat →](/out/lh-pl/#reklama "LH.pl")

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/lh-pl/)

## Powiązane strony

-   [Ranking i porównanie VPS
    
    Aktualne ceny VPS z pełnym kosztem 2-letnim (TCO) i bez ukrytych opłat odnowienia.
    
    ](/vps/)
-   [SPF, DKIM, DMARC - konfiguracja](/baza-wiedzy/spf-dkim-dmarc-konfiguracja/)
-   [SMTP relay - konfiguracja w aplikacji](/baza-wiedzy/smtp-relay-hosting-konfiguracja/)
-   [Email hosting - MX, IMAP, SMTP](/baza-wiedzy/email-hosting-konfiguracja/)
-   [SSH tunneling i port forwarding](/baza-wiedzy/ssh-tunneling-port-forwarding/)
-   [Wszystkie artykuły](/baza-wiedzy/)
-   [Jak wybrać hosting?](/jaki-hosting-wybrac/)

Autor: [Redakcja HostGrade.pl](/autorzy/) Zespół redakcyjny · Aktualizacja: 9 kwietnia 2026

Artykuły HostGrade.pl przygotowuje i aktualizuje redakcja serwisu. Ceny startowe, ceny odnowienia i warunki planów sprawdzamy w cennikach i regulaminach dostawców, a potem liczymy całkowity koszt za 2 lata (cena startowa plus odnowienia). Zasady zbierania danych i liczenia kosztów opisujemy na stronie Metodologia. Linki partnerskie oznaczamy jako #reklama.

[O redakcji i metodologii →](/autorzy/)