# Nasazení Postfixu pouze pro odesílání s DKIM v Dockeru na Ubuntu
Na Ubuntu 22.04 s 1 GB RAM a 1 vCPU se spustí kontejner boky/postfix s OpenDKIM a TLS. Server odesílá e-maily pouze s autentizací nebo z localhostu na port 587. Automatická generace DKIM klíčů, montování certifikátů Let's Encrypt. Požadavky: doména v Cloudflare, VPS s otevřeným portem 25 u poskytovatele.
Příprava serveru
Aktualizujte balíčky:
apt update && apt upgrade -y
Odstraňte staré Docker balíčky:
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
Nainstalujte oficiální Docker:
apt update
apt install ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
apt update && apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Nainstalujte Certbot:
apt install certbot
Přidejte A záznam do Cloudflare: mail → IP VPS, proxy vypnuto. Vydajte certifikát:
certbot certonly --standalone -d mail.yourdomain.com
Vytvořte hook pro restart kontejneru při obnově:
nano /etc/letsencrypt/renewal-hooks/post/restart-postfix.sh
Obsah:
#!/bin/bash
docker restart postfix
Udělejte spustitelným: chmod +x /etc/letsencrypt/renewal-hooks/post/restart-postfix.sh.
Vytvoření uživatele a docker-compose
Vytvořte neprivilegovaného uživatele:
useradd -m emailuser -G docker -s /bin/bash
passwd emailuser
su emailuser
Vytvořte docker-compose.yml:
services:
postfix:
image: boky/postfix
container_name: postfix
restart: unless-stopped
ports:
- "587:587"
volumes:
- ./dkim:/etc/opendkim/keys
- /etc/letsencrypt/live/mail.yourdomain.com/fullchain.pem:/etc/opendkim/keys/mail.crt:ro
- /etc/letsencrypt/live/mail.yourdomain.com/privkey.pem:/etc/opendkim/keys/mail.key:ro
environment:
HOSTNAME: mail.yourdomain.com
DOMAIN: yourdomain.com
DKIM_SELECTOR: mail
DKIM_DOMAINS: yourdomain.com
DKIM_KEY_LENGTH: 2048
ENABLE_DKIM: 1
ENABLE_TLS: 1
TLS_KEY: /etc/opendkim/keys/mail.key
TLS_CERT: /etc/opendkim/keys/mail.crt
SMTP_USER: [email protected]|password
RELAY_NETWORKS: 127.0.0.1/32
FORCE_HELO: 1
LOG_TO_STDOUT: 1
ALLOWED_SENDER_DOMAINS: mail.yourdomain.com
DKIM_AUTOGENERATE: "true"
Spusťte: docker compose up -d. Po generaci klíčů odstraňte DKIM_AUTOGENERATE.
Konfigurace DNS
V ./dkim najděte .txt soubor s veřejným klíčem. Vyjměte řetězec ve tvaru:
v=DKIM1; h=sha256; k=rsa; s=email; p=MNOGO_SIMVOLOV
(spojte části klíče bez závorek/uvozovek). Přidejte TXT do Cloudflare:
- Name:
mail._domainkey - Content: řetězec klíče
SPF záznam pro doménu:
- Name:
yourdomain.com - Content:
v=spf1 a mx ip4:YOUR_VPS_IP -all
rDNS a port 25
Obraťte se na poskytovatele:
- Otevřete odchozí port 25.
- Nastavte rDNS pro
mail.yourdomain.com→ IP VPS.
Testování
Zkontrolujte na mail-tester.com nebo appmaildev.com. Vstupte do kontejneru:
docker exec -it postfix bash
echo -e "Subject: DKIM Test\n\nThis is a test message" | sendmail -f [email protected] [email protected]
Očekávaný výsledek: 10/10 na testerech, e-maily v inboxu Gmail.
- DKIM: automatická generace 2048-bit klíčů.
- SPF: omezení odesílání podle IP.
- TLS: Let's Encrypt s autoobnovou.
- Auth: SMTP_USER pro relay.
Co je důležité
- Kontejner boky/postfix obsahuje Postfix + OpenDKIM připravené k použití.
- Montujte volumes pro klíče a certifikáty s
:ropro bezpečnost. - RELAY_NETWORKS=127.0.0.1/32 blokuje externí odesílání bez autentizace.
- Po generaci DKIM vypněte AUTOGENERATE.
- rDNS je klíčové pro doručitelnost u velkých poskytovatelů.
— Editorial Team
Zatím žádné komentáře.