In Postfix kann man mit check_client_access in den smtpd_recipient_restrictions sehr einfach IP Adressen direkt mit einem 554-Fehler ablehnen. Die meisten Anleitungen die man finden kann binden dann mit

 check_client_access btree:/etc/postfix/access_client,

oder

 check_client_access hash:/etc/postfix/access_client,

die zu sperrenden IP Adressen in die main.cf ein. Das funktioniert bei einzelnen Adressen auch sehr gut. Wenn man allerdings ganze Netzbereiche sperren will läuft man häufig in ein Problem. Denn diese Hash-Tables können nicht mit der CIDR-Notation umgehen. Es gibt die Möglichkeit immer mit ganze Adressblöcke zu sperren, aber oft ist das nicht genau genug.

 # KOMMENTAR
 192.168.1     REJECT
 192.168.1.100 OK

Dieses Beispiel würde 192.168.1.0/24 sperren, bis auf die Ausnahme 192.168.1.100/32.

Um dieses Problem zu beseitigen kann man in Postfix auch CIDR-Tables einbinden. Das geschieht mit

 check_client_access cidr:/etc/postfix/access_client_cidr,

Es ist kein Problem mehrere check_client_access in der main.cf zu haben. Der Aufbau ist folgender

 # KOMMENTAR
 192.168.1.100  OK
 192.168.1.0/24 REJECT

Wichtig ist hier, dass die Reihenfolge nicht egal ist. Genauere Einträge müssen vor allgemeineren Einträgen kommen. Das bedeutet das einzelne IP Adressen über den dazugehörigen Netzbereichen stehen müssen. Bei Hash-Tables spielt das keine Rolle.

In Postfix ganze Netzwerkbereiche sperren