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