Index: /home/maurer/stuff/workspace/james-dev/src/java/org/apache/james/transport/mailets/RemoteDelivery.java
===================================================================
--- /home/maurer/stuff/workspace/james-dev/src/java/org/apache/james/transport/mailets/RemoteDelivery.java	(revision 406090)
+++ /home/maurer/stuff/workspace/james-dev/src/java/org/apache/james/transport/mailets/RemoteDelivery.java	(working copy)
@@ -158,9 +158,9 @@
             if (state.equals(Mail.ERROR)) {
                 //Test the time...
                 int retries = Integer.parseInt(errorMessage);
-                
+
                 // If the retries count is 0 we should try to send the mail now!
-                if (retries == 0) return true;
+                if (retries == 0  || errorMessage.startsWith("-")) return true;
                 
                 long delay = getNextDelay (retries);
                 long timeToProcess = delay + lastUpdated;
@@ -842,6 +842,13 @@
             }
             int retries = Integer.parseInt(mail.getErrorMessage());
             if (retries < maxRetries) {
+                
+                // the message was forced to get send again! Restore old error_message
+            	//TODO: We should discuss if we should not raise the count
+                if (mail.getErrorMessage().startsWith("-")) {
+                    retries = Integer.parseInt(mail.getErrorMessage().substring(1));
+                }
+                
                 logBuffer =
                     new StringBuffer(128)
                             .append("Storing message ")
@@ -1118,7 +1125,7 @@
                         if (deliver(mail, session)) {
                             //Message was successfully delivered/fully failed... delete it
                             outgoing.remove(key);
-                        } else {
+                        } else {                           
                             //Something happened that will delay delivery.  Store any updates
                             outgoing.store(mail);
                             // This is an update, we have to unlock and notify or this mail
Index: /home/maurer/stuff/workspace/james-dev/src/java/org/apache/james/remotemanager/RemoteManagerHandler.java
===================================================================
--- /home/maurer/stuff/workspace/james-dev/src/java/org/apache/james/remotemanager/RemoteManagerHandler.java	(revision 406852)
+++ /home/maurer/stuff/workspace/james-dev/src/java/org/apache/james/remotemanager/RemoteManagerHandler.java	(working copy)
@@ -38,8 +38,6 @@
 import java.net.Socket;
 import java.util.Iterator;
 import java.util.Locale;
-import java.util.Date;
-
 
 /**
  * Provides a really rude network interface to administer James.
@@ -1000,9 +998,10 @@
             Mail m = spoolRepository.retrieve(key);
 
             if (m.getState().equals(Mail.ERROR)) {
-                m.setErrorMessage(0 + "");
-                m.setLastUpdated(new Date());
-
+            	
+            	// set a special error_message to identify that this emails was manualy flushed
+                m.setErrorMessage(("-" + m.getErrorMessage()));
+                
                 // store changes
                 spoolRepository.store(m);
                 spoolRepository.unlock(key);
@@ -1012,6 +1011,9 @@
                 }
                 return true;
             } else {
+                // we must unlock the key!
+                spoolRepository.unlock(key);
+                
                 out.println("The mail with key " + key
                         + " is not in error state!");
                 out.flush();
@@ -1090,12 +1092,16 @@
 
                 spoolRepository.remove(key);
                 spoolRepository.unlock(key);
-
-                synchronized (spoolRepository) {
-                    spoolRepository.notify();
-                }
                 return true;
+            } else {                
+                out.println("The mail with key " + key
+                        + " is not in error state!");
+                out.flush();
+                
+                // we must unlock the key!
+                spoolRepository.unlock(key);
             }
+            
         } else {
             out.println("Error locking the mail with key:  " + key);
             out.flush();
