GuiderChatt och e-postMailserver med Postfix

Kör en egen mailserver på Debian

En mailserver för din egen domän på Debian 13, med Postfix för att skicka och ta emot, Dovecot för dina mailappar, och DKIM, SPF och DMARC, så att din e-post klarar de kontroller som de stora mailleverantörerna gör.

Testad på Debian 13 (trixie) på en server hos Melonslab Uppdaterad 25 september 2026

Rekommenderad server för guiden

VC-S Micro · 2 vCPU · 8 GB Minne · 250 GB Lagring

Månadsvis, ingen bindningstid 7 dagars öppet köp

90 kr/mån

Beställ nu
På den här sidan

Det här sätter du upp

En mailserver för din egen domän, uppbyggd av tre program och ett certifikat:

  • Postfix skickar och tar emot e-post,
  • Dovecot låter din mailapp läsa din e-post över IMAP, och kontrollerar lösenordet när du skickar,
  • OpenDKIM signerar varje meddelande du skickar, så att mottagaren kan kontrollera att det kommer från dig,
  • ett certifikat från Let's Encrypt krypterar alltihop.

Varje steg nedan har körts på en nyinstallerad server hos Melonslab med Debian 13. Ett testmail som skickades via den klarade SPF, omvänd DNS och DKIM hos en extern kontrolltjänst, tjänstens svar kom fram till brevlådan, och Gmail tog emot en anslutning över IPv6.

Vill du hellre ha ett enda program med spamfilter och ett webbgränssnitt för att hantera domäner och brevlådor, se Stalwart-guiden.

Innan du börjar

Du behöver:

  • en server med Debian 13 och root-åtkomst,
  • en IPv4-adress på servern (många mailservrar tar fortfarande bara emot e-post över IPv4), och
  • en domän vars DNS-poster du kan ändra.

Exemplen använder example.com som din domän, mail.example.com som servern, 203.0.113.10 som dess IPv4-adress och 2001:db8:1f::a som dess IPv6-adress. Byt ut dem mot dina egna genomgående.

Port 25 är öppen på varje server hos Melonslab från första uppstarten, så det finns inget att begära.

1. Peka DNS mot din server

Skapa de här posterna hos din DNS-leverantör:

NamnTypVärde
mail.example.comA203.0.113.10
mail.example.comAAAA2001:db8:1f::a
example.comMXmail.example.com, prioritet 10

MX-posten talar om för andra mailservrar att e-post till example.com ska levereras till mail.example.com.

2. Sätt omvänd DNS

Mottagande servrar slår upp namnet bakom din servers adress och kontrollerar att det pekar tillbaka på samma adress. Öppna serverns nätverksflik i kontrollpanelen hos Melonslab och sätt omvänd DNS för båda adresserna till mail.example.com. Panelen godtar det när A- och AAAA-posterna från steg 1 finns.

Kontrollera det från servern (bind9-dnsutils innehåller dig):

apt install -y bind9-dnsutils
dig +short -x 203.0.113.10
dig +short -x 2001:db8:1f::a

Båda ska skriva ut mail.example.com.. Sätt båda: när den mottagande servern har IPv6 kan Postfix leverera över antingen IPv4 eller IPv6, och till exempel Gmail avvisar e-post från en IPv6-adress utan matchande namn.

3. Sätt värdnamnet

hostnamectl set-hostname mail.example.com
sed -i "1i 203.0.113.10 mail.example.com mail" /etc/hosts

4. Installera programvaran

De två första raderna besvarar Postfix-installationens frågor i förväg:

echo "postfix postfix/main_mailer_type select Internet Site" | debconf-set-selections
echo "postfix postfix/mailname string example.com" | debconf-set-selections
apt update
apt install -y postfix dovecot-imapd opendkim opendkim-tools certbot

5. Skaffa ett certifikat

certbot certonly --standalone -d mail.example.com --agree-tos -m du@example.com

certbot besvarar själv certifikatkontrollen på port 80 och förnyar certifikatet automatiskt. Postfix och Dovecot läser in det vid start, så låt dem läsa in det igen efter varje förnyelse:

mkdir -p /etc/letsencrypt/renewal-hooks/deploy
printf '#!/bin/sh\nsystemctl reload postfix dovecot\n' > /etc/letsencrypt/renewal-hooks/deploy/reload-mail
chmod 755 /etc/letsencrypt/renewal-hooks/deploy/reload-mail

6. Konfigurera Postfix

Använd certifikatet, leverera e-post till varje användares ~/Maildir, och låt Dovecot kontrollera lösenord:

postconf -e \
  "smtpd_tls_cert_file = /etc/letsencrypt/live/mail.example.com/fullchain.pem" \
  "smtpd_tls_key_file = /etc/letsencrypt/live/mail.example.com/privkey.pem" \
  "smtpd_tls_security_level = may" \
  "smtp_tls_security_level = may" \
  "home_mailbox = Maildir/" \
  "smtpd_sasl_type = dovecot" \
  "smtpd_sasl_path = private/auth"

Slå på port 587, som din mailapp skickar via. Den kräver kryptering och lösenord:

postconf -M "submission/inet=submission inet n - y - - smtpd"
postconf -P "submission/inet/syslog_name=postfix/submission" \
  "submission/inet/smtpd_tls_security_level=encrypt" \
  "submission/inet/smtpd_sasl_auth_enable=yes" \
  "submission/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject" \
  "submission/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject"
postfix check

Port 25 behåller Debians standardregler: den tar emot e-post till din domän från vem som helst, och vidarebefordrar till andra bara åt själva servern. Det är det som hindrar den från att bli ett öppet relä.

7. Konfigurera Dovecot

Debian 13 levereras med Dovecot 2.4, vars inställningar skiljer sig från de 2.3-exempel du hittar på de flesta ställen. Lägg dina i /etc/dovecot/local.conf, som Dovecot läser sist:

# Mail i ~/Maildir, samma ställe som Postfix levererar till
mail_driver = maildir
mail_path = ~/Maildir
mail_inbox_path =

ssl_server_cert_file = /etc/letsencrypt/live/mail.example.com/fullchain.pem
ssl_server_key_file = /etc/letsencrypt/live/mail.example.com/privkey.pem

# Postfix ber Dovecot kontrollera lösenord för mail som skickas på port 587
service auth {
  unix_listener /var/spool/postfix/private/auth {
    mode = 0660
    user = postfix
    group = postfix
  }
}

Kontrollera den:

doveconf -n > /dev/null && echo valid

8. Signera e-post med DKIM

Skapa en nyckel och peka OpenDKIM mot den:

opendkim-genkey -b 2048 -d example.com -s mail -D /etc/dkimkeys
chown opendkim:opendkim /etc/dkimkeys/mail.private
sed -i "s|^Socket\s.*|Socket\t\t\tinet:8891@localhost|" /etc/opendkim.conf
cat >> /etc/opendkim.conf <<EOF
Domain          example.com
Selector        mail
KeyFile         /etc/dkimkeys/mail.private
EOF

OpenDKIM lyssnar på en lokal port i stället för sin vanliga socketfil, eftersom Postfix körs i en avgränsad katalog där den inte kommer åt den filen. Be Postfix skicka varje meddelande genom den:

postconf -e 'smtpd_milters = inet:localhost:8891' 'non_smtpd_milters = $smtpd_milters' 'milter_default_action = accept'
systemctl restart opendkim

Den publika nyckel som ska publiceras finns i /etc/dkimkeys/mail.txt:

cat /etc/dkimkeys/mail.txt

Skapa en TXT-post med namnet mail._domainkey.example.com som innehåller texten mellan citattecknen, ihopslagen till en sträng: v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBg.... Den är längre än 255 tecken; de flesta DNS-leverantörer delar upp den åt dig. Kontrollera den sedan:

opendkim-testkey -d example.com -s mail -vvv

Utskriften ska sluta med key OK.

9. Publicera SPF och DMARC

Två TXT-poster till:

NamnTypVärde
example.comTXTv=spf1 mx -all
_dmarc.example.comTXTv=DMARC1; p=none; rua=mailto:postmaster@example.com

SPF anger att bara din MX-server skickar e-post för din domän. DMARC talar om för mottagare vad de ska göra med e-post som inte klarar SPF och DKIM, och vart de ska skicka rapporter. Börja med p=none, läs rapporterna i några veckor och gå sedan över till p=quarantine.

10. Starta allt och skapa en brevlåda

systemctl restart postfix dovecot
useradd -m -s /usr/sbin/nologin anna
passwd anna

Det skapar brevlådan anna@example.com. Användaren kan inte logga in på själva servern, bara läsa och skicka e-post.

11. Kontrollera att det fungerar

Skicka ett e-postmeddelande från servern till en kontrolltjänst som granskar det och svarar med en rapport. swaks är ett litet testverktyg:

apt install -y swaks
swaks --server=mail.example.com --port=587 --tls --auth=PLAIN \
  --auth-user=anna --auth-password='DITT_LÖSENORD' \
  --from=anna@example.com --to=check-auth@verifier.port25.com

Rapporten kommer till Annas brevlåda inom en minut och ska visa SPF check: pass, "iprev" check: pass och DKIM check: pass. Att den kommer fram visar också att e-post utifrån når din server.

Anslut din mailapp

ServerPortSäkerhet
Inkommande (IMAP)mail.example.com993SSL/TLS
Utgående (SMTP)mail.example.com587STARTTLS

Användarnamnet är brevlådans användarnamn, anna, och lösenordet det du valde.

Felsökning

Mailappen meddelar att inloggningsmetoden inte stöds. Dovecot erbjuder metoden PLAIN, över den krypterade anslutningen. Välj "Normalt lösenord" eller PLAIN i appens inställningar.

E-post kommer inte fram, eller avvisas. Postfix loggar varje leverans:

journalctl -t postfix/smtp -t postfix/smtpd -t postfix/submission/smtpd -n 50

Ett avvisande som nämner omvänd DNS eller PTR betyder att steg 2 inte är klart för den adress Postfix använde; kontrollera båda.

DKIM misslyckas. Kör opendkim-testkey från steg 8 igen, och kontrollera att systemctl status opendkim visar att den körs.

Använder du ufw som i säkerhetsguiden, tillåt portarna 25, 587 och 993, och port 80 för förnyelse av certifikatet: ufw allow 25,80,587,993/tcp.

Skickar du e-post i stora volymer?

De här stegen gäller din egen e-post, ditt företags e-post och transaktionsmail från dina applikationer. Nyhetsbrev och andra stora utskick kräver en överenskommelse med vårt säljteam först, så att vi kan skydda ryktet för de adresser alla kunder är beroende av.

Kör det på din egen server

VC-S Micro

90 kr/mån

vCPU
2
Minne
8 GB
Lagring
250 GB
Trafik
10 TB
Standard
HDD · RAID 10
  • Full root-åtkomst
  • Nativt /64 IPv6
  • RAID-skyddad lagring
  • Malmö, Sverige
  • Månadsvis, ingen bindningstid
  • 7 dagars öppet köp
Alla guider