From: Thomas Hochstein Date: Sun, 24 Jul 2011 10:28:26 +0000 (+0200) Subject: Fix regexp for syntax-checking. X-Git-Tag: v0.6~4 X-Git-Url: https://code.th-h.de/?p=mail%2Fcheckmail.git;a=commitdiff_plain;h=5327436fa46c41f8cfdb1a97c4e97cfd91dc26d6;ds=inline Fix regexp for syntax-checking. It was matching ""@domain; AFAIU RFC 5322, only "something"@domain should be legal, but not an empty quoted string. Signed-off-by: Thomas Hochstein --- diff --git a/checkmail.pl b/checkmail.pl index c8f9e91..537d8f0 100644 --- a/checkmail.pl +++ b/checkmail.pl @@ -93,8 +93,9 @@ my (%targets,$curstat,$status,$log,$message); foreach (@addresses) { my $address = $_; # regexp taken from http://www.regular-expressions.info/email.html - # and escaping of "/" added two times - if ($address !~ /^(?:[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i) { + # with escaping of "/" added two times and "*" changed to "+" + # in localpart, second alternative + if ($address !~ /^(?:[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f]+)")@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i) { printf(" > Address <%s> is syntactically INVALID.\n",$address) if !($options{'q'}); $curstat = 2; } else {