summaryrefslogtreecommitdiff
path: root/tests/ftpserver.pl
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ftpserver.pl')
-rwxr-xr-xtests/ftpserver.pl15
1 files changed, 10 insertions, 5 deletions
diff --git a/tests/ftpserver.pl b/tests/ftpserver.pl
index 9c4b88aef..63dc3342c 100755
--- a/tests/ftpserver.pl
+++ b/tests/ftpserver.pl
@@ -1037,13 +1037,15 @@ sub VRFY_smtp {
sendcontrol "501 Unrecognized parameter\r\n";
}
else {
+ my $smtputf8 = grep /^SMTPUTF8$/, @capabilities;
+
# Validate the username (only a valid local or external username is
# allowed, such as user or user@example.com)
- if ($username !~
- /^([a-zA-Z0-9._%+-]+)(\@(([a-zA-Z0-9-]+)\.)+([a-zA-Z]{2,4}))?$/) {
- sendcontrol "501 Invalid address\r\n";
- }
- else {
+ if ((!$smtputf8 && $username =~
+ /^([a-zA-Z0-9._%+-]+)(\@(([a-zA-Z0-9-]+)\.)+([a-zA-Z]{2,4}))?$/) ||
+ ($smtputf8 && $username =~
+ /^([a-zA-Z0-9\x{80}-\x{ff}._%+-]+)(\@(([a-zA-Z0-9\x{80}-\x{ff}-]+)\.)+([a-zA-Z]{2,4}))?$/)) {
+
my @data = getreplydata($smtp_client);
if(!@data) {
@@ -1060,6 +1062,9 @@ sub VRFY_smtp {
sendcontrol $d;
}
}
+ else {
+ sendcontrol "501 Invalid address\r\n";
+ }
}
return 0;