diff --git a/tests/data/test677 b/tests/data/test677
index 15526a67e..3f84dce81 100644
--- a/tests/data/test677
+++ b/tests/data/test677
@@ -37,7 +37,7 @@ imap://%HOSTIP:%IMAPPORT/677
 <verify>
 <protocol>
 A001 CAPABILITY
-A1 IDLE
+A1 IDLE
 A002 LOGOUT
 </protocol>
 </verify>
diff --git a/tests/ftpserver.pl b/tests/ftpserver.pl
index 9040478ec..6db38e1e8 100755
--- a/tests/ftpserver.pl
+++ b/tests/ftpserver.pl
@@ -643,6 +643,7 @@ sub protocolsetup {
             'STATUS'     => \&STATUS_imap,
             'STORE'      => \&STORE_imap,
             'UID'        => \&UID_imap,
+            'IDLE'       => \&IDLE_imap,
         );
         %displaytext = (
             'welcome' => join("",
@@ -1587,6 +1588,16 @@ sub COPY_imap {
     return 0;
 }
 
+sub IDLE_imap {
+    logmsg "IDLE_imap\n";
+
+    sendcontrol "+ entering idle mode\r\n";
+    %commandfunc = ();
+    $proto = "imap-idle";
+
+    return 0;
+}
+
 sub UID_imap {
     my ($args) = @_;
     my ($command) = split(/ /, $args, 1);
@@ -3217,7 +3228,9 @@ while(1) {
             }
         }
         else {
-            sendcontrol "500 Unrecognized command\r\n";
+            if ($proto ne "imap-idle") {
+                sendcontrol "500 Unrecognized command\r\n";
+            }
             last;
         }
 
diff --git a/tests/libtest/lib677.c b/tests/libtest/lib677.c
index 74675c882..316ddc988 100644
--- a/tests/libtest/lib677.c
+++ b/tests/libtest/lib677.c
@@ -25,7 +25,7 @@
 #include "warnless.h"
 #include "memdebug.h"
 
-static const char cmd[] = "A1 IDLE\n";
+static const char cmd[] = "A1 IDLE\r\n";
 static char buf[1024];
 
 int test(char *URL)

