Учитывая ваш код
open(Mail, "|/usr/sbin/sendmail -t");
print MAIL "To: $to\n"
print MAIL $msg
close(MAIL)
Я предложу добавить перед этим
$to ||= $ENV{SUDO_USER} || $ENV{USERNAME} || $ENV{LOGNAME} || $ENV{USER} || getpwuid $<;
Пока я в этом, я рекомендую вам добавить дополнительную новую строкупосле вашего последнего заголовка, так что если $ msg просто начинается с чего-то, что может выглядеть как заголовок, он не будет использоваться в качестве заголовка.Если это не то поведение, от которого вы зависите ... (Но я бы рекомендовал не зависеть от этого поведения ...)