Mailumleitung nach Client

Klaus Tachtler klaus at tachtler.net
Mi Jul 2 12:46:35 CEST 2025


Hallo,

eine etwas aufwendigere Möglichkeit → KI generiert =


1. Inhalt der CIDR-Zuordnung (Custom Map)

/etc/postfix/ip_to_address.map
1.2.3.4/32    ziel at example.com

2. Python-Policy-Skript: ip_rewriter.py


#!/usr/bin/env python3

import sys
from ipaddress import ip_network, ip_address

MAP_FILE = '/etc/postfix/ip_to_address.map'

def load_cidr_map(filepath):
     cidr_map = {}
     with open(filepath, 'r') as f:
         for line in f:
             line = line.strip()
             if not line or line.startswith('#'):
                 continue
             try:
                 cidr, address = line.split()
                 cidr_map[cidr] = address
             except ValueError:
                 continue  # Zeile überspringen, falls sie ungültig ist
     return cidr_map

def get_rewrite_address(client_ip, cidr_map):
     for cidr, address in cidr_map.items():
         if ip_address(client_ip) in ip_network(cidr):
             return address
     return None

def main():
     attrs = {}
     while True:
         line = sys.stdin.readline()
         if not line or line == '\n':
             break
         name, _, value = line.strip().partition('=')
         attrs[name] = value

     client_ip = attrs.get('client_address', '')
     sender = attrs.get('sender', '')
     cidr_map = load_cidr_map(MAP_FILE)
     rewrite = get_rewrite_address(client_ip, cidr_map)

     if rewrite:
         print(f"sender={rewrite}")
     else:
         print("DUNNO")
     print("")  # Ende der Antwort

if __name__ == '__main__':
     main()


3. chmod +x /etc/postfix/ip_rewriter.py

4. /etc/postfix/master.cf erweitern

policy/ip_rewriter unix - n n - - spawn
   user=nobody argv=/etc/postfix/ip_rewriter.py

5. Postfix Neustart


Grüße
Klaus.

> Moin zusammen,
>
> ich möchte ein Mailumleitung für einen Client einrichten. Wenn  
> dieser Client einliefert, soll die Mail immer hart verdrahtet an  
> eine bestimmte Adresse gehen, egal wohin sie ursprünglich adressiert  
> war.
>
> So dachte ich, dass es funktionieren sollte:
>
> main.cf:
> check_client_access = hash:/etc/postfix/check_client_access
>
> und /etc/postfix/check_client_access:
> 1.2.3.4 REDIRECT ziel at example.com
>
> Wenn also der Client mit IP 1.2.3.4 kommt, soll immer an  
> ziel at example.com umgeleitet werden. Hintergrund: das ist ein  
> Testsystem, dessen Mails nicht rausgehen sollen.
>
> Kurz: so funktionierts nicht. Was mache ich falsch?
>
>
> -- 
> Andre Tann


----- Ende der Nachricht von Andre Tann via Postfixbuch-users  
<postfixbuch-users at listen.jpberlin.de> -----



-- 

---------------------------------------
e-Mail  : klaus at tachtler.net
Homepage: https://www.tachtler.net
DokuWiki: https://dokuwiki.tachtler.net
---------------------------------------
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : nicht verfügbar
Dateityp    : application/pgp-keys
Dateigröße  : 3121 bytes
Beschreibung: Öffentlicher PGP-Schlüssel
URL         : <https://listi.jpberlin.de/pipermail/postfixbuch-users/attachments/20250702/2fd3221c/attachment.skr>


Mehr Informationen über die Mailingliste Postfixbuch-users