Postfix Mailgateway: Unterschied zwischen den Versionen
| Zeile 1: | Zeile 1: | ||
| − | == | + | =Ziel= |
| + | In dieser Übung wird ein Mailgateway (mail-gw.it2XX.int) in der DMZ eingerichtet. | ||
| + | Es übernimmt folgende Aufgaben: | ||
| + | * Annahme eingehender Mails von außen (Port 25) | ||
| + | * Weiterleitung an den internen Mailserver (mail.it2XX.int) | ||
| + | * Spamfilterung und Virenscanning mit Rspamd und ClamAV | ||
| + | * DKIM-Signierung ausgehender Mails | ||
| + | * SPF- und DMARC-Validierung | ||
| + | Die Architektur sieht wie folgt aus: | ||
| + | Internet → mail-gw.it2XX.int [Postfix + Rspamd + ClamAV] → mail.it2XX.int [Postfix + Dovecot] → LAN [Clients] | ||
| + | |||
| + | =Netzkonfiguration MAILGW-Server (DMZ)= | ||
{| class="wikitable" style="background-color: #f2f2f2;" | {| class="wikitable" style="background-color: #f2f2f2;" | ||
! Parameter !! Wert !! Erläuterung | ! Parameter !! Wert !! Erläuterung | ||
| Zeile 10: | Zeile 21: | ||
| '''CIDR''' || 24 || Classless Inter-Domain Routing Präfixlänge | | '''CIDR''' || 24 || Classless Inter-Domain Routing Präfixlänge | ||
|- | |- | ||
| − | | '''GW''' || 10.88.2XX.1 || GATEWAY | + | | '''GW''' || 10.88.2XX.1 || GATEWAY |
|- | |- | ||
| − | | '''NS''' || 10.88.2XX.21 || Resolver | + | | '''NS''' || 10.88.2XX.21 || Resolver |
|- | |- | ||
| '''FQDN''' || mail-gw.it2XX.int || Fully Qualified Domain Name | | '''FQDN''' || mail-gw.it2XX.int || Fully Qualified Domain Name | ||
|- | |- | ||
| − | | '''SHORT''' || mail-gw || Short Name | + | | '''SHORT''' || mail-gw || Short Name |
|- | |- | ||
| − | | '''DOM''' || it2XX.int|| Domain Name | + | | '''DOM''' || it2XX.int || Domain Name |
|} | |} | ||
| + | |||
;Anpassen des Templates | ;Anpassen des Templates | ||
*[[Anpassen des Debian Templates]] | *[[Anpassen des Debian Templates]] | ||
oder | oder | ||
| − | + | debian-setup.sh -f mail-gw.it2XX.int -a 10.88.2XX.49/24 -g 10.88.2XX.1 -n 10.88.2XX.21 | |
=Einfügen in die ~/.ssh/config= | =Einfügen in die ~/.ssh/config= | ||
| − | ;als kit user | + | ;als kit user |
| + | ;Auf dem Host über den ProxyJump eintragen | ||
| + | Host mail-gw.it2XX.int | ||
| + | HostName 10.88.2XX.49 | ||
| + | User kit | ||
| + | ProxyJump fw.it2XX.int | ||
| + | |||
| + | =Postfix als Relay= | ||
| + | ==Warum kein "Internet Site"?== | ||
| + | Bei der Postfix-Installation wählen wir '''No configuration''', da der mail-gw kein finaler Empfänger ist. | ||
| + | Er nimmt Mails an und leitet sie weiter – er speichert keine Mailboxen. | ||
| + | Die komplette Konfiguration erfolgt manuell. | ||
| − | |||
| − | |||
==Installation== | ==Installation== | ||
| − | + | apt install postfix | |
no configuration | no configuration | ||
| + | |||
==Konfiguration== | ==Konfiguration== | ||
| − | *vi /etc/postfix/main.cf | + | ;Wichtige Parameter im Überblick |
| + | {| class="wikitable" | ||
| + | ! Parameter !! Bedeutung | ||
| + | |- | ||
| + | | <code>mydestination =</code> || Leer – der Gateway ist für keine Domain finaler Empfänger | ||
| + | |- | ||
| + | | <code>relay_domains</code> || Domains für die Mails weitergeleitet werden | ||
| + | |- | ||
| + | | <code>transport_maps</code> || Definiert wohin die Mail für welche Domain geht | ||
| + | |- | ||
| + | | <code>mynetworks</code> || Nur localhost darf Mails einliefern (kein Open Relay) | ||
| + | |- | ||
| + | | <code>smtpd_relay_restrictions</code> || Verhindert Missbrauch als Open Relay | ||
| + | |} | ||
| + | |||
| + | * vi /etc/postfix/main.cf | ||
<pre> | <pre> | ||
compatibility_level = 3.9 | compatibility_level = 3.9 | ||
| − | myhostname = mail-gw. | + | myhostname = mail-gw.it2XX.int |
myorigin = /etc/mailname | myorigin = /etc/mailname | ||
| − | mydomain = | + | mydomain = it2XX.int |
smtpd_banner = $myhostname ESMTP $mail_name (Debian) | smtpd_banner = $myhostname ESMTP $mail_name (Debian) | ||
| Zeile 52: | Zeile 89: | ||
# Relay | # Relay | ||
| − | relay_domains = | + | relay_domains = it2XX.int |
transport_maps = hash:/etc/postfix/transport | transport_maps = hash:/etc/postfix/transport | ||
| Zeile 67: | Zeile 104: | ||
smtpd_relay_restrictions = permit_mynetworks defer_unauth_destination | smtpd_relay_restrictions = permit_mynetworks defer_unauth_destination | ||
| + | </pre> | ||
| + | |||
| + | ==Mailrouting== | ||
| + | ;Warum eckige Klammern? | ||
| + | Die eckigen Klammern um <code>[mail.it2XX.int]</code> verhindern einen MX-Lookup. | ||
| + | Postfix liefert die Mail direkt an diesen Host – ohne DNS-Umweg über den MX-Record. | ||
| + | |||
| + | * echo "it2XX.int smtp:[mail.it2XX.int]:25" > /etc/postfix/transport | ||
| + | * postmap /etc/postfix/transport | ||
| + | * postfix reload | ||
| + | |||
| + | =Rspamd und ClamAV= | ||
| + | ==Warum auf dem Gateway?== | ||
| + | Spam- und Virenfilterung gehört auf den Gateway – nicht auf den Mailserver. | ||
| + | Schädliche Mails werden abgewiesen bevor sie den internen Mailserver überhaupt erreichen. | ||
| + | Der Mailserver bleibt sauber und hat weniger Last. | ||
| + | |||
| + | ==Installation== | ||
| + | apt install rspamd clamav-daemon clamav-freshclam redis-server swaks | ||
| + | |||
| + | ==Dienste starten== | ||
| + | systemctl enable rspamd clamav-daemon redis-server --now | ||
| + | |||
| + | ==Redis-Anbindung== | ||
| + | Redis dient als Gedächtnis für Rspamd – für Bayes-Filter, Greylisting und den ClamAV-Cache. | ||
| + | |||
| + | * vi /etc/rspamd/local.d/redis.conf | ||
| + | <pre> | ||
| + | servers = "127.0.0.1:6379"; | ||
| + | </pre> | ||
| + | |||
| + | ==Rspamd Controller absichern== | ||
| + | ;Passwort erzeugen | ||
| + | rspamadm pw | ||
| + | |||
| + | ;In die Controller-Konfiguration eintragen | ||
| + | * vi /etc/rspamd/override.d/worker-controller.inc | ||
| + | <pre> | ||
| + | password = "$2$..."; | ||
| + | bind_socket = "*:11334"; | ||
| + | </pre> | ||
| + | |||
| + | systemctl restart rspamd | ||
| + | |||
| + | ;Webinterface | ||
| + | * http://10.88.2XX.49:11334 | ||
| + | |||
| + | ==Einbinden in Postfix== | ||
| + | Rspamd hängt sich als Milter zwischen Empfang und Weiterleitung. | ||
| + | Jede eingehende Mail wird erst von Rspamd geprüft, bevor Postfix sie an mail.it2XX.int weiterleitet. | ||
| + | |||
| + | postconf -e "smtpd_milters=inet:127.0.0.1:11332" | ||
| + | postconf -e "non_smtpd_milters=inet:127.0.0.1:11332" | ||
| + | postfix reload | ||
| + | |||
| + | ==ClamAV-Anbindung== | ||
| + | ;Warum UNIX Socket? | ||
| + | Der UNIX Socket ist schneller als TCP und bleibt lokal – kein Netzwerkoverhead. | ||
| + | |||
| + | * vi /etc/clamav/clamd.conf | ||
| + | <pre> | ||
| + | # TCP deaktiviert | ||
| + | #TCPSocket 3310 | ||
| + | #TCPAddr 127.0.0.1 | ||
| + | |||
| + | # UNIX Socket | ||
| + | LocalSocket /var/run/clamav/clamd.ctl | ||
| + | LocalSocketMode 666 | ||
| + | </pre> | ||
| + | |||
| + | * vi /etc/rspamd/override.d/antivirus.conf | ||
| + | <pre> | ||
| + | enabled = true; | ||
| + | clamav { | ||
| + | type = "clamav"; | ||
| + | symbol = "CLAM_VIRUS"; | ||
| + | servers = "/var/run/clamav/clamd.ctl"; | ||
| + | scan_text_mime = true; | ||
| + | scan_mime_parts = true; | ||
| + | min_size = 0; | ||
| + | scan_unauthenticated = true; | ||
| + | stream = true; | ||
| + | score = 20.0; | ||
| + | } | ||
| + | </pre> | ||
| + | |||
| + | systemctl restart rspamd clamav-daemon | ||
| + | |||
| + | =SPF= | ||
| + | ==Was ist SPF?== | ||
| + | SPF (Sender Policy Framework) legt fest, welche Mailserver berechtigt sind, Mails für eine Domain zu versenden. | ||
| + | Der Empfänger prüft beim Eingang ob der sendende Server in der SPF-Liste der Absenderdomain steht. | ||
| + | Steht er nicht drin, gilt die Mail als verdächtig. | ||
| + | |||
| + | ==DNS-Eintrag== | ||
| + | Der SPF-Eintrag wird als TXT-Record in der DNS-Zone eingetragen. | ||
| + | * vi /etc/bind/db.it2XX.int (auf ns.it2XX.int) | ||
| + | <pre> | ||
| + | it2XX.int. IN TXT "v=spf1 mx a:mail-gw.it2XX.int ~all" | ||
| + | </pre> | ||
| + | |||
| + | ;Bedeutung der Parameter | ||
| + | {| class="wikitable" | ||
| + | ! Parameter !! Bedeutung | ||
| + | |- | ||
| + | | <code>v=spf1</code> || SPF Version 1 | ||
| + | |- | ||
| + | | <code>mx</code> || Der MX-Eintrag der Domain ist berechtigt | ||
| + | |- | ||
| + | | <code>a:mail-gw.it2XX.int</code> || Dieser Host ist explizit berechtigt | ||
| + | |- | ||
| + | | <code>~all</code> || Alle anderen sind Softfail (verdächtig, aber nicht abgewiesen) | ||
| + | |} | ||
| + | |||
| + | rndc reload | ||
| + | |||
| + | =DKIM= | ||
| + | ==Was ist DKIM?== | ||
| + | DKIM (DomainKeys Identified Mail) signiert ausgehende Mails kryptografisch. | ||
| + | Der Empfänger prüft die Signatur anhand des öffentlichen Schlüssels im DNS. | ||
| + | Wurde die Mail unterwegs verändert, schlägt die Prüfung fehl. | ||
| + | Rspamd übernimmt das Signieren automatisch. | ||
| + | |||
| + | ==Schlüsselpaar erzeugen== | ||
| + | mkdir -p /var/lib/rspamd/dkim | ||
| + | rspamadm dkim_keygen -s mail -d it2XX.int -k /var/lib/rspamd/dkim/it2XX.int.mail.key > /var/lib/rspamd/dkim/it2XX.int.mail.pub | ||
| + | chown -R _rspamd:_rspamd /var/lib/rspamd/dkim | ||
| + | |||
| + | ==Rspamd DKIM-Signing konfigurieren== | ||
| + | * vi /etc/rspamd/local.d/dkim_signing.conf | ||
| + | <pre> | ||
| + | enabled = true; | ||
| + | domain { | ||
| + | it2XX.int { | ||
| + | path = "/var/lib/rspamd/dkim/it2XX.int.mail.key"; | ||
| + | selector = "mail"; | ||
| + | } | ||
| + | } | ||
| + | </pre> | ||
| + | |||
| + | systemctl restart rspamd | ||
| + | ==DNS-Eintrag== | ||
| + | Den Public Key aus der .pub-Datei in den DNS eintragen: | ||
| + | cat /var/lib/rspamd/dkim/it2XX.int.mail.pub | ||
| + | |||
| + | Der Inhalt sieht etwa so aus: | ||
| + | <pre> | ||
| + | mail._domainkey.it2XX.int IN TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkq..." | ||
</pre> | </pre> | ||
| − | == | + | |
| − | * | + | Diesen Eintrag auf ns.it2XX.int eintragen: |
| − | + | nsupdate -k /etc/bind/rndc.key << EOF | |
| − | + | server 127.0.0.1 | |
| + | zone it2XX.int | ||
| + | update add mail._domainkey.it2XX.int 3600 TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkq..." | ||
| + | send | ||
| + | EOF | ||
| + | |||
| + | rndc reload | ||
| + | |||
| + | =DMARC= | ||
| + | ==Was ist DMARC?== | ||
| + | DMARC (Domain-based Message Authentication, Reporting and Conformance) verbindet SPF und DKIM. | ||
| + | Es legt fest was passieren soll wenn SPF oder DKIM fehlschlägt – und wer einen Bericht bekommt. | ||
| + | Ohne DMARC können SPF und DKIM einzeln umgangen werden. | ||
| + | |||
| + | ==DNS-Eintrag== | ||
| + | * vi /etc/bind/db.it2XX.int (auf ns.it2XX.int) | ||
| + | <pre> | ||
| + | _dmarc.it2XX.int. IN TXT "v=DMARC1; p=none; rua=mailto:postmaster@it2XX.int" | ||
| + | </pre> | ||
| + | |||
| + | ;Bedeutung der Parameter | ||
| + | {| class="wikitable" | ||
| + | ! Parameter !! Bedeutung | ||
| + | |- | ||
| + | | <code>v=DMARC1</code> || DMARC Version 1 | ||
| + | |- | ||
| + | | <code>p=none</code> || Nur beobachten, nichts abweisen (zum Einstieg) | ||
| + | |- | ||
| + | | <code>rua=</code> || Adresse für Aggregat-Reports | ||
| + | |} | ||
| + | |||
| + | !!!'''Wichtig'''!!! <code>p=none</code> ist nur für den Anfang. Sobald SPF und DKIM stabil laufen auf <code>p=quarantine</code> oder <code>p=reject</code> umstellen. | ||
| + | |||
| + | rndc reload | ||
| + | |||
| + | =Test= | ||
| + | ==Testmail senden== | ||
| + | swaks --to martha@it2XX.int --from test@it2XX.int --server mail-gw.it2XX.int | ||
| + | |||
| + | ==DKIM prüfen== | ||
| + | swaks --to martha@it2XX.int --from test@it2XX.int --server mail-gw.it2XX.int | grep DKIM | ||
| + | |||
| + | ==Logs== | ||
| + | journalctl -u postfix -f | ||
| + | journalctl -u rspamd -f | ||
| + | |||
| + | ==GTUBE Spam-Test== | ||
| + | swaks --to martha@it2XX.int --server mail-gw.it2XX.int --body "XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X" | ||
| + | |||
| + | ==EICAR Virus-Test== | ||
| + | rspamc --ip 1.2.3.4 /tmp/virus.eml | ||
| + | |||
| + | =Ports und Dienste= | ||
| + | {| class="wikitable" | ||
| + | ! Dienst !! Port !! Protokoll | ||
| + | |- | ||
| + | | Postfix SMTP (eingehend) || 25 || TCP | ||
| + | |- | ||
| + | | Rspamd Proxy (Milter) || 11332 || TCP | ||
| + | |- | ||
| + | | Rspamd Worker || 11333 || TCP | ||
| + | |- | ||
| + | | Rspamd Controller (WebUI) || 11334 || TCP | ||
| + | |- | ||
| + | | Redis || 6379 || TCP | ||
| + | |} | ||
| + | |||
| + | [[Kategorie:Mail]] | ||
| + | [[Kategorie:Security]] | ||
| + | [[Kategorie:DMZ]] | ||
Version vom 4. Juni 2026, 14:38 Uhr
Ziel
In dieser Übung wird ein Mailgateway (mail-gw.it2XX.int) in der DMZ eingerichtet. Es übernimmt folgende Aufgaben:
- Annahme eingehender Mails von außen (Port 25)
- Weiterleitung an den internen Mailserver (mail.it2XX.int)
- Spamfilterung und Virenscanning mit Rspamd und ClamAV
- DKIM-Signierung ausgehender Mails
- SPF- und DMARC-Validierung
Die Architektur sieht wie folgt aus:
Internet → mail-gw.it2XX.int [Postfix + Rspamd + ClamAV] → mail.it2XX.int [Postfix + Dovecot] → LAN [Clients]
Netzkonfiguration MAILGW-Server (DMZ)
| Parameter | Wert | Erläuterung |
|---|---|---|
| Netzwerk (NIC) | DMZ | Interface-Zuweisung in VirtualBox |
| IP | 10.88.2XX.49 | Statische IP |
| CIDR | 24 | Classless Inter-Domain Routing Präfixlänge |
| GW | 10.88.2XX.1 | GATEWAY |
| NS | 10.88.2XX.21 | Resolver |
| FQDN | mail-gw.it2XX.int | Fully Qualified Domain Name |
| SHORT | mail-gw | Short Name |
| DOM | it2XX.int | Domain Name |
- Anpassen des Templates
oder
debian-setup.sh -f mail-gw.it2XX.int -a 10.88.2XX.49/24 -g 10.88.2XX.1 -n 10.88.2XX.21
Einfügen in die ~/.ssh/config
- als kit user
- Auf dem Host über den ProxyJump eintragen
Host mail-gw.it2XX.int HostName 10.88.2XX.49 User kit ProxyJump fw.it2XX.int
Postfix als Relay
Warum kein "Internet Site"?
Bei der Postfix-Installation wählen wir No configuration, da der mail-gw kein finaler Empfänger ist. Er nimmt Mails an und leitet sie weiter – er speichert keine Mailboxen. Die komplette Konfiguration erfolgt manuell.
Installation
apt install postfix no configuration
Konfiguration
- Wichtige Parameter im Überblick
| Parameter | Bedeutung |
|---|---|
mydestination = |
Leer – der Gateway ist für keine Domain finaler Empfänger |
relay_domains |
Domains für die Mails weitergeleitet werden |
transport_maps |
Definiert wohin die Mail für welche Domain geht |
mynetworks |
Nur localhost darf Mails einliefern (kein Open Relay) |
smtpd_relay_restrictions |
Verhindert Missbrauch als Open Relay |
- vi /etc/postfix/main.cf
compatibility_level = 3.9
myhostname = mail-gw.it2XX.int
myorigin = /etc/mailname
mydomain = it2XX.int
smtpd_banner = $myhostname ESMTP $mail_name (Debian)
biff = no
inet_protocols = ipv4
inet_interfaces = all
# Kein finaler Empfaenger
mydestination =
mailbox_size_limit = 0
recipient_delimiter = +
# Relay
relay_domains = it2XX.int
transport_maps = hash:/etc/postfix/transport
# Netzwerk
mynetworks = 127.0.0.0/8
# TLS
smtpd_tls_key_file = /etc/ssl/own.key
smtpd_tls_cert_file = /etc/ssl/own.crt
smtpd_tls_security_level = may
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtp_tls_security_level = may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_relay_restrictions = permit_mynetworks defer_unauth_destination
Mailrouting
- Warum eckige Klammern?
Die eckigen Klammern um [mail.it2XX.int] verhindern einen MX-Lookup.
Postfix liefert die Mail direkt an diesen Host – ohne DNS-Umweg über den MX-Record.
- echo "it2XX.int smtp:[mail.it2XX.int]:25" > /etc/postfix/transport
- postmap /etc/postfix/transport
- postfix reload
Rspamd und ClamAV
Warum auf dem Gateway?
Spam- und Virenfilterung gehört auf den Gateway – nicht auf den Mailserver. Schädliche Mails werden abgewiesen bevor sie den internen Mailserver überhaupt erreichen. Der Mailserver bleibt sauber und hat weniger Last.
Installation
apt install rspamd clamav-daemon clamav-freshclam redis-server swaks
Dienste starten
systemctl enable rspamd clamav-daemon redis-server --now
Redis-Anbindung
Redis dient als Gedächtnis für Rspamd – für Bayes-Filter, Greylisting und den ClamAV-Cache.
- vi /etc/rspamd/local.d/redis.conf
servers = "127.0.0.1:6379";
Rspamd Controller absichern
- Passwort erzeugen
rspamadm pw
- In die Controller-Konfiguration eintragen
- vi /etc/rspamd/override.d/worker-controller.inc
password = "$2$..."; bind_socket = "*:11334";
systemctl restart rspamd
- Webinterface
Einbinden in Postfix
Rspamd hängt sich als Milter zwischen Empfang und Weiterleitung. Jede eingehende Mail wird erst von Rspamd geprüft, bevor Postfix sie an mail.it2XX.int weiterleitet.
postconf -e "smtpd_milters=inet:127.0.0.1:11332" postconf -e "non_smtpd_milters=inet:127.0.0.1:11332" postfix reload
ClamAV-Anbindung
- Warum UNIX Socket?
Der UNIX Socket ist schneller als TCP und bleibt lokal – kein Netzwerkoverhead.
- vi /etc/clamav/clamd.conf
# TCP deaktiviert #TCPSocket 3310 #TCPAddr 127.0.0.1 # UNIX Socket LocalSocket /var/run/clamav/clamd.ctl LocalSocketMode 666
- vi /etc/rspamd/override.d/antivirus.conf
enabled = true;
clamav {
type = "clamav";
symbol = "CLAM_VIRUS";
servers = "/var/run/clamav/clamd.ctl";
scan_text_mime = true;
scan_mime_parts = true;
min_size = 0;
scan_unauthenticated = true;
stream = true;
score = 20.0;
}
systemctl restart rspamd clamav-daemon
SPF
Was ist SPF?
SPF (Sender Policy Framework) legt fest, welche Mailserver berechtigt sind, Mails für eine Domain zu versenden. Der Empfänger prüft beim Eingang ob der sendende Server in der SPF-Liste der Absenderdomain steht. Steht er nicht drin, gilt die Mail als verdächtig.
DNS-Eintrag
Der SPF-Eintrag wird als TXT-Record in der DNS-Zone eingetragen.
- vi /etc/bind/db.it2XX.int (auf ns.it2XX.int)
it2XX.int. IN TXT "v=spf1 mx a:mail-gw.it2XX.int ~all"
- Bedeutung der Parameter
| Parameter | Bedeutung |
|---|---|
v=spf1 |
SPF Version 1 |
mx |
Der MX-Eintrag der Domain ist berechtigt |
a:mail-gw.it2XX.int |
Dieser Host ist explizit berechtigt |
~all |
Alle anderen sind Softfail (verdächtig, aber nicht abgewiesen) |
rndc reload
DKIM
Was ist DKIM?
DKIM (DomainKeys Identified Mail) signiert ausgehende Mails kryptografisch. Der Empfänger prüft die Signatur anhand des öffentlichen Schlüssels im DNS. Wurde die Mail unterwegs verändert, schlägt die Prüfung fehl. Rspamd übernimmt das Signieren automatisch.
Schlüsselpaar erzeugen
mkdir -p /var/lib/rspamd/dkim rspamadm dkim_keygen -s mail -d it2XX.int -k /var/lib/rspamd/dkim/it2XX.int.mail.key > /var/lib/rspamd/dkim/it2XX.int.mail.pub chown -R _rspamd:_rspamd /var/lib/rspamd/dkim
Rspamd DKIM-Signing konfigurieren
- vi /etc/rspamd/local.d/dkim_signing.conf
enabled = true;
domain {
it2XX.int {
path = "/var/lib/rspamd/dkim/it2XX.int.mail.key";
selector = "mail";
}
}
systemctl restart rspamd
DNS-Eintrag
Den Public Key aus der .pub-Datei in den DNS eintragen:
cat /var/lib/rspamd/dkim/it2XX.int.mail.pub
Der Inhalt sieht etwa so aus:
mail._domainkey.it2XX.int IN TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkq..."
Diesen Eintrag auf ns.it2XX.int eintragen:
nsupdate -k /etc/bind/rndc.key << EOF server 127.0.0.1 zone it2XX.int update add mail._domainkey.it2XX.int 3600 TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkq..." send EOF
rndc reload
DMARC
Was ist DMARC?
DMARC (Domain-based Message Authentication, Reporting and Conformance) verbindet SPF und DKIM. Es legt fest was passieren soll wenn SPF oder DKIM fehlschlägt – und wer einen Bericht bekommt. Ohne DMARC können SPF und DKIM einzeln umgangen werden.
DNS-Eintrag
- vi /etc/bind/db.it2XX.int (auf ns.it2XX.int)
_dmarc.it2XX.int. IN TXT "v=DMARC1; p=none; rua=mailto:postmaster@it2XX.int"
- Bedeutung der Parameter
| Parameter | Bedeutung |
|---|---|
v=DMARC1 |
DMARC Version 1 |
p=none |
Nur beobachten, nichts abweisen (zum Einstieg) |
rua= |
Adresse für Aggregat-Reports |
!!!Wichtig!!! p=none ist nur für den Anfang. Sobald SPF und DKIM stabil laufen auf p=quarantine oder p=reject umstellen.
rndc reload
Test
Testmail senden
swaks --to martha@it2XX.int --from test@it2XX.int --server mail-gw.it2XX.int
DKIM prüfen
swaks --to martha@it2XX.int --from test@it2XX.int --server mail-gw.it2XX.int | grep DKIM
Logs
journalctl -u postfix -f journalctl -u rspamd -f
GTUBE Spam-Test
swaks --to martha@it2XX.int --server mail-gw.it2XX.int --body "XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X"
EICAR Virus-Test
rspamc --ip 1.2.3.4 /tmp/virus.eml
Ports und Dienste
| Dienst | Port | Protokoll |
|---|---|---|
| Postfix SMTP (eingehend) | 25 | TCP |
| Rspamd Proxy (Milter) | 11332 | TCP |
| Rspamd Worker | 11333 | TCP |
| Rspamd Controller (WebUI) | 11334 | TCP |
| Redis | 6379 | TCP |