if ($toaddress =~ /(\S+)[@]yourdomain|yourotherdomain/) { $user = $1; } else { warn "Unknown user: $toaddress\n"; $user = 'postmaster'; # Or whoever should get slop. } #### # This is untested. @users = map { /^(\S+)[@]/ ? $1 : undef } grep { /(yourdomain|yourotherdomain|yourthirddomain)$/ } map { s/\".*?\"//g; (/[<](\S+?)[>]/) ? $1 : undef } map { split /,\s*/, $_ } $headers =~ m/^(?:To|Cc)[:]\s*(.*?)$/mig; if (not @users) { warn "No users.\n"; @users = ('postmaster'); } #### my $filename = "attachment"; { my ($y, $m, $d) = (localtime)[5,4,3]; $y += 1900; $m += 1; $filename = join "-", $filename, $y, $m, $d; } # I assume $user and $ext are already set to the # username and the filetype extension respectively. while (-e "/home/$user/$filename.$ext") { $filename .= ('a'..'z')[rand 26]; # It is possible to be more elegant than this. } open FILEHANDLE, ">/home/$user/$filename.$ext"; binmode FILEHANDLE; # Probably not necessary on *nix. print FILEHANDLE $content; close FILEHANDLE; #### $;=sub{$/};@;=map{my($a,$b)=($_,$;);$;=sub{$a.$b->()}} split//,".rekcah lreP rehtona tsuJ";$\=$ ;->();print$/