diff --git a/nuxeo-platform-mail/nuxeo-platform-mail-core/src/main/java/org/nuxeo/ecm/platform/mail/adapter/MailMessageBlobHolder.java b/nuxeo-platform-mail/nuxeo-platform-mail-core/src/main/java/org/nuxeo/ecm/platform/mail/adapter/MailMessageBlobHolder.java
index fb41998..656a699 100644
--- a/nuxeo-platform-mail/nuxeo-platform-mail-core/src/main/java/org/nuxeo/ecm/platform/mail/adapter/MailMessageBlobHolder.java
+++ b/nuxeo-platform-mail/nuxeo-platform-mail-core/src/main/java/org/nuxeo/ecm/platform/mail/adapter/MailMessageBlobHolder.java
@@ -25,6 +25,7 @@ import org.nuxeo.ecm.core.api.ClientException;
 import org.nuxeo.ecm.core.api.DocumentModel;
 import org.nuxeo.ecm.core.api.blobholder.DocumentBlobHolder;
 import org.nuxeo.ecm.core.api.impl.blob.StringBlob;
+import org.nuxeo.ecm.platform.mail.utils.MailCoreConstants;
 
 /**
  * BlobHolder for MailMessage documents. The blob returned is a StringBlob with
@@ -47,21 +48,28 @@ public class MailMessageBlobHolder extends DocumentBlobHolder {
     @Override
     public Blob getBlob() throws ClientException {
         String htmlTextProperty = (String) doc.getPropertyValue(xPath);
+        Blob blob = null;
         if (htmlTextProperty != null && xPathFilename != null
                 && htmlTextProperty.length() != 0) {
-            Blob blob = new StringBlob(htmlTextProperty);
+            blob = new StringBlob(htmlTextProperty);
             Matcher m = isHtmlPattern.matcher(htmlTextProperty);
             if (m.matches()) {
                 blob.setMimeType("text/html");
             } else {
                 blob.setMimeType("text/plain");
             }
+        } else {
+            String txt = (String) doc.getPropertyValue(MailCoreConstants.TEXT_PROPERTY_NAME);
+            if (txt == null) {
+                txt = "";
+            }
+            blob = new StringBlob(txt, "text/plain");
+        }
+        if (blob != null) {
             blob.setFilename(xPathFilename);
             // set dummy digest to avoid comparison error
             blob.setDigest("notInBinaryStore");
-            return blob;
-        } else {
-            return null;
         }
+        return blob;
     }
 }
diff --git a/nuxeo-platform-mail/nuxeo-platform-mail-core/src/main/java/org/nuxeo/ecm/platform/mail/listener/MailEventListener.java b/nuxeo-platform-mail/nuxeo-platform-mail-core/src/main/java/org/nuxeo/ecm/platform/mail/listener/MailEventListener.java
index 7bc9347..bf827f9 100644
--- a/nuxeo-platform-mail/nuxeo-platform-mail-core/src/main/java/org/nuxeo/ecm/platform/mail/listener/MailEventListener.java
+++ b/nuxeo-platform-mail/nuxeo-platform-mail-core/src/main/java/org/nuxeo/ecm/platform/mail/listener/MailEventListener.java
@@ -19,6 +19,9 @@
 
 package org.nuxeo.ecm.platform.mail.listener;
 
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
+
 import javax.mail.AuthenticationFailedException;
 import javax.security.auth.login.LoginContext;
 import javax.security.auth.login.LoginException;
@@ -55,13 +58,33 @@ public class MailEventListener implements EventListener {
 
     private static final Log log = LogFactory.getLog(MailEventListener.class);
 
+    protected Lock lock = new ReentrantLock();
+    
+    public static final String LOCK = "org.nuxeo.mail.lock";
+    
     public void handleEvent(Event event) {
         String eventId = event.getName();
 
         if (!EVENT_NAME.equals(eventId)) {
             return;
         }
-
+        
+        if (Framework.getProperty(LOCK, "true").equalsIgnoreCase("true")) {
+            if (lock.tryLock()) {
+                try {
+                    doHandleEvent(event);
+                } finally {
+                    lock.unlock();        
+                }
+            } else {
+                log.info("Skip email check since it is already running");
+            }
+        } else {
+            doHandleEvent(event);
+        }
+    }
+    
+    public void doHandleEvent(Event event) {
         LoginContext loginContext = null;
         CoreSession coreSession = null;
 
@@ -85,6 +108,8 @@ public class MailEventListener implements EventListener {
             query.append(" AND ecm:isProxy = 0 ");
             DocumentModelList mailFolderList = coreSession.query(query.toString());
 
+            log.info("Checking emails on " + mailFolderList.size() + " mailboxe(s)");
+            
             for (DocumentModel currentMailFolder : mailFolderList) {
                 try {
                     MailCoreHelper.checkMail(currentMailFolder, coreSession);
diff --git a/nuxeo-platform-mail/nuxeo-platform-mail-core/src/main/java/org/nuxeo/ecm/platform/mail/listener/action/CreateDocumentsAction.java b/nuxeo-platform-mail/nuxeo-platform-mail-core/src/main/java/org/nuxeo/ecm/platform/mail/listener/action/CreateDocumentsAction.java
index 553c86e..ee9557d 100644
--- a/nuxeo-platform-mail/nuxeo-platform-mail-core/src/main/java/org/nuxeo/ecm/platform/mail/listener/action/CreateDocumentsAction.java
+++ b/nuxeo-platform-mail/nuxeo-platform-mail-core/src/main/java/org/nuxeo/ecm/platform/mail/listener/action/CreateDocumentsAction.java
@@ -119,15 +119,18 @@ public class CreateDocumentsAction extends AbstractMailAction {
         documentModel.setPropertyValue(CC_RECIPIENTS_PROPERTY_NAME,
                 ccRecipients);
 
-        StringBlob sb = new StringBlob(text);
-        BlobHolder simpleBlobHolder = new SimpleBlobHolder(sb);
-        ConversionService conversionService = Framework.getService(ConversionService.class);
-        Map<String, Serializable> parameters = new HashMap<String, Serializable>();
-        parameters.put("tagFilter", "body");
-        BlobHolder simpleTextBH = conversionService.convert("html2text", simpleBlobHolder, parameters);
-        String simpleText = simpleTextBH.getBlob().getString();
-        documentModel.setPropertyValue(TEXT_PROPERTY_NAME, simpleText);
         documentModel.setPropertyValue(HTML_TEXT_PROPERTY_NAME, text);
+        if (text != null && !text.isEmpty()) {
+            StringBlob sb = new StringBlob(text);
+            BlobHolder simpleBlobHolder = new SimpleBlobHolder(sb);
+            ConversionService conversionService = Framework.getService(ConversionService.class);
+            Map<String, Serializable> parameters = new HashMap<String, Serializable>();
+            parameters.put("tagFilter", "body");
+            BlobHolder simpleTextBH = conversionService.convert("html2text", simpleBlobHolder, parameters);
+            String simpleText = simpleTextBH.getBlob().getString();
+            documentModel.setPropertyValue(TEXT_PROPERTY_NAME, simpleText);            
+        }
+        
         UnrestrictedCreateDocument unrestrictedCreateDocument = new UnrestrictedCreateDocument(
                 documentModel, session);
         unrestrictedCreateDocument.runUnrestricted();
diff --git a/nuxeo-platform-mail/nuxeo-platform-mail-core/src/main/java/org/nuxeo/ecm/platform/mail/listener/action/EndAction.java b/nuxeo-platform-mail/nuxeo-platform-mail-core/src/main/java/org/nuxeo/ecm/platform/mail/listener/action/EndAction.java
index ed26fbd..022793c 100644
--- a/nuxeo-platform-mail/nuxeo-platform-mail-core/src/main/java/org/nuxeo/ecm/platform/mail/listener/action/EndAction.java
+++ b/nuxeo-platform-mail/nuxeo-platform-mail-core/src/main/java/org/nuxeo/ecm/platform/mail/listener/action/EndAction.java
@@ -53,6 +53,7 @@ public class EndAction extends AbstractMailAction {
 //            log.debug(LEAVE_ON_SERVER_KEY + ": " + leaveOnServer);
             if ((IMAP.equals(protocolType) || IMAPS.equals(protocolType)) && leaveOnServer) {
                 message.setFlag(Flag.SEEN, true);
+                
             } else {
                 message.setFlag(Flag.DELETED, true);
             }
diff --git a/nuxeo-platform-mail/nuxeo-platform-mail-core/src/main/java/org/nuxeo/ecm/platform/mail/listener/action/ExtractMessageInformationAction.java b/nuxeo-platform-mail/nuxeo-platform-mail-core/src/main/java/org/nuxeo/ecm/platform/mail/listener/action/ExtractMessageInformationAction.java
index d125e20..c378845 100644
--- a/nuxeo-platform-mail/nuxeo-platform-mail-core/src/main/java/org/nuxeo/ecm/platform/mail/listener/action/ExtractMessageInformationAction.java
+++ b/nuxeo-platform-mail/nuxeo-platform-mail-core/src/main/java/org/nuxeo/ecm/platform/mail/listener/action/ExtractMessageInformationAction.java
@@ -55,6 +55,7 @@ import org.nuxeo.ecm.core.api.impl.blob.FileBlob;
 import org.nuxeo.ecm.platform.mail.action.ExecutionContext;
 import org.nuxeo.ecm.platform.mail.utils.MailCoreConstants;
 import org.nuxeo.ecm.platform.mimetype.interfaces.MimetypeRegistry;
+import org.nuxeo.runtime.api.Framework;
 
 /**
  * Puts on the pipe execution context the values retrieved from the new messages
@@ -73,10 +74,14 @@ public class ExtractMessageInformationAction extends AbstractMailAction {
 
     private String bodyContent;
 
+    public static final String COPY_MESSAGE = "org.nuxeo.mail.imap.copy";    
+    
     @Override
     public boolean execute(ExecutionContext context) throws Exception {
         bodyContent = "";
 
+        boolean copyMessage = Boolean.parseBoolean(Framework.getProperty(COPY_MESSAGE, "true"));        
+        
         try {
             Message originalMessage = context.getMessage();
             if (log.isDebugEnabled()) {
@@ -88,7 +93,7 @@ public class ExtractMessageInformationAction extends AbstractMailAction {
             // override most of server bugs, see
             // http://java.sun.com/products/javamail/FAQ.html#imapserverbug
             Message message;
-            if (originalMessage instanceof MimeMessage) {
+            if (originalMessage instanceof MimeMessage && copyMessage) {
                 message = new MimeMessage((MimeMessage) originalMessage);
                 if (log.isDebugEnabled()) {
                     log.debug("Transforming message after full load: "
@@ -200,6 +205,9 @@ public class ExtractMessageInformationAction extends AbstractMailAction {
             List<Blob> blobs = new ArrayList<Blob>();
             context.put(ATTACHMENTS_KEY, blobs);
 
+            
+            //String[] cte = message.getHeader("Content-Transfer-Encoding");
+            
             // process content
             getAttachmentParts(message, subject, mimeService, context);
 
@@ -330,7 +338,7 @@ public class ExtractMessageInformationAction extends AbstractMailAction {
 
         return null;
     }
-
+    
     /**
      * Interprets the body accordingly to the charset used. It relies on the
      * content type being ****;charset={charset};******
@@ -339,8 +347,30 @@ public class ExtractMessageInformationAction extends AbstractMailAction {
      */
     protected static String decodeMailBody(Part part)
             throws MessagingException, IOException {
-        String encoding = MimeUtility.getEncoding(part.getDataHandler());
-        InputStream is = MimeUtility.decode(part.getInputStream(), encoding);
+        
+        String encoding =null;
+        
+        // try to get encoding from header rather than from Stream !
+        // unfortunately, this does not seem to be reliable ...
+        /*
+        String[] cteHeader = part.getHeader("Content-Transfer-Encoding");        
+        if (cteHeader!=null && cteHeader.length>0) {
+            encoding =  cteHeader[0].toLowerCase();    
+        }*/
+        
+        // fall back to default sniffing
+        if (encoding==null)  {
+            encoding = MimeUtility.getEncoding(part.getDataHandler());    
+        }          
+               
+        InputStream is = null;
+        try {
+            is = MimeUtility.decode(part.getInputStream(), encoding);
+        } catch (IOException ex) {
+            log.error("Unable to read content", ex);
+            return "";
+        }
+        
         String contType = part.getContentType();
         final String charsetIdentifier = "charset=";
         final String ISO88591 = "iso-8859-1";
diff --git a/nuxeo-platform-mail/nuxeo-platform-mail-core/src/main/java/org/nuxeo/ecm/platform/mail/listener/action/StartAction.java b/nuxeo-platform-mail/nuxeo-platform-mail-core/src/main/java/org/nuxeo/ecm/platform/mail/listener/action/StartAction.java
index 37d6ee2..dfb2401 100644
--- a/nuxeo-platform-mail/nuxeo-platform-mail-core/src/main/java/org/nuxeo/ecm/platform/mail/listener/action/StartAction.java
+++ b/nuxeo-platform-mail/nuxeo-platform-mail-core/src/main/java/org/nuxeo/ecm/platform/mail/listener/action/StartAction.java
@@ -41,9 +41,9 @@ public class StartAction extends AbstractMailAction {
             return false;
         }
         // mark message as seen
-        message.setFlag(Flag.SEEN, true);
+        // message.setFlag(Flag.SEEN, true);
         // flag it in case it is not treated correctly
-        message.setFlag(Flag.FLAGGED, true);
+        // message.setFlag(Flag.FLAGGED, true);
         return true;
     }
 
diff --git a/nuxeo-platform-mail/nuxeo-platform-mail-core/src/main/java/org/nuxeo/ecm/platform/mail/utils/MailCoreHelper.java b/nuxeo-platform-mail/nuxeo-platform-mail-core/src/main/java/org/nuxeo/ecm/platform/mail/utils/MailCoreHelper.java
index 034ece2..5122297 100644
--- a/nuxeo-platform-mail/nuxeo-platform-mail-core/src/main/java/org/nuxeo/ecm/platform/mail/utils/MailCoreHelper.java
+++ b/nuxeo-platform-mail/nuxeo-platform-mail-core/src/main/java/org/nuxeo/ecm/platform/mail/utils/MailCoreHelper.java
@@ -41,6 +41,8 @@ import static org.nuxeo.ecm.platform.mail.utils.MailCoreConstants.LEAVE_ON_SERVE
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Properties;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.CopyOnWriteArraySet;
 
 import javax.mail.FetchProfile;
 import javax.mail.Flags;
@@ -63,6 +65,9 @@ import org.nuxeo.ecm.platform.mimetype.interfaces.MimetypeRegistry;
 import org.nuxeo.ecm.platform.mail.listener.MailEventListener;
 import org.nuxeo.runtime.api.Framework;
 
+import com.sun.mail.imap.IMAPFolder;
+import com.sun.mail.imap.IMAPMessage;
+
 /**
  * Helper for Mail Core.
  *
@@ -84,6 +89,12 @@ public final class MailCoreHelper {
 
     private static MimetypeRegistry mimeService;
 
+    public static final String PARTIAL_FETCH = "org.nuxeo.mail.imap.partial";
+    public static final String IMAP_DEBUG = "org.nuxeo.mail.imap.debug";
+    public static final String MAILBOX_LOCK = "org.nuxeo.mail.box.lock";
+    
+    protected static final CopyOnWriteArrayList<String> processingMailBoxes = new CopyOnWriteArrayList<String>();
+    
     private MailCoreHelper() {
     }
 
@@ -111,12 +122,31 @@ public final class MailCoreHelper {
         return mimeService;
     }
 
+    
     /**
      * Creates MailMessage documents for every unread mail found in the INBOX.
      * The parameters needed to connect to the email INBOX are retrieved from
      * the MailFolder document passed as a parameter.
-     */
+     */    
     public static void checkMail(DocumentModel currentMailFolder,
+            CoreSession coreSession) throws Exception {        
+                
+        if (Framework.getProperty(MAILBOX_LOCK, "false").equalsIgnoreCase("true")) {
+            if (processingMailBoxes.addIfAbsent(currentMailFolder.getId())) {
+                try {
+                    doCheckMail(currentMailFolder, coreSession);
+                } finally {
+                    processingMailBoxes.remove(currentMailFolder.getId());
+                }
+            } else {
+                log.info("Mailbox " + currentMailFolder.getPathAsString() + " is already being processed");
+            }            
+        } else {
+            doCheckMail(currentMailFolder, coreSession);    
+        }
+    }
+
+    protected static void doCheckMail(DocumentModel currentMailFolder,
             CoreSession coreSession) throws Exception {
         String email = (String) currentMailFolder.getPropertyValue(EMAIL_PROPERTY_NAME);
         String password = (String) currentMailFolder.getPropertyValue(PASSWORD_PROPERTY_NAME);
@@ -143,6 +173,7 @@ public final class MailCoreHelper {
             initialExecutionContext.put(LEAVE_ON_SERVER_KEY, Boolean.TRUE); // TODO should be an attribute in 'protocol' schema
 
             Folder rootFolder = null;
+            Store store = null;
             try {
                 String protocolType = (String) currentMailFolder.getPropertyValue(PROTOCOL_TYPE_PROPERTY_NAME);
                 initialExecutionContext.put(PROTOCOL_TYPE_KEY, protocolType);
@@ -158,6 +189,9 @@ public final class MailCoreHelper {
                 long emailsLimitLongValue = emailsLimit == null ? EMAILS_LIMIT_DEFAULT
                         : emailsLimit.longValue();
 
+                String partialFetch = Framework.getProperty(PARTIAL_FETCH, "false");
+                String imapDebug = Framework.getProperty(IMAP_DEBUG, "false");
+                
                 Properties properties = new Properties();
                 properties.put("mail.store.protocol", protocolType);
 //                properties.put("mail.host", host);
@@ -167,7 +201,8 @@ public final class MailCoreHelper {
                     properties.put("mail.imap.port", port);
                     properties.put("mail.imap.starttls.enable",
                             starttlsEnable.toString());
-                    properties.put("mail.imap.debug","true");
+                    properties.put("mail.imap.debug",imapDebug);
+                    properties.put("mail.imap.partialfetch",partialFetch);
                 } else if (IMAPS.equals(protocolType)) {
                     properties.put("mail.imaps.host", host);
                     properties.put("mail.imaps.port", port);
@@ -180,6 +215,8 @@ public final class MailCoreHelper {
                             socketFactoryFallback.toString());
                     properties.put("mail.imaps.socketFactory.port",
                             socketFactoryPort);
+                    properties.put("mail.imap.partialfetch",partialFetch);
+                    properties.put("mail.imaps.partialfetch",partialFetch);
                 } else if (POP3S.equals(protocolType)) {
                     properties.put("mail.pop3s.host", host);
                     properties.put("mail.pop3s.port", port);
@@ -201,12 +238,13 @@ public final class MailCoreHelper {
 
                 Session session = Session.getInstance(properties);
 
-                Store store = session.getStore();
+                store = session.getStore();
                 store.connect(email, password);
 
                 String folderName = INBOX; // TODO should be an attribute in 'protocol' schema
                 rootFolder = store.getFolder(folderName);
 
+                // need RW access to update message flags 
                 rootFolder.open(Folder.READ_WRITE);
 
                 Message[] allMessages = rootFolder.getMessages();
@@ -215,8 +253,17 @@ public final class MailCoreHelper {
 
                 FetchProfile fetchProfile = new FetchProfile();
                 fetchProfile.add(FetchProfile.Item.FLAGS);
+                fetchProfile.add(FetchProfile.Item.ENVELOPE);
+                fetchProfile.add(FetchProfile.Item.CONTENT_INFO);
+                fetchProfile.add("Message-ID");
+                fetchProfile.add("Content-Transfer-Encoding");                
+                
                 rootFolder.fetch(allMessages, fetchProfile);
 
+                if (rootFolder instanceof IMAPFolder) {                    
+                    //((IMAPFolder)rootFolder).doCommand(FetchProfile)
+                }
+
                 List<Message> unreadMessagesList = new ArrayList<Message>();
                 for (Message message : allMessages) {
                     Flags flags = message.getFlags();
@@ -229,14 +276,31 @@ public final class MailCoreHelper {
                     }
                 }
 
+                Message[] unreadMessagesArray =unreadMessagesList.toArray(new Message[unreadMessagesList.size()]); 
+
                 // perform email import
-                visitor.visit(
-                        unreadMessagesList.toArray(new Message[unreadMessagesList.size()]),
-                        initialExecutionContext);
+                visitor.visit(unreadMessagesArray,
+                        initialExecutionContext);                
+                
+                // perform flag update globally 
+                Flags flags = new Flags();
+                flags.add(Flag.SEEN);
+                
+                boolean leaveOnServer = (Boolean) initialExecutionContext.get(LEAVE_ON_SERVER_KEY);                
+                if ((IMAP.equals(protocolType) || IMAPS.equals(protocolType)) && leaveOnServer) {
+                    flags.add(Flag.SEEN);                    
+                } else {
+                    flags.add(Flag.DELETED);
+                }
+                rootFolder.setFlags(unreadMessagesArray, flags, true);
+                
             } finally {
                 if (rootFolder != null && rootFolder.isOpen()) {
                     rootFolder.close(true);
                 }
+                if (store!=null) {
+                    store.close();
+                }
             }
         }
     }
diff --git a/nuxeo-platform-mail/nuxeo-platform-mail-core/src/main/resources/OSGI-INF/nxmail-contrib.xml b/nuxeo-platform-mail/nuxeo-platform-mail-core/src/main/resources/OSGI-INF/nxmail-contrib.xml
index bd1e732..646b6a2 100644
--- a/nuxeo-platform-mail/nuxeo-platform-mail-core/src/main/resources/OSGI-INF/nxmail-contrib.xml
+++ b/nuxeo-platform-mail/nuxeo-platform-mail-core/src/main/resources/OSGI-INF/nxmail-contrib.xml
@@ -22,9 +22,10 @@
       <action>
         org.nuxeo.ecm.platform.mail.listener.action.CreateDocumentsAction
       </action>
+      <!--
       <action>
         org.nuxeo.ecm.platform.mail.listener.action.EndAction
-      </action>
+      </action>-->
     </pipe>
 
   </extension>
diff --git a/nuxeo-platform-mail/nuxeo-platform-mail-core/src/test/java/org/nuxeo/ecm/platform/mail/service/TestMailService.java b/nuxeo-platform-mail/nuxeo-platform-mail-core/src/test/java/org/nuxeo/ecm/platform/mail/service/TestMailService.java
index 7221729..cf67a67 100644
--- a/nuxeo-platform-mail/nuxeo-platform-mail-core/src/test/java/org/nuxeo/ecm/platform/mail/service/TestMailService.java
+++ b/nuxeo-platform-mail/nuxeo-platform-mail-core/src/test/java/org/nuxeo/ecm/platform/mail/service/TestMailService.java
@@ -160,22 +160,22 @@ public class TestMailService extends NXRuntimeTestCase {
         assertNotNull(mailService);
         MessageActionPipe pipe = mailService.getPipe("nxmail");
         assertNotNull(pipe);
-        assertEquals(5, pipe.size());
+        assertEquals(4, pipe.size());
         assertEquals(pipe.get(0).getClass().getSimpleName(), "StartAction");
         assertEquals(pipe.get(1).getClass().getSimpleName(), "ExtractMessageInformationAction");
         assertEquals(pipe.get(2).getClass().getSimpleName(), "CheckMailUnicity");
         assertEquals(pipe.get(3).getClass().getSimpleName(), "CreateDocumentsAction");
-        assertEquals(pipe.get(4).getClass().getSimpleName(), "EndAction");
+        //assertEquals(pipe.get(4).getClass().getSimpleName(), "EndAction");
         // test contribution merge
         deployContrib("org.nuxeo.ecm.platform.mail.test", "OSGI-INF/mailService-test-contrib.xml");
         pipe = mailService.getPipe("nxmail");
         assertNotNull(pipe);
-        assertEquals(5, pipe.size());
+        assertEquals(4, pipe.size());
         assertEquals(pipe.get(0).getClass().getSimpleName(), "StartAction");
         assertEquals(pipe.get(1).getClass().getSimpleName(), "ExtractMessageInformationAction");
         assertEquals(pipe.get(2).getClass().getSimpleName(), "CreateDocumentsAction");
         assertEquals(pipe.get(3).getClass().getSimpleName(), "CreateDocumentsAction");
-        assertEquals(pipe.get(4).getClass().getSimpleName(), "EndAction");
+        //assertEquals(pipe.get(4).getClass().getSimpleName(), "EndAction");
         // test contribution override
         deployContrib("org.nuxeo.ecm.platform.mail.test", "OSGI-INF/mailService-override-test-contrib.xml");
         pipe = mailService.getPipe("nxmail");
