#/usr/local/bin/perl $PIPE = "|/usr/lib/sendmail -oi -t"; #$PIPE = "|/bin/cat"; $SIG{'PIPE'} = 'plumber'; sub plumber { die "$0: broken PIPE talking to sendmail!\n"; } while (<>) { next unless /^Problem/; chop; split; for ( @_ ) { s/.*://; } $nullpw = /null passwd/; ($user,$host,$passwd) = $nullpw ? ($_[2], $_[3], ' ') : ($_[1], $_[2], $_[3]); printf "user %-8s has passwd %-8s on host %s\n", $user, $passwd, $host; next if $user =~ /uucp/; open PIPE || die "$0: couldn't open $PIPE: $!\n"; printf PIPE "From: Security Auditor \n"; printf PIPE "To: %s\n", $user; if ($nullpw) { printf PIPE "Subject: Your missing passwd on %s\n\n", $host; printf PIPE "On the machine named \"%s\", your password has not\n", $host; printf PIPE "yet been set. This lets anyone login as you without\n"; printf PIPE "having to present password, so please try to\n"; } else { printf PIPE "Subject: Your trivial passwd on %s\n\n", $host; printf PIPE "On the machine named \"%s\", your passwd is \"%s\".\n", $host, $passwd; printf PIPE "This is considered very easy to guess, so please\n"; } printf PIPE "fix it at your earliest possible convenience.\n"; printf PIPE "\nOtherwise your account may soon be de-activated!\n"; printf PIPE "\nThanks,\n\n--daemon\n"; close PIPE; }