Nach vielem hin und her hat eine KI nach genauen Angaben und vielen
Fehlversuchen eine scheinbar brauchbare Konfiguration für das
beschriebene Problem geliefert.
- Filter nur für eine bestimmte Empfängeradresse auf meinem Postfix
- Whitelist-Prinzip mit abschließendem REJECT
1. **Erstellen Sie die Whitelist-Datei:**
Erstellen Sie die Datei `/etc/postfix/whitelist` mit den erlaubten
Absenderdomains oder -adressen:
```plaintext
[email protected] OK
example.com OK
```
2. **Hash-Map für die Whitelist erstellen:**
Erstellen Sie eine Hash-Map für die Whitelist-Datei:
```bash
postmap /etc/postfix/whitelist
```
3. **Definieren Sie die Restriction Class:**
Fügen Sie in Ihrer `main.cf` die Definition der Restriction Class hinzu:
```plaintext
smtpd_restriction_classes = restrict_example_recipient
restrict_example_recipient = check_sender_access
hash:/etc/postfix/whitelist, reject
```
4. **Konfigurieren Sie die Empfängerrestriktionen:**
Erstellen Sie eine Datei `/etc/postfix/recipient_checks` und fügen
Sie die spezifische Regel für `[email protected]` hinzu:
```plaintext
[email protected] restrict_example_recipient
```
5. **Hash-Map für die Empfängerrestriktionen erstellen:**
Erstellen Sie eine Hash-Map für die Empfängerrestriktionen:
```bash
postmap /etc/postfix/recipient_checks
```
6. **Passen Sie Ihre smtpd_recipient_restrictions an:**
Fügen Sie in der `main.cf` die Anpassungen hinzu, um die Restriction
Class zu verwenden:
```plaintext
smtpd_recipient_restrictions =
check_recipient_access hash:/etc/postfix/recipient_checks,
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination
```
7. **Postfix-Konfiguration neu laden:**
Laden Sie die neue Konfiguration, um die Änderungen wirksam zu machen:
```bash
postfix reload
```
### Zusammenfassung der Konfigurationsdateien
**/etc/postfix/whitelist:**
```plaintext
[email protected] OK
example.com OK
```
**/etc/postfix/recipient_checks:**
```plaintext
[email protected] restrict_example_recipient
```
**main.cf (relevante Abschnitte):**
```plaintext
smtpd_restriction_classes = restrict_example_recipient
restrict_example_recipient = check_sender_access
hash:/etc/postfix/whitelist, reject
smtpd_recipient_restrictions =
check_recipient_access hash:/etc/postfix/recipient_checks,
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination
```
### Erläuterung
- **smtpd_restriction_classes**: Definiert eine Restriction Class mit
dem Namen `restrict_example_recipient`.
- **restrict_example_recipient**: Diese Klasse enthält die Regeln zur
Überprüfung der Absenderadresse gegen die Whitelist und zum Verwerfen
nicht erlaubter Absender.
- **check_recipient_access**: Prüft, ob der Empfänger in der Datei
`/etc/postfix/recipient_checks` enthalten ist. Wenn der Empfänger
`[email protected]` ist, wird die `restrict_example_recipient`
Restriction Class angewendet.
- **permit_mynetworks**: Erlaubt E-Mails von vertrauenswürdigen Netzwerken.
- **permit_sasl_authenticated**: Erlaubt E-Mails von authentifizierten
Benutzern.
- **reject_unauth_destination**: Verwirft E-Mails, die nicht für lokale
Empfänger oder erlaubte Ziele bestimmt sind.
Mit dieser Konfiguration werden nur E-Mails an
`[email protected]` durch die Restriction Class gefiltert,
während alle anderen E-Mail-Adressen auf Ihrem Postfix-Server normal
funktionieren.
Am 22.06.24 um 17:55 schrieb Denny Hanschke via postfix-users:
Okay, hab ich verstanden, welche Alternative hab ich, wenn nur noch
Punkt 2 der Voraussetzung gegeben sein muss?
- der Filter sollte nur auf "[email protected]" angewendet werden
Am 22.06.24 um 14:13 schrieb Walter H. via postfix-users:
On 22.06.2024 13:07, Denny Hanschke via postfix-users wrote:
Hallo liebe Postfix-User,
ich habe ein riesen Problem. Eine Mailadresse
"[email protected]" gehostet auf meinem Postfix wird in letzter
Zeit mit wirklich gut gemachten Spam überrannt. Da ich keine
Möglichkeit sehe diesen Spam zuverlässig zu identifizieren und dann
zu blocken, kam ich auf die Idee, einfach alle eingehenden Mails an
die "[email protected]" zu verwerfen, es sei denn, ich habe die
Domains oder den Absender gewhitelistet.
#### Voraussetzung:
- die Umsetzung und Implementierung sollte einfach sein
- der Filter sollte nur auf "[email protected]" angewendet werden
- Möglichst entweder mit PCRE oder REGEX realisierbar
- Das Prinzip des Whitelisting mit abschießendem "REJECT" sollte zu
Anwendung kommen
Als Ansatz dafür hab ich mir dafür die header-checks gedacht mit
folgendem Inhalt:
# header_checks #
If /^To:.*example@meine-domain\.de/
/^From:.*@domain1\.de/ ACTION
/^From:.*@domain2\.de/ ACTION
/^From:.*liebermensch@domain3\.*/ ACTION
/.*/ REJECT
Endif
Hallo,
Du hast den Grundsatz hier komplett übersehen;
header_checks prüft jeweils nur eine Zeile des Mail-Headers, sprich
Du kannst mit if-Blöcken zwar arbeiten, diese funktionieren aber nur
jeweils f. die selbe Zeile;
z.B.
# reject specific mails
if /^from:[[:space:]].*$/
/^from:[[:space:]][[:alnum:][:punct:][:space:]]*(\<)?(mailings\@gmx\.net|mailings\@gmx(net)?\.de|keineantwortadresse\@web\.de)(\>)?.*$/
REJECT 5.7.1 Mail is SPAM.
/^from:[[:space:]][[:alnum:][:punct:][:space:]]*(\<)?([[:alnum:]_\.\-]+\@[[:alnum:]_\.\-]+invalid)(\>)?.*$/
REJECT 5.7.1 Mail is SPAM. Invalid sender given.
endif
das ist hier nur eine Optimierung dahingehend, dass für alle Zeilen,
welche nicht mit 'from' beginnen,
die komplexen regexp auch nicht geprüft werden;