Re: Verzweifle an Whitelisting (scheinbar gelöst)

Denny Hanschke postmaster at blubbablasen.de
Sa Jun 22 18:57:50 CEST 2024


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
    sender at example.com 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 `expample at meine-domain.de` hinzu:

    ```plaintext
    expample at meine-domain.de 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
sender at example.com OK
example.com OK
```

**/etc/postfix/recipient_checks:**
```plaintext
expample at meine-domain.de 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 
`expample at meine-domain.de` 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 
`expample at meine-domain.de` 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 "example at meine-domain.de" 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 
>>> "example at meine-domain.de" 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 "example at meine-domain.de" 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 "example at meine-domain.de" 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 at meine-domain\.de/
>>> /^From:.*@domain1\.de/            ACTION
>>> /^From:.*@domain2\.de/            ACTION
>>> /^From:.*liebermensch at 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;
>>
>>
>>


Mehr Informationen über die Mailingliste postfix-users