Hosting sopstvenog mail servera zahteva visok nivo bezbednosti, pouzdanosti i preciznog podešavanja mreže. Mailcow: dockerized predstavlja jedno od najkompletnijih i najsigurnijih open-source rešenja za e-poštu. Pokreće se u Docker okruženju i objedinjuje Postfix, Dovecot, Rspamd, SOGo webmail i ugrađene bezbednosne mehanizme poput Fail2ban i Let’s Encrypt TLS sertifikata.

Ovaj vodič pruža korak-po-korak uputstvo za podizanje Mailcow servera na Proxmox Virtual Environment (PVE) platformi.

Arhitektura i Preduslovi

Pri preporučivanju arhitekture na Proxmox VE, KVM Virtuelna Mašina (VM) se smatra znatno stabilnijim i sigurnijim izborom u odnosu na LXC kontejner kada je u pitanju Docker. Iako je Docker moguće pokrenuti unutar LXC-a (uz nesting i OverlayFS trikove), KVM VM pruža potpunu izolaciju kernel nivoa, sprečava probleme sa dozvolama i garantuje stabilan rad Docker mreža i iptables/nftables pravila.

Minimalni resursi za VM:

OS: Debian 12 (Bookworm) – preporučeno zbog stabilnosti

CPU: 2 vCPU

RAM: 4 GB (8 GB preporučeno ako se koristi ClamAV za skeniranje virusa)

Disk: 30 GB+ (zavisno od planirane veličine sandučića)

Mrežni i DNS preduslovi:

Statička IP adresa u lokalnoj mreži za Mailcow VM.

Javni domen (npr. domen.rs) nad kojim imate potpunu DNS kontrolu.

FQDN (Fully Qualified Domain Name) za mail server (npr. mail.domen.rs).

Priprema Virtuelne Mašine na Proxmox-u

Korak 2.1: Kreiranje VM u Proxmox GUI-ju

Uđite u Proxmox Web UI i kliknite na Create VM.

General: Unesite Naziv (npr. mailcow-server) i VM ID.

OS: Izaberite preuzeti Debian 12 ISO imidž.

System: Ostavite podrazumevane vrednosti (Qemu Agent štiklirajte radi lakšeg upravljanja).

Disks:

Bus/Device: SCSI (Uz Controller: VirtIO SCSI single)

Disk size: 40 GB (ili više)

Discard: Štiklirajte (ako koristite SSD/NVMe)

CPU: 2 Cores, Type: host (za optimalne performanse).

Memory: 4096 MB (ili 8192 MB).

Network: Bridge vmbr0, Model VirtIO.

Potvrdite i pokrenite instalaciju OS-a.

Korak 2.2: Priprema OS-a i Instalacija Docker-a

Nakon instalacije Debian 12 operativnog sistema, povežite se putem SSH-a i azurirajte sistem:

apt update && apt upgrade -y

apt install curl sudo git curl apt-transport-https ca-certificates gnupg lsb-release -y

Instalirajte zvanični Docker Engine i Docker Compose:

# Dodavanje Docker zvaničnog GPG ključa

sudo install -m 0755 -d /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg –dearmor -o /etc/apt/keyrings/docker.gpg

sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Dodavanje spremišta u Apt izvore

echo \

  “deb [arch=$(dpkg –print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \

  $(. /etc/os-release && echo “$VERSION_CODENAME”) stable” | \

  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Instalacija Docker paketa

sudo apt update

sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

Omogućite i pokrenite Docker servis:

systemctl enable –now docker

Instalacija Mailcow-a

Mailcow se preuzima direktno sa zvaničnog Git repozitorijuma u /opt direktorijum.

Korak 3.1: Kloniranje Repozitorijuma

cd /opt

git clone https://github.com/mailcow/mailcow-dockerized

cd mailcow-dockerized

Korak 3.2: Generisanje Konfiguracije

Pokrenite skriptu za generisanje mailcow.conf fajla:

./generate_config.sh

Skripta će postaviti nekoliko pitanja:

Mail server FQDN: Unesite pun naziv servera (npr. mail.domen.rs). Važno: Nemojte uneti samo domen, već hostname.

Timezone: Izaberite vašu vremensku zonu (npr. Europe/Belgrade).

Branch: Pritisnite Enter za podrazumevani master (stable) ogranak.

Korak 3.3: Podešavanje Resursa (Opciono za 4GB RAM)

Ako vaš server ima samo 4 GB RAM-a, preporučljivo je isključiti ClamAV (antivirus) kako biste sprečili preopterećenje memorije.

Otvorite mailcow.conf:

nano mailcow.conf

Pronađite i promenite sledeće parametre:

SKIP_CLAMD=y

(Sačuvajte fajl sa Ctrl+O i izađite sa Ctrl+X).

Korak 3.4: Pokretanje Mailcow Servera

Preuzmite Docker imidže i pokrenite kontejnere:

docker compose pull

docker compose up -d

Nakon nekoliko minuta, svi kontejneri (Postfix, Dovecot, Rspamd, SOGo, Nginx…) biće aktivni. Status možete proveriti naredbom:

docker compose ps

Rešavanje Specifičnosti Kućnog/Home-Lab Okruženja

Hosting kod kuće nosi dva glavna izazova: dinamičku IP adresu i blokiran odlazni Port 25 od strane Internet Provajdera (ISP).

Problem 1: Blokiran Port 25 (SMTP Relay / Smarthost)

Većina ISP-ova blokira odlazni port 25 radi sprečavanja spama. Ako je to slučaj, vaša pošta neće stizati do primaca (npr. Gmail, Outlook).

Rešenje: Podešavanje SMTP Relay servisa (npr. Amazon SES, SendGrid, Mailersend ili privatni VPS sa statičkom IP adresom).

Prijavite se u Mailcow UI (opisano u Koraku 6).

Idite na Admin -> Configuration -> Routing -> Sender-dependent transports.

Dodajte novu transportnu rutu sa podacima vašeg Relay provajdera (npr. [smtp.sendgrid.net]:587 uz odgovarajući Username i Password).

U delu Domains povežite kreirani transport sa vašim domenom.

Problem 2: Ulazni Saobraćaj i Izlaganje Internetu

Za prijem pošte sa interneta (Port 25 ulazno) i pristup Webmail-u:

Port Forwarding: Na ruteru preusmerite portove 80, 443, 25, 465, 587, 993 ka unutrašnjoj IP adresi Mailcow VM-a.

Privatni pristup Webmail-u: Ako ne želite da admin panel izlažete javnosti, pristupačnost portovima 80/443 možete ograničiti samo na lokalnu mrežu ili VPN (WireGuard/Tailscale), dok portove za mail protokole (25, 465, 587, 993) izlažete javno.

DNS Konfiguracija (Kritični Korak)

Bez ispravnih DNS zapisa vaša pošta će završavati u Spam sandučićima. Na vašem DNS provajderu (npr. Cloudflare, Hetzner, Namecheap) podesite sledeće zapise:

Tip zapisaNaziv / HostVrednost / SadržajSvrha
Amail[Vaša Javna IP Adresa]Pokazuje na IP adresu Mailcow servera
MX@mail.domen.rs (Priority: 10)Definiše server za prijem pošte
TXT@v=spf1 mx a:mail.domen.rs ~allSPF Record (Autorizuje server za slanje)
TXT_dmarcv=DMARC1; p=quarantine; rua=mailto:dmarc@domen.rsDMARC Record (Definiše politiku zaštite)

Generisanje DKIM Ključa u Mailcow-u:

U Mailcow Web UI idite na Configuration -> System -> DKIM Keys.

Unesite vaš domen (domen.rs), izaberite dužinu ključa (2048) i kliknite Add.

Kopirajte generisani public key i kreirajte nov TXT zapis u DNS-u sa nazivom dkim._domainkey i sadržajem koji vam je Mailcow prikazao.

Prvo Prijavljivanje i Osnovna Konfiguracija

Otvorite browser i posetite: https://mail.domen.rs ili https://[IP-adresa-VM].

Prijavite se sa podrazumevanim podacima:

Username: admin

Password: moohoo

ODMAH promenite administratorsku lozinku u podešavanjima profila.

Omogućite 2FA (Two-Factor Authentication) za admin nalog pod Security.

Idite na Configuration -> Mailboxes -> Add Domain i dodajte vaš domen (domen.rs).

U tabu Mailboxes kreirajte prve e-mail adrese (npr. korisnik@domen.rs).

Bekap i Održavanje

Automatski Bekap u Mailcow-u

Mailcow ima integrisanu skriptu za izradu pouzdanih bekapa dok server radi:

# Pokretanje automatskog bekapa u željeni direktorijum

/opt/mailcow-dockerized/helper-scripts/backup_and_restore.sh backup all –delete-days 7 /var/backups/mailcow

Preporuka: Povežite /var/backups/mailcow imenik sa eksternim mrežnim deljenjem (NFS/SMB na NAS-u) ili koristite Proxmox PBS (Proxmox Backup Server) za izradu bekapa celokupne VM na nivou hipervizora.

Ažuriranje Mailcow-a

Mailcow se ažurira jednostavnim pokretanjem skripte:

cd /opt/mailcow-dockerized

./update.sh

Zaključak

Postavljanjem Mailcow-a unutar KVM virtuelne mašine na Proxmox VE dobijate izolovan, izuzetno bezbedan i lako upravljiv mail sistem. Kombinacija Rspamd antispam zaštite, integrisane Fail2ban dinamike i automatskog upravljanja sertifikatima pruža sigurnost i stabilnost na nivou velikih enterprise rešenja, uz potpunu kontrolu nad vašim podacima.

Leave a Reply