Postfix: message_size_limit pro Domain

Postfix bietet per default nur eine globale Einstellung zur Limitierung der Größe von Nachrichten. Manchmal braucht man das aber etwas granularer. Um das zu realisieren kann man „Policy-Delegation“ nutzen, wodurch Postfix Entscheidungen an einen externen Policy-Server weiterreichen kann. Siehe auch.

Um die Anforderung „message_size_limit pro Domain“ umzusetzen braucht es nicht viel – ein paar Zeilen Perl reichen:

#!/usr/bin/env perl
#
# Ein simpler Policy-Server für Postfix, der message_size_limit pro Domain
# implementiert.

use strict;

# Hier ist die Definition der Domains mit Limit (in Bytes)
my %hashConfig = (
    "marco-pc-debian.localdomain" => 75,
    "example.org" => 1024,
);

my $action;
my %attr = ();

while( <STDIN> ) {
    if( /([^=]+)=(.*)\n/ ) { 
        $attr{$1} = $2;
    } elsif( $_ eq "\n" ) { 
        $action = "action=OK";
        foreach my $domain (keys%hashConfig) {
            if( $attr{'recipient'} =~ /${domain}$/ ) {
                if( $attr{'size'} > $hashConfig{$domain} ) {
                    $action = "action=534 message size for this domain is limited to ".$hashConfig{$domain};
                }
                last;
            }
        }
        print $action."\n\n";
        exit( 0 );
    }   
}

weiterlesen