diff --git a/tests/ftpserver.pl b/tests/ftpserver.pl
index 2756e07ca17732ca55625eeae85166caf1dbeb7d..9237a69fb7944164b1ada7419a8c8f29182612d4 100755
--- a/tests/ftpserver.pl
+++ b/tests/ftpserver.pl
@@ -578,10 +578,13 @@ sub protocolsetup {
         %commandfunc = (
             'APPEND' => \&APPEND_imap,
             'CAPABILITY' => \&CAPABILITY_imap,
+            'CREATE'  => \&CREATE_imap,
+            'DELETE'  => \&DELETE_imap,
             'EXAMINE' => \&EXAMINE_imap,
             'FETCH'  => \&FETCH_imap,
             'LIST'   => \&LIST_imap,
             'LOGOUT'   => \&LOGOUT_imap,
+            'RENAME'  => \&RENAME_imap,
             'SEARCH'  => \&SEARCH_imap,
             'SELECT' => \&SELECT_imap,
             'STATUS'  => \&STATUS_imap,
@@ -1080,6 +1083,55 @@ sub SEARCH_imap {
     return 0;
 }
 
+sub CREATE_imap {
+    my ($args) = @_;
+    fix_imap_params($args);
+
+    logmsg "CREATE_imap got $args\n";
+
+    if ($args eq "") {
+        sendcontrol "$cmdid BAD Command Argument\r\n";
+    }
+    else {
+        sendcontrol "$cmdid OK CREATE completed\r\n";
+    }
+
+    return 0;
+}
+
+sub DELETE_imap {
+    my ($args) = @_;
+    fix_imap_params($args);
+
+    logmsg "DELETE_imap got $args\n";
+
+    if ($args eq "") {
+        sendcontrol "$cmdid BAD Command Argument\r\n";
+    }
+    else {
+        sendcontrol "$cmdid OK DELETE completed\r\n";
+    }
+
+    return 0;
+}
+
+sub RENAME_imap {
+    my ($args) = @_;
+    my ($from_mailbox, $to_mailbox) = split(/ /, $args, 2);
+    fix_imap_params($from_mailbox, $to_mailbox);
+
+    logmsg "RENAME_imap got $args\n";
+
+    if (($from_mailbox eq "") || (to_mailbox eq "")) {
+        sendcontrol "$cmdid BAD Command Argument\r\n";
+    }
+    else {
+        sendcontrol "$cmdid OK RENAME completed\r\n";
+    }
+
+    return 0;
+}
+
 sub LOGOUT_imap {
     sendcontrol "* BYE cURL IMAP server signing off\r\n";
     sendcontrol "$cmdid OK LOGOUT completed\r\n";