Debian und Mails
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
| Aufgabe | Ergebnis |
|---|---|
| 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