catch malformed mailto/mailfrom in sendmail

This commit is contained in:
Fabian Grünbichler 2016-06-09 16:34:25 +02:00 committed by Dietmar Maurer
parent 1a0c010327
commit c9c6d91073

View File

@ -1224,19 +1224,24 @@ sub sync_mountpoint {
# mailto may be a single email string or an array of receivers # mailto may be a single email string or an array of receivers
sub sendmail { sub sendmail {
my ($mailto, $subject, $text, $html, $mailfrom, $author) = @_; my ($mailto, $subject, $text, $html, $mailfrom, $author) = @_;
my $mail_re = qr/[^-a-zA-Z0-9+._@]/;
$mailto = [ $mailto ] if !ref($mailto); $mailto = [ $mailto ] if !ref($mailto);
my $rcvrarg = ''; foreach (@$mailto) {
foreach my $r (@$mailto) { die "illegal character in mailto address\n"
$rcvrarg .= " '$r'"; if ($_ =~ $mail_re);
} }
my $rcvrtxt = join (', ', @$mailto); my $rcvrtxt = join (', ', @$mailto);
$mailfrom = $mailfrom || "root"; $mailfrom = $mailfrom || "root";
die "illegal character in mailfrom address\n"
if $mailfrom =~ $mail_re;
$author = $author || 'Proxmox VE'; $author = $author || 'Proxmox VE';
open (MAIL,"|sendmail -B 8BITMIME -f $mailfrom $rcvrarg") || open (MAIL, "|-", "sendmail", "-B", "8BITMIME", "-f", $mailfrom, @$mailto) ||
die "unable to open 'sendmail' - $!"; die "unable to open 'sendmail' - $!";
# multipart spec see https://www.ietf.org/rfc/rfc1521.txt # multipart spec see https://www.ietf.org/rfc/rfc1521.txt