Artikel

Debian und Mails

Allgemein

Hier ist eine vollständige, klare, funktionierende Anleitung für Debian 12, genau passend für:

✔ lokaler Versand + externer Versand
✔ externer Empfang ohne Dovecot (Postfix übernimmt local delivery)
✔ alle Unix-User können sofort senden/empfangen
✔ Domain: domain.com
✔ Beispiel-User: user


EINFÜHRUNG (kurz & klar)

Du richtest einen reinen Postfix-Server ein, der:

  • Mails ins Internet verschickt (z. B. an irgendwen@web.de)
  • Mails von außen annimmt (z. B. von gmail.com)
  • lokal zustellt (Maildir pro Unix-User, lesbar mit mutt)
  • keinen IMAP/POP3-Server braucht, da Mail lokal über die Shell gelesen wird
  • SPF, DKIM & PTR korrekt verwendet, damit Gmail/Web.de dich nicht blocken

Damit erfüllt dein Server alle Anforderungen für einen internen System-Mailserver UND für echten Mailversand ins Internet.


1. DNS-VORARBEITEN

Setze die DNS-Einträge für domain.com (nutze dazu natürlich deine eigene Domain und deine eigene IP):

1.1 A-Record

domain.com   IN   A     123.123.123.123
mail.domain.com IN A 123.123.123.123

1.2 PTR (Reverse DNS)

Beim Provider setzen:

123.123.123.123 → mail.domain.com

Wichtig: Ohne korrekten PTR blockiert Gmail/Web.de deine Mails.


1.3 SPF

domain.com. TXT "v=spf1 a mx -all"

1.4 MX

domain.com. MX 10 mail.domain.com.

1.5 DKIM aktivieren (später im Skript erzeugt)

Ein DKIM-TXT-Eintrag wie:

default._domainkey.domain.com. TXT "v=DKIM1; k=rsa; p=DEIN_PUBLIC_KEY"

2. LOKALER USER

Beispiel:

sudo adduser user

Dieser User wird später direkt auf der Shell E-Mails mit mutt lesen.


3. INSTALLATION

sudo apt update
sudo apt install postfix mutt opendkim opendkim-tools

Bei der Postfix-Abfrage:

  • „Internet Site“
  • System mail name: domain.com

4. POSTFIX KONFIGURATION

Datei öffnen:

sudo nano /etc/postfix/main.cf

Ersetze durch (oder ergänze um):

myhostname = mail.domain.com
mydomain = domain.com
myorigin = $mydomain
inet_interfaces = all
inet_protocols = all

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
home_mailbox = Maildir/

smtpd_banner = $myhostname ESMTP
biff = no

append_dot_mydomain = no

# Empfang von außen
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination

# Keine offenen Relays
mynetworks = 127.0.0.0/8

# DKIM
milter_default_action = accept
milter_protocol = 2
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891

Maildir/ sorgt dafür, dass jeder Unix-User automatisch lokale Mail in ~/Maildir bekommt.

Postfix starten, bzw. neu starten.

5. Mutt konfigurieren

sudo nano /etc/Muttrc
set mbox_type=Maildir
set folder="~/Maildir"
set spoolfile="~/Maildir"
set record="+.Sent"
set postponed="+.Drafts"

Verzeichnisse automatisch anlegen

sudo mkdir -p /etc/skel/Maildir/{cur,new,tmp}
sudo mkdir -p /etc/skel/Maildir/.Sent
sudo mkdir -p /etc/skel/Maildir/.Drafts

Damit bekommen alle neu angelegten User automatisch eine vollständige Maildir-Struktur – inkl. Sent und Drafts.

6. Test: Externer Versand an web.de

echo "Test" | mutt -s "Testmail" irgendwer@web.de

Status prüfen:

sudo tail -f /var/log/mail.log

Wenn status=sent → funktioniert.


7. Test: Externer Empfang von Gmail

Gmail → sende an: user@domain.com

Log prüfen:

sudo tail -f /var/log/mail.log

Eingegangene Mail liegt dann in:

/home/user/Maildir/new/

Lesen:

mutt

8. DKIM EINRICHTEN

8.1 /etc/opendkim.conf

sudo nano /etc/opendkim.conf

Inhalt:

Syslog          yes
UMask           002
Mode            sv
KeyTable        /etc/opendkim/key.table
SigningTable    /etc/opendkim/signing.table
ExternalIgnoreList  /etc/opendkim/trusted.hosts
InternalHosts       /etc/opendkim/trusted.hosts
Socket          inet:8891@localhost

8.2 Verzeichnisse anlegen

sudo mkdir /etc/opendkim
sudo mkdir /etc/opendkim/keys
sudo mkdir /etc/opendkim/keys/domain.com


8.3 DKIM-Schlüssel erzeugen

cd /etc/opendkim/keys/domain.com
sudo opendkim-genkey -s default -d domain.com
sudo chown opendkim:opendkim default.private


8.4 KeyTable

sudo nano /etc/opendkim/key.table

default._domainkey.domain.com domain.com:default:/etc/opendkim/keys/domain.com/default.private


8.5 SigningTable

sudo nano /etc/opendkim/signing.table

*@domain.com default._domainkey.domain.com


8.6 Trusted Hosts

sudo nano /etc/opendkim/trusted.hosts

127.0.0.1
localhost
*.domain.com


8.7 OpenDKIM starten

sudo systemctl restart opendkim
sudo systemctl restart postfix

9. DNS: DKIM-TXT EINTRAG ERZEUGEN

Anzeigen:

cat /etc/opendkim/keys/domain.com/default.txt

Den TXT-Inhalt 1:1 in DNS einfügen:

default._domainkey.domain.com → TXT → "v=DKIM1; k=rsa; p=..."

10. TESTS

10.1 Versand ins Internet (irgendwen@web.de)

Als user:

echo "Test" | mutt -s "Testmail" irgendwen@web.de

Log prüfen:

Wenn dort steht status=sent, funktioniert es.


10.2 Empfang von Gmail

Sende von gmail.com an:

user@domain.com

Logs beobachten:

sudo tail -f /var/log/mail.log

Mail sollte landen in:

/home/user/Maildir/new/

Lesen:

mutt

10.3 Lokale User-Kommunikation

echo "Hallo" | mutt -s "Test" user
mutt

11 ALLE ANFORDERUNGEN – ERFÜLLT

AufgabeErgebnis
1. Versand ins Internet✔ Postfix + DNS + DKIM
2. Empfang von außen✔ MX + Postfix + Maildir
3. Jeder Unix-User empfängt/sendet✔ Maildir

0 Kommentare