#!/usr/local/bin/perl if($db_name eq ""){ print "Usage: $0 <database>\n"; exit(1); } # Trim everything except the actual recipient. split(/-/, $ENV{"LOCAL"}); $recipient = @_[scalar(@_)-1]; # Scan the database looking for a match. $result_address = ""; $default_address = ""; open(DB, $ARGV[0]) || die "cannot open database"; while(<DB>){ chop(); # Trim out any comments. $index = index($_, "#"); $_ = substr($_, 0, $index) if $index >=0; # Get the local name and the forwarding # address. ($db_local_address, $db_forward_to) =\ m|^\s*(\S*)\s*:\s*(\S.*)$|; if($db_local_address eq "-"){ $default_address = $db_forward_to; } elsif($db_local_address eq $recipient){ $found = "yes"; $result_address = $db_forward_to; last; } } close(DB); # If we couldn't find the recipient, forward to # the default user. $result_address = $default_address if($result_address eq ""); # If we were able to resolve an address, then # call qmail's 'forward'. if($result_address ne ""){ system( "/var/qmail/bin/forward $result_address"); exit(0); }else{ exit(100); }