mail-notification

Fork of Jean-Yves Lefort's mail-notification, a tray icon to notify of new mail
git clone https://code.djc.id.au/git/mail-notification/
commit 7a2c97e1f48cfb8cd6e21a1d619fd589dfa19ef0
parent dec3915e79a5123b105914a25177a33a3e14f641
Author: Jean-Yves Lefort <jylefort@brutele.be>
Date:   Fri, 23 May 2008 01:50:03 +1000

mail-notification-5.4

* Core changes:
        * Messages that the user has considered as read are
          now remembered across sessions (#229167)

* IMAP changes:
        * A regression introduced in 5.1 caused some read
          messages to be reported as unread: fixed (#230425)

* Updated translations:
        * French
        * Polish (Tomasz Sałaciński)

Diffstat:
MNEWS | 14++++++++++++++
Mbuild/src/mn-imap-mailbox.c | 490++++++++++++++++++++++++++++++++++++++++---------------------------------------
Mbuild/src/mn-imap-mailbox.h | 2+-
Mbuild/src/mn-mailbox-private.h | 48+++++++++++++++++++++++-------------------------
Mbuild/src/mn-mailbox.c | 1155++++++++++++++++++++++++++++++++++++++++++-------------------------------------
Mbuild/src/mn-mailbox.h | 66++++++++++++++++++++++++++++++------------------------------------
Mbuild/src/mn-mailboxes.c | 493+++++++++++++++++++++++++++++++++++++++++--------------------------------------
Mbuild/src/mn-mailboxes.h | 16++++++++--------
Mbuild/src/mn-maildir-mailbox-backend.c | 30+++++++++++++++++++++---------
Mbuild/src/mn-message-private.h | 4++--
Mbuild/src/mn-message.c | 632++++++++++++++++++++++++++++++++++++++++++++-----------------------------------
Mbuild/src/mn-message.h | 22++++++++++++++--------
Mbuild/src/mn-shell.c | 256++++++++++++++++++++++++++++++++++++++++---------------------------------------
Mbuild/src/mn-shell.h | 18+++++++++---------
Mdata/mail-notification.schemas.in.in | 11+++++++++++
Mhelp/C/mail-notification-C.omf.in | 4++--
Mhelp/C/mail-notification.xml | 19+++++++++++++++----
Mjbsrc/jb.c | 2+-
Mpo/fr.po | 211++++++++++++++++++++++++++++++++++++++++---------------------------------------
Mpo/pl.po | 3212+++++++++++++++++++++++++++++++++++++++++++++++++------------------------------
Msrc/mn-conf.c | 51++++++++++++++++++++++++++++++++++++++++++++++++++-
Msrc/mn-conf.h | 6++++++
Msrc/mn-evolution-server.gob | 6+++---
Msrc/mn-imap-mailbox.gob | 10+++++++---
Msrc/mn-mailbox.gob | 313+++++++++++++++++++++++++++++++++++++++++++++----------------------------------
Msrc/mn-mailboxes.gob | 25+++++++++++++++----------
Msrc/mn-maildir-mailbox-backend.gob | 16++++++++++++++--
Msrc/mn-message.gob | 76++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----
Msrc/mn-shell.gob | 20+++++++++++---------
29 files changed, 4196 insertions(+), 3032 deletions(-)
diff --git a/NEWS b/NEWS
@@ -1,3 +1,17 @@
+5.4					May 22, 2008
+
+	* Core changes:
+		* Messages that the user has considered as read are
+		  now remembered across sessions (#229167)
+
+	* IMAP changes:
+		* A regression introduced in 5.1 caused some read
+		  messages to be reported as unread: fixed (#230425)
+
+	* Updated translations:
+		* French
+		* Polish (Tomasz Sałaciński)
+
 5.3					April 27, 2008
 
 	* Core changes:
diff --git a/build/src/mn-imap-mailbox.c b/build/src/mn-imap-mailbox.c
@@ -225,115 +225,115 @@ static int mn_imap_mailbox_enter_search_recent_cb (MNClientSession * session, MN
 #line 740 "src/mn-imap-mailbox.gob"
 static int mn_imap_mailbox_handle_search_recent_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv);
 #line 228 "mn-imap-mailbox.c"
-#line 796 "src/mn-imap-mailbox.gob"
+#line 800 "src/mn-imap-mailbox.gob"
 static int mn_imap_mailbox_enter_fetch_uid_cb (MNClientSession * session, MNClientSessionPrivate * priv);
 #line 231 "mn-imap-mailbox.c"
-#line 816 "src/mn-imap-mailbox.gob"
+#line 820 "src/mn-imap-mailbox.gob"
 static void mn_imap_mailbox_build_fetch_uid_set_cb (gpointer key, gpointer value, gpointer user_data);
 #line 234 "mn-imap-mailbox.c"
-#line 828 "src/mn-imap-mailbox.gob"
+#line 832 "src/mn-imap-mailbox.gob"
 static char * mn_imap_mailbox_parse_fetch_uid_response (const char * response);
 #line 237 "mn-imap-mailbox.c"
-#line 851 "src/mn-imap-mailbox.gob"
+#line 855 "src/mn-imap-mailbox.gob"
 static int mn_imap_mailbox_handle_fetch_uid_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv);
 #line 240 "mn-imap-mailbox.c"
-#line 921 "src/mn-imap-mailbox.gob"
+#line 925 "src/mn-imap-mailbox.gob"
 static int mn_imap_mailbox_enter_fetch_cb (MNClientSession * session, MNClientSessionPrivate * priv);
 #line 243 "mn-imap-mailbox.c"
-#line 945 "src/mn-imap-mailbox.gob"
+#line 949 "src/mn-imap-mailbox.gob"
 static void mn_imap_mailbox_build_fetch_set_cb (gpointer key, gpointer value, gpointer user_data);
 #line 246 "mn-imap-mailbox.c"
-#line 960 "src/mn-imap-mailbox.gob"
+#line 964 "src/mn-imap-mailbox.gob"
 static int mn_imap_mailbox_handle_fetch_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv);
 #line 249 "mn-imap-mailbox.c"
-#line 1056 "src/mn-imap-mailbox.gob"
+#line 1060 "src/mn-imap-mailbox.gob"
 static int mn_imap_mailbox_enter_idle_cb (MNClientSession * session, MNClientSessionPrivate * priv);
 #line 252 "mn-imap-mailbox.c"
-#line 1099 "src/mn-imap-mailbox.gob"
+#line 1103 "src/mn-imap-mailbox.gob"
 static int mn_imap_mailbox_handle_idle_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv);
 #line 255 "mn-imap-mailbox.c"
-#line 1197 "src/mn-imap-mailbox.gob"
+#line 1201 "src/mn-imap-mailbox.gob"
 static int mn_imap_mailbox_enter_logout_cb (MNClientSession * session, MNClientSessionPrivate * priv);
 #line 258 "mn-imap-mailbox.c"
-#line 1204 "src/mn-imap-mailbox.gob"
+#line 1208 "src/mn-imap-mailbox.gob"
 static int mn_imap_mailbox_handle_logout_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv);
 #line 261 "mn-imap-mailbox.c"
-#line 1224 "src/mn-imap-mailbox.gob"
+#line 1228 "src/mn-imap-mailbox.gob"
 static void ___21_mn_imap_mailbox_authenticated_check (MNAuthenticatedMailbox * mailbox);
 #line 264 "mn-imap-mailbox.c"
-#line 1333 "src/mn-imap-mailbox.gob"
+#line 1337 "src/mn-imap-mailbox.gob"
 static MNClientSessionResponse * mn_imap_mailbox_response_new_cb (MNClientSession * session, const char * input, MNClientSessionPrivate * priv);
 #line 267 "mn-imap-mailbox.c"
-#line 1409 "src/mn-imap-mailbox.gob"
+#line 1413 "src/mn-imap-mailbox.gob"
 static void mn_imap_mailbox_response_free_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv);
 #line 270 "mn-imap-mailbox.c"
-#line 1422 "src/mn-imap-mailbox.gob"
+#line 1426 "src/mn-imap-mailbox.gob"
 static int mn_imap_mailbox_default_handler (MNClientSessionResponse * response, MNClientSessionPrivate * priv, int error_code_when_bye);
 #line 273 "mn-imap-mailbox.c"
-#line 1433 "src/mn-imap-mailbox.gob"
+#line 1437 "src/mn-imap-mailbox.gob"
 static void mn_imap_mailbox_pre_read_cb (MNClientSession * session, MNClientSessionPrivate * priv);
 #line 276 "mn-imap-mailbox.c"
-#line 1454 "src/mn-imap-mailbox.gob"
+#line 1458 "src/mn-imap-mailbox.gob"
 static void mn_imap_mailbox_post_read_cb (MNClientSession * session, MNClientSessionPrivate * priv);
 #line 279 "mn-imap-mailbox.c"
-#line 1471 "src/mn-imap-mailbox.gob"
+#line 1475 "src/mn-imap-mailbox.gob"
 static gboolean mn_imap_mailbox_idle_inactivity_timeout_cb (gpointer data);
 #line 282 "mn-imap-mailbox.c"
-#line 1492 "src/mn-imap-mailbox.gob"
+#line 1496 "src/mn-imap-mailbox.gob"
 static int mn_imap_mailbox_session_write (MNClientSessionPrivate * priv, const char * format, ...) G_GNUC_PRINTF(2, 3);
 #line 285 "mn-imap-mailbox.c"
-#line 1512 "src/mn-imap-mailbox.gob"
+#line 1516 "src/mn-imap-mailbox.gob"
 static gboolean mn_imap_mailbox_session_handle_capability_code (MNClientSessionPrivate * priv, MNClientSessionResponse * response);
 #line 288 "mn-imap-mailbox.c"
-#line 1533 "src/mn-imap-mailbox.gob"
+#line 1537 "src/mn-imap-mailbox.gob"
 static void mn_imap_mailbox_session_parse_capabilities (MNClientSessionPrivate * priv, const char * capabilities);
 #line 291 "mn-imap-mailbox.c"
-#line 1560 "src/mn-imap-mailbox.gob"
+#line 1564 "src/mn-imap-mailbox.gob"
 static gboolean mn_imap_mailbox_session_has_capability (MNClientSessionPrivate * priv, const char * capability);
 #line 294 "mn-imap-mailbox.c"
-#line 1575 "src/mn-imap-mailbox.gob"
+#line 1579 "src/mn-imap-mailbox.gob"
 static int mn_imap_mailbox_session_after_capability (MNClientSessionPrivate * priv);
 #line 297 "mn-imap-mailbox.c"
-#line 1599 "src/mn-imap-mailbox.gob"
+#line 1603 "src/mn-imap-mailbox.gob"
 static int mn_imap_mailbox_session_authenticate (MNClientSessionPrivate * priv);
 #line 300 "mn-imap-mailbox.c"
-#line 1639 "src/mn-imap-mailbox.gob"
+#line 1643 "src/mn-imap-mailbox.gob"
 static int mn_imap_mailbox_session_authenticate_fallback (MNClientSessionPrivate * priv, gboolean tried_login);
 #line 303 "mn-imap-mailbox.c"
-#line 1685 "src/mn-imap-mailbox.gob"
+#line 1689 "src/mn-imap-mailbox.gob"
 static void mn_imap_mailbox_session_detect_imapd (MNClientSession * session, MNClientSessionResponse * greeting_response, MNClientSessionPrivate * priv);
 #line 306 "mn-imap-mailbox.c"
-#line 1709 "src/mn-imap-mailbox.gob"
+#line 1713 "src/mn-imap-mailbox.gob"
 static int mn_imap_mailbox_session_got_messages (MNClientSessionPrivate * priv);
 #line 309 "mn-imap-mailbox.c"
-#line 1747 "src/mn-imap-mailbox.gob"
+#line 1751 "src/mn-imap-mailbox.gob"
 static void mn_imap_mailbox_get_messages_list_cb (gpointer key, gpointer value, gpointer user_data);
 #line 312 "mn-imap-mailbox.c"
-#line 1757 "src/mn-imap-mailbox.gob"
+#line 1761 "src/mn-imap-mailbox.gob"
 static MessageInfo * mn_imap_mailbox_session_get_message_info (MNClientSessionPrivate * priv, int number);
 #line 315 "mn-imap-mailbox.c"
-#line 1764 "src/mn-imap-mailbox.gob"
+#line 1768 "src/mn-imap-mailbox.gob"
 static MessageInfo * mn_imap_mailbox_session_ensure_message_info (MNClientSessionPrivate * priv, int number);
 #line 318 "mn-imap-mailbox.c"
-#line 1780 "src/mn-imap-mailbox.gob"
+#line 1784 "src/mn-imap-mailbox.gob"
 static MessageInfo * mn_imap_mailbox_message_info_new (int number);
 #line 321 "mn-imap-mailbox.c"
-#line 1791 "src/mn-imap-mailbox.gob"
+#line 1795 "src/mn-imap-mailbox.gob"
 static void mn_imap_mailbox_message_info_free (MessageInfo * info);
 #line 324 "mn-imap-mailbox.c"
-#line 1808 "src/mn-imap-mailbox.gob"
+#line 1812 "src/mn-imap-mailbox.gob"
 static char * mn_imap_mailbox_quote (const char * str);
 #line 327 "mn-imap-mailbox.c"
-#line 1833 "src/mn-imap-mailbox.gob"
+#line 1837 "src/mn-imap-mailbox.gob"
 static char * mn_imap_mailbox_utf8_to_imap_utf7 (const char * str);
 #line 330 "mn-imap-mailbox.c"
-#line 1892 "src/mn-imap-mailbox.gob"
+#line 1896 "src/mn-imap-mailbox.gob"
 static void mn_imap_mailbox_imap_utf7_closeb64 (GString * out, guint32 v, guint32 i);
 #line 333 "mn-imap-mailbox.c"
-#line 1928 "src/mn-imap-mailbox.gob"
+#line 1932 "src/mn-imap-mailbox.gob"
 static void mn_imap_mailbox_lock (MNIMAPMailbox * self);
 #line 336 "mn-imap-mailbox.c"
-#line 1934 "src/mn-imap-mailbox.gob"
+#line 1938 "src/mn-imap-mailbox.gob"
 static void mn_imap_mailbox_unlock (MNIMAPMailbox * self);
 #line 339 "mn-imap-mailbox.c"
 
@@ -480,7 +480,7 @@ mn_imap_mailbox_class_init (MNIMAPMailboxClass * class G_GNUC_UNUSED)
 	mn_mailbox_class->parse_uri = ___4_mn_imap_mailbox_parse_uri;
 #line 316 "src/mn-imap-mailbox.gob"
 	mn_mailbox_class->removed = ___6_mn_imap_mailbox_removed;
-#line 1224 "src/mn-imap-mailbox.gob"
+#line 1228 "src/mn-imap-mailbox.gob"
 	mn_authenticated_mailbox_class->authenticated_check = ___21_mn_imap_mailbox_authenticated_check;
 #line 486 "mn-imap-mailbox.c"
 	g_object_class->finalize = ___finalize;
@@ -1346,9 +1346,13 @@ mn_imap_mailbox_handle_search_recent_cb (MNClientSession * session, MNClientSess
 		  int n = atoi(strings[i]);
 		  MessageInfo *info;
 
-		  info = self_session_ensure_message_info(priv, n);
-
-		  info->flags |= MN_MESSAGE_NEW;
+		  info = self_session_get_message_info(priv, n);
+		  if (info)
+		    info->flags |= MN_MESSAGE_NEW;
+		  /*
+		   * Otherwise the message is recent but not unseen,
+		   * and we must ignore it (fixes #230425).
+		   */
 		}
 
 	    g_strfreev(strings);
@@ -1359,17 +1363,17 @@ mn_imap_mailbox_handle_search_recent_cb (MNClientSession * session, MNClientSess
 
     return self_default_handler(response, priv, MN_CLIENT_SESSION_ERROR_OTHER);
   }}
-#line 1363 "mn-imap-mailbox.c"
+#line 1367 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 796 "src/mn-imap-mailbox.gob"
+#line 800 "src/mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_enter_fetch_uid_cb (MNClientSession * session, MNClientSessionPrivate * priv)
 {
-#line 1370 "mn-imap-mailbox.c"
+#line 1374 "mn-imap-mailbox.c"
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_fetch_uid_cb"
 {
-#line 798 "src/mn-imap-mailbox.gob"
+#line 802 "src/mn-imap-mailbox.gob"
 	
     GString *set;
     int result;
@@ -1387,17 +1391,17 @@ mn_imap_mailbox_enter_fetch_uid_cb (MNClientSession * session, MNClientSessionPr
 
     return result;
   }}
-#line 1391 "mn-imap-mailbox.c"
+#line 1395 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 816 "src/mn-imap-mailbox.gob"
+#line 820 "src/mn-imap-mailbox.gob"
 static void 
 mn_imap_mailbox_build_fetch_uid_set_cb (gpointer key, gpointer value, gpointer user_data)
 {
-#line 1398 "mn-imap-mailbox.c"
+#line 1402 "mn-imap-mailbox.c"
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::build_fetch_uid_set_cb"
 {
-#line 818 "src/mn-imap-mailbox.gob"
+#line 822 "src/mn-imap-mailbox.gob"
 	
     MessageInfo *info = value;
     GString *set = user_data;
@@ -1407,20 +1411,20 @@ mn_imap_mailbox_build_fetch_uid_set_cb (gpointer key, gpointer value, gpointer u
 
     g_string_append_printf(set, "%i", info->number);
   }}
-#line 1411 "mn-imap-mailbox.c"
+#line 1415 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 828 "src/mn-imap-mailbox.gob"
+#line 832 "src/mn-imap-mailbox.gob"
 static char * 
 mn_imap_mailbox_parse_fetch_uid_response (const char * response)
 {
-#line 1418 "mn-imap-mailbox.c"
+#line 1422 "mn-imap-mailbox.c"
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::parse_fetch_uid_response"
-#line 828 "src/mn-imap-mailbox.gob"
+#line 832 "src/mn-imap-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (char * )0);
-#line 1422 "mn-imap-mailbox.c"
+#line 1426 "mn-imap-mailbox.c"
 {
-#line 830 "src/mn-imap-mailbox.gob"
+#line 834 "src/mn-imap-mailbox.gob"
 	
     char *start;
     char *end;
@@ -1441,17 +1445,17 @@ mn_imap_mailbox_parse_fetch_uid_response (const char * response)
 
     return g_strndup(start, end - start);
   }}
-#line 1445 "mn-imap-mailbox.c"
+#line 1449 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 851 "src/mn-imap-mailbox.gob"
+#line 855 "src/mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_handle_fetch_uid_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
 {
-#line 1452 "mn-imap-mailbox.c"
+#line 1456 "mn-imap-mailbox.c"
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_fetch_uid_cb"
 {
-#line 855 "src/mn-imap-mailbox.gob"
+#line 859 "src/mn-imap-mailbox.gob"
 	
     if (response->continuation)
       return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
@@ -1517,17 +1521,17 @@ mn_imap_mailbox_handle_fetch_uid_cb (MNClientSession * session, MNClientSessionR
 
     return self_default_handler(response, priv, MN_CLIENT_SESSION_ERROR_OTHER);
   }}
-#line 1521 "mn-imap-mailbox.c"
+#line 1525 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 921 "src/mn-imap-mailbox.gob"
+#line 925 "src/mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_enter_fetch_cb (MNClientSession * session, MNClientSessionPrivate * priv)
 {
-#line 1528 "mn-imap-mailbox.c"
+#line 1532 "mn-imap-mailbox.c"
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_fetch_cb"
 {
-#line 923 "src/mn-imap-mailbox.gob"
+#line 927 "src/mn-imap-mailbox.gob"
 	
     GString *set;
     int result;
@@ -1549,17 +1553,17 @@ mn_imap_mailbox_enter_fetch_cb (MNClientSession * session, MNClientSessionPrivat
 
     return result;
   }}
-#line 1553 "mn-imap-mailbox.c"
+#line 1557 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 945 "src/mn-imap-mailbox.gob"
+#line 949 "src/mn-imap-mailbox.gob"
 static void 
 mn_imap_mailbox_build_fetch_set_cb (gpointer key, gpointer value, gpointer user_data)
 {
-#line 1560 "mn-imap-mailbox.c"
+#line 1564 "mn-imap-mailbox.c"
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::build_fetch_set_cb"
 {
-#line 947 "src/mn-imap-mailbox.gob"
+#line 951 "src/mn-imap-mailbox.gob"
 	
     MessageInfo *info = value;
     GString *set = user_data;
@@ -1572,17 +1576,17 @@ mn_imap_mailbox_build_fetch_set_cb (gpointer key, gpointer value, gpointer user_
 	g_string_append_printf(set, "%i", info->number);
       }
   }}
-#line 1576 "mn-imap-mailbox.c"
+#line 1580 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 960 "src/mn-imap-mailbox.gob"
+#line 964 "src/mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_handle_fetch_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
 {
-#line 1583 "mn-imap-mailbox.c"
+#line 1587 "mn-imap-mailbox.c"
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_fetch_cb"
 {
-#line 964 "src/mn-imap-mailbox.gob"
+#line 968 "src/mn-imap-mailbox.gob"
 	
     if (response->continuation)
       return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
@@ -1674,17 +1678,17 @@ mn_imap_mailbox_handle_fetch_cb (MNClientSession * session, MNClientSessionRespo
 
     return self_default_handler(response, priv, MN_CLIENT_SESSION_ERROR_OTHER);
   }}
-#line 1678 "mn-imap-mailbox.c"
+#line 1682 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1056 "src/mn-imap-mailbox.gob"
+#line 1060 "src/mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_enter_idle_cb (MNClientSession * session, MNClientSessionPrivate * priv)
 {
-#line 1685 "mn-imap-mailbox.c"
+#line 1689 "mn-imap-mailbox.c"
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_idle_cb"
 {
-#line 1059 "src/mn-imap-mailbox.gob"
+#line 1063 "src/mn-imap-mailbox.gob"
 	
     if (mn_mailbox_get_active(priv->mailbox))
       {
@@ -1724,17 +1728,17 @@ mn_imap_mailbox_enter_idle_cb (MNClientSession * session, MNClientSessionPrivate
     priv->idle_state = IDLE_STATE_PRE_IDLE;
     return self_session_write(priv, "IDLE");
   }}
-#line 1728 "mn-imap-mailbox.c"
+#line 1732 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1099 "src/mn-imap-mailbox.gob"
+#line 1103 "src/mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_handle_idle_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
 {
-#line 1735 "mn-imap-mailbox.c"
+#line 1739 "mn-imap-mailbox.c"
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_idle_cb"
 {
-#line 1103 "src/mn-imap-mailbox.gob"
+#line 1107 "src/mn-imap-mailbox.gob"
 	
     switch (priv->idle_state)
       {
@@ -1828,31 +1832,31 @@ mn_imap_mailbox_handle_idle_cb (MNClientSession * session, MNClientSessionRespon
 
     return self_default_handler(response, priv, MN_CLIENT_SESSION_ERROR_OTHER);
   }}
-#line 1832 "mn-imap-mailbox.c"
+#line 1836 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1197 "src/mn-imap-mailbox.gob"
+#line 1201 "src/mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_enter_logout_cb (MNClientSession * session, MNClientSessionPrivate * priv)
 {
-#line 1839 "mn-imap-mailbox.c"
+#line 1843 "mn-imap-mailbox.c"
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_logout_cb"
 {
-#line 1200 "src/mn-imap-mailbox.gob"
+#line 1204 "src/mn-imap-mailbox.gob"
 	
     return self_session_write(priv, "LOGOUT");
   }}
-#line 1846 "mn-imap-mailbox.c"
+#line 1850 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1204 "src/mn-imap-mailbox.gob"
+#line 1208 "src/mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_handle_logout_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
 {
-#line 1853 "mn-imap-mailbox.c"
+#line 1857 "mn-imap-mailbox.c"
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_logout_cb"
 {
-#line 1208 "src/mn-imap-mailbox.gob"
+#line 1212 "src/mn-imap-mailbox.gob"
 	
     if (response->continuation)
       return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
@@ -1868,20 +1872,20 @@ mn_imap_mailbox_handle_logout_cb (MNClientSession * session, MNClientSessionResp
     else
       return MN_CLIENT_SESSION_RESULT_CONTINUE;
   }}
-#line 1872 "mn-imap-mailbox.c"
+#line 1876 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1224 "src/mn-imap-mailbox.gob"
+#line 1228 "src/mn-imap-mailbox.gob"
 static void 
 ___21_mn_imap_mailbox_authenticated_check (MNAuthenticatedMailbox * mailbox G_GNUC_UNUSED)
-#line 1878 "mn-imap-mailbox.c"
+#line 1882 "mn-imap-mailbox.c"
 #define PARENT_HANDLER(___mailbox) \
 	{ if(MN_AUTHENTICATED_MAILBOX_CLASS(parent_class)->authenticated_check) \
 		(* MN_AUTHENTICATED_MAILBOX_CLASS(parent_class)->authenticated_check)(___mailbox); }
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::authenticated_check"
 {
-#line 1226 "src/mn-imap-mailbox.gob"
+#line 1230 "src/mn-imap-mailbox.gob"
 	
     Self *self = SELF(mailbox);
     static const MNClientSessionState states[] = {
@@ -1988,18 +1992,18 @@ ___21_mn_imap_mailbox_authenticated_check (MNAuthenticatedMailbox * mailbox G_GN
     gdk_flush();
     GDK_THREADS_LEAVE();
   }}
-#line 1992 "mn-imap-mailbox.c"
+#line 1996 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 1333 "src/mn-imap-mailbox.gob"
+#line 1337 "src/mn-imap-mailbox.gob"
 static MNClientSessionResponse * 
 mn_imap_mailbox_response_new_cb (MNClientSession * session, const char * input, MNClientSessionPrivate * priv)
 {
-#line 2000 "mn-imap-mailbox.c"
+#line 2004 "mn-imap-mailbox.c"
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::response_new_cb"
 {
-#line 1337 "src/mn-imap-mailbox.gob"
+#line 1341 "src/mn-imap-mailbox.gob"
 	
     MNClientSessionResponse *response = NULL;
 
@@ -2071,17 +2075,17 @@ mn_imap_mailbox_response_new_cb (MNClientSession * session, const char * input, 
 
     return response;
   }}
-#line 2075 "mn-imap-mailbox.c"
+#line 2079 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1409 "src/mn-imap-mailbox.gob"
+#line 1413 "src/mn-imap-mailbox.gob"
 static void 
 mn_imap_mailbox_response_free_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
 {
-#line 2082 "mn-imap-mailbox.c"
+#line 2086 "mn-imap-mailbox.c"
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::response_free_cb"
 {
-#line 1413 "src/mn-imap-mailbox.gob"
+#line 1417 "src/mn-imap-mailbox.gob"
 	
     g_free(response->continuation);
     g_free(response->tag);
@@ -2090,39 +2094,39 @@ mn_imap_mailbox_response_free_cb (MNClientSession * session, MNClientSessionResp
     g_free(response->arguments);
     g_free(response);
   }}
-#line 2094 "mn-imap-mailbox.c"
+#line 2098 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1422 "src/mn-imap-mailbox.gob"
+#line 1426 "src/mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_default_handler (MNClientSessionResponse * response, MNClientSessionPrivate * priv, int error_code_when_bye)
 {
-#line 2101 "mn-imap-mailbox.c"
+#line 2105 "mn-imap-mailbox.c"
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::default_handler"
-#line 1422 "src/mn-imap-mailbox.gob"
+#line 1426 "src/mn-imap-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 1422 "src/mn-imap-mailbox.gob"
+#line 1426 "src/mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 2107 "mn-imap-mailbox.c"
+#line 2111 "mn-imap-mailbox.c"
 {
-#line 1426 "src/mn-imap-mailbox.gob"
+#line 1430 "src/mn-imap-mailbox.gob"
 	
     if (! response->tag && IS_BYE(response))
       return mn_client_session_set_error_from_response(priv->session, error_code_when_bye, response->arguments);
     else
       return MN_CLIENT_SESSION_RESULT_CONTINUE;
   }}
-#line 2116 "mn-imap-mailbox.c"
+#line 2120 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1433 "src/mn-imap-mailbox.gob"
+#line 1437 "src/mn-imap-mailbox.gob"
 static void 
 mn_imap_mailbox_pre_read_cb (MNClientSession * session, MNClientSessionPrivate * priv)
 {
-#line 2123 "mn-imap-mailbox.c"
+#line 2127 "mn-imap-mailbox.c"
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::pre_read_cb"
 {
-#line 1436 "src/mn-imap-mailbox.gob"
+#line 1440 "src/mn-imap-mailbox.gob"
 	
     if (priv->idle_state == IDLE_STATE_IDLE)
       {
@@ -2140,17 +2144,17 @@ mn_imap_mailbox_pre_read_cb (MNClientSession * session, MNClientSessionPrivate *
 	self_unlock(self);
       }
   }}
-#line 2144 "mn-imap-mailbox.c"
+#line 2148 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1454 "src/mn-imap-mailbox.gob"
+#line 1458 "src/mn-imap-mailbox.gob"
 static void 
 mn_imap_mailbox_post_read_cb (MNClientSession * session, MNClientSessionPrivate * priv)
 {
-#line 2151 "mn-imap-mailbox.c"
+#line 2155 "mn-imap-mailbox.c"
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::post_read_cb"
 {
-#line 1457 "src/mn-imap-mailbox.gob"
+#line 1461 "src/mn-imap-mailbox.gob"
 	
     Self *self = priv->self;
 
@@ -2164,17 +2168,17 @@ mn_imap_mailbox_post_read_cb (MNClientSession * session, MNClientSessionPrivate 
 
     self_unlock(self);
   }}
-#line 2168 "mn-imap-mailbox.c"
+#line 2172 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1471 "src/mn-imap-mailbox.gob"
+#line 1475 "src/mn-imap-mailbox.gob"
 static gboolean 
 mn_imap_mailbox_idle_inactivity_timeout_cb (gpointer data)
 {
-#line 2175 "mn-imap-mailbox.c"
+#line 2179 "mn-imap-mailbox.c"
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::idle_inactivity_timeout_cb"
 {
-#line 1473 "src/mn-imap-mailbox.gob"
+#line 1477 "src/mn-imap-mailbox.gob"
 	
     Self *self = data;
 
@@ -2192,22 +2196,22 @@ mn_imap_mailbox_idle_inactivity_timeout_cb (gpointer data)
 
     return FALSE;
   }}
-#line 2196 "mn-imap-mailbox.c"
+#line 2200 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1492 "src/mn-imap-mailbox.gob"
+#line 1496 "src/mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_session_write (MNClientSessionPrivate * priv, const char * format, ...)
 {
-#line 2203 "mn-imap-mailbox.c"
+#line 2207 "mn-imap-mailbox.c"
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_write"
-#line 1492 "src/mn-imap-mailbox.gob"
+#line 1496 "src/mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 1492 "src/mn-imap-mailbox.gob"
+#line 1496 "src/mn-imap-mailbox.gob"
 	g_return_val_if_fail (format != NULL, (int )0);
-#line 2209 "mn-imap-mailbox.c"
+#line 2213 "mn-imap-mailbox.c"
 {
-#line 1496 "src/mn-imap-mailbox.gob"
+#line 1500 "src/mn-imap-mailbox.gob"
 	
     char *command;
     int result;
@@ -2223,22 +2227,22 @@ mn_imap_mailbox_session_write (MNClientSessionPrivate * priv, const char * forma
 
     return result;
   }}
-#line 2227 "mn-imap-mailbox.c"
+#line 2231 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1512 "src/mn-imap-mailbox.gob"
+#line 1516 "src/mn-imap-mailbox.gob"
 static gboolean 
 mn_imap_mailbox_session_handle_capability_code (MNClientSessionPrivate * priv, MNClientSessionResponse * response)
 {
-#line 2234 "mn-imap-mailbox.c"
+#line 2238 "mn-imap-mailbox.c"
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_handle_capability_code"
-#line 1512 "src/mn-imap-mailbox.gob"
+#line 1516 "src/mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (gboolean )0);
-#line 1512 "src/mn-imap-mailbox.gob"
+#line 1516 "src/mn-imap-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (gboolean )0);
-#line 2240 "mn-imap-mailbox.c"
+#line 2244 "mn-imap-mailbox.c"
 {
-#line 1515 "src/mn-imap-mailbox.gob"
+#line 1519 "src/mn-imap-mailbox.gob"
 	
     if (response->code)
       {
@@ -2256,20 +2260,20 @@ mn_imap_mailbox_session_handle_capability_code (MNClientSessionPrivate * priv, M
 
     return FALSE;
   }}
-#line 2260 "mn-imap-mailbox.c"
+#line 2264 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1533 "src/mn-imap-mailbox.gob"
+#line 1537 "src/mn-imap-mailbox.gob"
 static void 
 mn_imap_mailbox_session_parse_capabilities (MNClientSessionPrivate * priv, const char * capabilities)
 {
-#line 2267 "mn-imap-mailbox.c"
+#line 2271 "mn-imap-mailbox.c"
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_parse_capabilities"
-#line 1533 "src/mn-imap-mailbox.gob"
+#line 1537 "src/mn-imap-mailbox.gob"
 	g_return_if_fail (priv != NULL);
-#line 2271 "mn-imap-mailbox.c"
+#line 2275 "mn-imap-mailbox.c"
 {
-#line 1536 "src/mn-imap-mailbox.gob"
+#line 1540 "src/mn-imap-mailbox.gob"
 	
     g_strfreev(priv->capabilities);
     priv->capabilities = NULL;
@@ -2293,22 +2297,22 @@ mn_imap_mailbox_session_parse_capabilities (MNClientSessionPrivate * priv, const
     else
       priv->capabilities = g_new0(char *, 1);
   }}
-#line 2297 "mn-imap-mailbox.c"
+#line 2301 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1560 "src/mn-imap-mailbox.gob"
+#line 1564 "src/mn-imap-mailbox.gob"
 static gboolean 
 mn_imap_mailbox_session_has_capability (MNClientSessionPrivate * priv, const char * capability)
 {
-#line 2304 "mn-imap-mailbox.c"
+#line 2308 "mn-imap-mailbox.c"
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_has_capability"
-#line 1560 "src/mn-imap-mailbox.gob"
+#line 1564 "src/mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (gboolean )0);
-#line 1560 "src/mn-imap-mailbox.gob"
+#line 1564 "src/mn-imap-mailbox.gob"
 	g_return_val_if_fail (capability != NULL, (gboolean )0);
-#line 2310 "mn-imap-mailbox.c"
+#line 2314 "mn-imap-mailbox.c"
 {
-#line 1563 "src/mn-imap-mailbox.gob"
+#line 1567 "src/mn-imap-mailbox.gob"
 	
     int i;
 
@@ -2320,20 +2324,20 @@ mn_imap_mailbox_session_has_capability (MNClientSessionPrivate * priv, const cha
 
     return FALSE;
   }}
-#line 2324 "mn-imap-mailbox.c"
+#line 2328 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1575 "src/mn-imap-mailbox.gob"
+#line 1579 "src/mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_session_after_capability (MNClientSessionPrivate * priv)
 {
-#line 2331 "mn-imap-mailbox.c"
+#line 2335 "mn-imap-mailbox.c"
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_after_capability"
-#line 1575 "src/mn-imap-mailbox.gob"
+#line 1579 "src/mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 2335 "mn-imap-mailbox.c"
+#line 2339 "mn-imap-mailbox.c"
 {
-#line 1577 "src/mn-imap-mailbox.gob"
+#line 1581 "src/mn-imap-mailbox.gob"
 	
     if (priv->authenticated)
       return STATE_EXAMINE;
@@ -2355,20 +2359,20 @@ mn_imap_mailbox_session_after_capability (MNClientSessionPrivate * priv)
 	return self_session_authenticate(priv);
       }
   }}
-#line 2359 "mn-imap-mailbox.c"
+#line 2363 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1599 "src/mn-imap-mailbox.gob"
+#line 1603 "src/mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_session_authenticate (MNClientSessionPrivate * priv)
 {
-#line 2366 "mn-imap-mailbox.c"
+#line 2370 "mn-imap-mailbox.c"
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_authenticate"
-#line 1599 "src/mn-imap-mailbox.gob"
+#line 1603 "src/mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 2370 "mn-imap-mailbox.c"
+#line 2374 "mn-imap-mailbox.c"
 {
-#line 1601 "src/mn-imap-mailbox.gob"
+#line 1605 "src/mn-imap-mailbox.gob"
 	
 #if WITH_SASL
     g_slist_free(priv->sasl_remaining_mechanisms);
@@ -2406,20 +2410,20 @@ mn_imap_mailbox_session_authenticate (MNClientSessionPrivate * priv)
 	return STATE_LOGIN;
       }
   }}
-#line 2410 "mn-imap-mailbox.c"
+#line 2414 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1639 "src/mn-imap-mailbox.gob"
+#line 1643 "src/mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_session_authenticate_fallback (MNClientSessionPrivate * priv, gboolean tried_login)
 {
-#line 2417 "mn-imap-mailbox.c"
+#line 2421 "mn-imap-mailbox.c"
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_authenticate_fallback"
-#line 1639 "src/mn-imap-mailbox.gob"
+#line 1643 "src/mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 2421 "mn-imap-mailbox.c"
+#line 2425 "mn-imap-mailbox.c"
 {
-#line 1642 "src/mn-imap-mailbox.gob"
+#line 1646 "src/mn-imap-mailbox.gob"
 	
     if (! priv->pi_mailbox->authmech)
       {
@@ -2462,24 +2466,24 @@ mn_imap_mailbox_session_authenticate_fallback (MNClientSessionPrivate * priv, gb
 	return STATE_LOGOUT;
       }
   }}
-#line 2466 "mn-imap-mailbox.c"
+#line 2470 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1685 "src/mn-imap-mailbox.gob"
+#line 1689 "src/mn-imap-mailbox.gob"
 static void 
 mn_imap_mailbox_session_detect_imapd (MNClientSession * session, MNClientSessionResponse * greeting_response, MNClientSessionPrivate * priv)
 {
-#line 2473 "mn-imap-mailbox.c"
+#line 2477 "mn-imap-mailbox.c"
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_detect_imapd"
-#line 1685 "src/mn-imap-mailbox.gob"
+#line 1689 "src/mn-imap-mailbox.gob"
 	g_return_if_fail (session != NULL);
-#line 1685 "src/mn-imap-mailbox.gob"
+#line 1689 "src/mn-imap-mailbox.gob"
 	g_return_if_fail (greeting_response != NULL);
-#line 1685 "src/mn-imap-mailbox.gob"
+#line 1689 "src/mn-imap-mailbox.gob"
 	g_return_if_fail (priv != NULL);
-#line 2481 "mn-imap-mailbox.c"
+#line 2485 "mn-imap-mailbox.c"
 {
-#line 1689 "src/mn-imap-mailbox.gob"
+#line 1693 "src/mn-imap-mailbox.gob"
 	
     if (greeting_response->arguments)
       {
@@ -2499,20 +2503,20 @@ mn_imap_mailbox_session_detect_imapd (MNClientSession * session, MNClientSession
 	  }
       }
   }}
-#line 2503 "mn-imap-mailbox.c"
+#line 2507 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1709 "src/mn-imap-mailbox.gob"
+#line 1713 "src/mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_session_got_messages (MNClientSessionPrivate * priv)
 {
-#line 2510 "mn-imap-mailbox.c"
+#line 2514 "mn-imap-mailbox.c"
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_got_messages"
-#line 1709 "src/mn-imap-mailbox.gob"
+#line 1713 "src/mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 2514 "mn-imap-mailbox.c"
+#line 2518 "mn-imap-mailbox.c"
 {
-#line 1711 "src/mn-imap-mailbox.gob"
+#line 1715 "src/mn-imap-mailbox.gob"
 	
     GSList *messages = NULL;
 
@@ -2548,17 +2552,17 @@ mn_imap_mailbox_session_got_messages (MNClientSessionPrivate * priv)
 
     return STATE_IDLE;
   }}
-#line 2552 "mn-imap-mailbox.c"
+#line 2556 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1747 "src/mn-imap-mailbox.gob"
+#line 1751 "src/mn-imap-mailbox.gob"
 static void 
 mn_imap_mailbox_get_messages_list_cb (gpointer key, gpointer value, gpointer user_data)
 {
-#line 2559 "mn-imap-mailbox.c"
+#line 2563 "mn-imap-mailbox.c"
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::get_messages_list_cb"
 {
-#line 1749 "src/mn-imap-mailbox.gob"
+#line 1753 "src/mn-imap-mailbox.gob"
 	
     MessageInfo *info = value;
     GSList **list = user_data;
@@ -2566,37 +2570,37 @@ mn_imap_mailbox_get_messages_list_cb (gpointer key, gpointer value, gpointer use
     if (info->message)
       *list = g_slist_prepend(*list, info->message);
   }}
-#line 2570 "mn-imap-mailbox.c"
+#line 2574 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1757 "src/mn-imap-mailbox.gob"
+#line 1761 "src/mn-imap-mailbox.gob"
 static MessageInfo * 
 mn_imap_mailbox_session_get_message_info (MNClientSessionPrivate * priv, int number)
 {
-#line 2577 "mn-imap-mailbox.c"
+#line 2581 "mn-imap-mailbox.c"
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_get_message_info"
-#line 1757 "src/mn-imap-mailbox.gob"
+#line 1761 "src/mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (MessageInfo * )0);
-#line 2581 "mn-imap-mailbox.c"
+#line 2585 "mn-imap-mailbox.c"
 {
-#line 1760 "src/mn-imap-mailbox.gob"
+#line 1764 "src/mn-imap-mailbox.gob"
 	
     return g_hash_table_lookup(priv->messages, GINT_TO_POINTER(number));
   }}
-#line 2587 "mn-imap-mailbox.c"
+#line 2591 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1764 "src/mn-imap-mailbox.gob"
+#line 1768 "src/mn-imap-mailbox.gob"
 static MessageInfo * 
 mn_imap_mailbox_session_ensure_message_info (MNClientSessionPrivate * priv, int number)
 {
-#line 2594 "mn-imap-mailbox.c"
+#line 2598 "mn-imap-mailbox.c"
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_ensure_message_info"
-#line 1764 "src/mn-imap-mailbox.gob"
+#line 1768 "src/mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (MessageInfo * )0);
-#line 2598 "mn-imap-mailbox.c"
+#line 2602 "mn-imap-mailbox.c"
 {
-#line 1767 "src/mn-imap-mailbox.gob"
+#line 1771 "src/mn-imap-mailbox.gob"
 	
     MessageInfo *info;
 
@@ -2609,17 +2613,17 @@ mn_imap_mailbox_session_ensure_message_info (MNClientSessionPrivate * priv, int 
 
     return info;
   }}
-#line 2613 "mn-imap-mailbox.c"
+#line 2617 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1780 "src/mn-imap-mailbox.gob"
+#line 1784 "src/mn-imap-mailbox.gob"
 static MessageInfo * 
 mn_imap_mailbox_message_info_new (int number)
 {
-#line 2620 "mn-imap-mailbox.c"
+#line 2624 "mn-imap-mailbox.c"
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::message_info_new"
 {
-#line 1782 "src/mn-imap-mailbox.gob"
+#line 1786 "src/mn-imap-mailbox.gob"
 	
     MessageInfo *info;
 
@@ -2628,27 +2632,27 @@ mn_imap_mailbox_message_info_new (int number)
 
     return info;
   }}
-#line 2632 "mn-imap-mailbox.c"
+#line 2636 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1791 "src/mn-imap-mailbox.gob"
+#line 1795 "src/mn-imap-mailbox.gob"
 static void 
 mn_imap_mailbox_message_info_free (MessageInfo * info)
 {
-#line 2639 "mn-imap-mailbox.c"
+#line 2643 "mn-imap-mailbox.c"
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::message_info_free"
-#line 1791 "src/mn-imap-mailbox.gob"
+#line 1795 "src/mn-imap-mailbox.gob"
 	g_return_if_fail (info != NULL);
-#line 2643 "mn-imap-mailbox.c"
+#line 2647 "mn-imap-mailbox.c"
 {
-#line 1793 "src/mn-imap-mailbox.gob"
+#line 1797 "src/mn-imap-mailbox.gob"
 	
     if (info->message)
       g_object_unref(info->message);
     g_free(info->mid);
     g_free(info);
   }}
-#line 2652 "mn-imap-mailbox.c"
+#line 2656 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
 /**
@@ -2659,17 +2663,17 @@ mn_imap_mailbox_message_info_free (MessageInfo * info)
  *
  * Return value: the quoted string.
  **/
-#line 1808 "src/mn-imap-mailbox.gob"
+#line 1812 "src/mn-imap-mailbox.gob"
 static char * 
 mn_imap_mailbox_quote (const char * str)
 {
-#line 2667 "mn-imap-mailbox.c"
+#line 2671 "mn-imap-mailbox.c"
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::quote"
-#line 1808 "src/mn-imap-mailbox.gob"
+#line 1812 "src/mn-imap-mailbox.gob"
 	g_return_val_if_fail (str != NULL, (char * )0);
-#line 2671 "mn-imap-mailbox.c"
+#line 2675 "mn-imap-mailbox.c"
 {
-#line 1810 "src/mn-imap-mailbox.gob"
+#line 1814 "src/mn-imap-mailbox.gob"
 	
     GString *quoted;
     int i;
@@ -2684,7 +2688,7 @@ mn_imap_mailbox_quote (const char * str)
 
     return g_string_free(quoted, FALSE);
   }}
-#line 2688 "mn-imap-mailbox.c"
+#line 2692 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
 /**
@@ -2695,17 +2699,17 @@ mn_imap_mailbox_quote (const char * str)
  *
  * Return value: the string converted to modified UTF-7.
  **/
-#line 1833 "src/mn-imap-mailbox.gob"
+#line 1837 "src/mn-imap-mailbox.gob"
 static char * 
 mn_imap_mailbox_utf8_to_imap_utf7 (const char * str)
 {
-#line 2703 "mn-imap-mailbox.c"
+#line 2707 "mn-imap-mailbox.c"
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::utf8_to_imap_utf7"
-#line 1833 "src/mn-imap-mailbox.gob"
+#line 1837 "src/mn-imap-mailbox.gob"
 	g_return_val_if_fail (str != NULL, (char * )0);
-#line 2707 "mn-imap-mailbox.c"
+#line 2711 "mn-imap-mailbox.c"
 {
-#line 1835 "src/mn-imap-mailbox.gob"
+#line 1839 "src/mn-imap-mailbox.gob"
 	
     gunichar c;
     guint32 x, v = 0;
@@ -2762,20 +2766,20 @@ mn_imap_mailbox_utf8_to_imap_utf7 (const char * str)
 
     return g_string_free(out, FALSE);
   }}
-#line 2766 "mn-imap-mailbox.c"
+#line 2770 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1892 "src/mn-imap-mailbox.gob"
+#line 1896 "src/mn-imap-mailbox.gob"
 static void 
 mn_imap_mailbox_imap_utf7_closeb64 (GString * out, guint32 v, guint32 i)
 {
-#line 2773 "mn-imap-mailbox.c"
+#line 2777 "mn-imap-mailbox.c"
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::imap_utf7_closeb64"
-#line 1892 "src/mn-imap-mailbox.gob"
+#line 1896 "src/mn-imap-mailbox.gob"
 	g_return_if_fail (out != NULL);
-#line 2777 "mn-imap-mailbox.c"
+#line 2781 "mn-imap-mailbox.c"
 {
-#line 1894 "src/mn-imap-mailbox.gob"
+#line 1898 "src/mn-imap-mailbox.gob"
 	
     /*
      * Taken from the Ximian Evolution sources (camel-utf8.c) and
@@ -2792,22 +2796,22 @@ mn_imap_mailbox_imap_utf7_closeb64 (GString * out, guint32 v, guint32 i)
 
     g_string_append_c(out, '-');
   }}
-#line 2796 "mn-imap-mailbox.c"
+#line 2800 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1911 "src/mn-imap-mailbox.gob"
+#line 1915 "src/mn-imap-mailbox.gob"
 char * 
 mn_imap_mailbox_build_name (const char * username, const char * server, const char * mailbox)
 {
-#line 2803 "mn-imap-mailbox.c"
+#line 2807 "mn-imap-mailbox.c"
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::build_name"
-#line 1911 "src/mn-imap-mailbox.gob"
+#line 1915 "src/mn-imap-mailbox.gob"
 	g_return_val_if_fail (username != NULL, (char * )0);
-#line 1911 "src/mn-imap-mailbox.gob"
+#line 1915 "src/mn-imap-mailbox.gob"
 	g_return_val_if_fail (server != NULL, (char * )0);
-#line 2809 "mn-imap-mailbox.c"
+#line 2813 "mn-imap-mailbox.c"
 {
-#line 1915 "src/mn-imap-mailbox.gob"
+#line 1919 "src/mn-imap-mailbox.gob"
 	
     GString *name;
 
@@ -2820,43 +2824,43 @@ mn_imap_mailbox_build_name (const char * username, const char * server, const ch
 
     return g_string_free(name, FALSE);
   }}
-#line 2824 "mn-imap-mailbox.c"
+#line 2828 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1928 "src/mn-imap-mailbox.gob"
+#line 1932 "src/mn-imap-mailbox.gob"
 static void 
 mn_imap_mailbox_lock (MNIMAPMailbox * self)
 {
-#line 2831 "mn-imap-mailbox.c"
+#line 2835 "mn-imap-mailbox.c"
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::lock"
-#line 1928 "src/mn-imap-mailbox.gob"
+#line 1932 "src/mn-imap-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 1928 "src/mn-imap-mailbox.gob"
+#line 1932 "src/mn-imap-mailbox.gob"
 	g_return_if_fail (MN_IS_IMAP_MAILBOX (self));
-#line 2837 "mn-imap-mailbox.c"
+#line 2841 "mn-imap-mailbox.c"
 {
-#line 1930 "src/mn-imap-mailbox.gob"
+#line 1934 "src/mn-imap-mailbox.gob"
 	
     g_mutex_lock(selfp->mutex);
   }}
-#line 2843 "mn-imap-mailbox.c"
+#line 2847 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1934 "src/mn-imap-mailbox.gob"
+#line 1938 "src/mn-imap-mailbox.gob"
 static void 
 mn_imap_mailbox_unlock (MNIMAPMailbox * self)
 {
-#line 2850 "mn-imap-mailbox.c"
+#line 2854 "mn-imap-mailbox.c"
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::unlock"
-#line 1934 "src/mn-imap-mailbox.gob"
+#line 1938 "src/mn-imap-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 1934 "src/mn-imap-mailbox.gob"
+#line 1938 "src/mn-imap-mailbox.gob"
 	g_return_if_fail (MN_IS_IMAP_MAILBOX (self));
-#line 2856 "mn-imap-mailbox.c"
+#line 2860 "mn-imap-mailbox.c"
 {
-#line 1936 "src/mn-imap-mailbox.gob"
+#line 1940 "src/mn-imap-mailbox.gob"
 	
     g_mutex_unlock(selfp->mutex);
   }}
-#line 2862 "mn-imap-mailbox.c"
+#line 2866 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
diff --git a/build/src/mn-imap-mailbox.h b/build/src/mn-imap-mailbox.h
@@ -72,7 +72,7 @@ struct _MNIMAPMailboxClass {
  * Public methods
  */
 GType	mn_imap_mailbox_get_type	(void) G_GNUC_CONST;
-#line 1911 "src/mn-imap-mailbox.gob"
+#line 1915 "src/mn-imap-mailbox.gob"
 char * 	mn_imap_mailbox_build_name	(const char * username,
 					const char * server,
 					const char * mailbox);
diff --git a/build/src/mn-mailbox-private.h b/build/src/mn-mailbox-private.h
@@ -34,42 +34,40 @@ typedef enum
 
 #line 36 "mn-mailbox-private.h"
 struct _MNMailboxPrivate {
-#line 122 "src/mn-mailbox.gob"
+#line 133 "src/mn-mailbox.gob"
 	gboolean _active;
-#line 190 "src/mn-mailbox.gob"
+#line 215 "src/mn-mailbox.gob"
 	unsigned int check_timeout_id;
-#line 199 "src/mn-mailbox.gob"
+#line 224 "src/mn-mailbox.gob"
 	gboolean poll;
-#line 246 "src/mn-mailbox.gob"
-	GSList * all_messages;
-#line 255 "src/mn-mailbox.gob"
-	GHashTable * all_messages_mid_hash_table;
-#line 262 "src/mn-mailbox.gob"
-	GHashTable * all_messages_considered_as_read;
-#line 268 "src/mn-mailbox.gob"
-	GHashTable * messages_hash_table;
-#line 1024 "src/mn-mailbox.gob"
+#line 271 "src/mn-mailbox.gob"
+	gboolean all_messages_set;
+#line 274 "src/mn-mailbox.gob"
+	GHashTable * all_messages;
+#line 277 "src/mn-mailbox.gob"
+	GHashTable * all_messages_by_mid;
+#line 1126 "src/mn-mailbox.gob"
 	gboolean checking_enabled;
-#line 54 "mn-mailbox-private.h"
+#line 52 "mn-mailbox-private.h"
 };
-#line 279 "src/mn-mailbox.gob"
+#line 291 "src/mn-mailbox.gob"
 void 	mn_mailbox_set_messages	(MNMailbox * self, GSList * messages);
-#line 58 "mn-mailbox-private.h"
-#line 422 "src/mn-mailbox.gob"
+#line 56 "mn-mailbox-private.h"
+#line 510 "src/mn-mailbox.gob"
 void 	mn_mailbox_set_error	(MNMailbox * self, const char * format, ...) G_GNUC_PRINTF(2, 3);
-#line 61 "mn-mailbox-private.h"
-#line 1026 "src/mn-mailbox.gob"
+#line 59 "mn-mailbox-private.h"
+#line 1128 "src/mn-mailbox.gob"
 void 	mn_mailbox_enable_checking	(MNMailbox * self);
-#line 64 "mn-mailbox-private.h"
-#line 1037 "src/mn-mailbox.gob"
+#line 62 "mn-mailbox-private.h"
+#line 1139 "src/mn-mailbox.gob"
 void 	mn_mailbox_notice	(MNMailbox * self, const char * format, ...) G_GNUC_PRINTF(2, 3);
-#line 67 "mn-mailbox-private.h"
-#line 1055 "src/mn-mailbox.gob"
+#line 65 "mn-mailbox-private.h"
+#line 1157 "src/mn-mailbox.gob"
 void 	mn_mailbox_warning	(MNMailbox * self, const char * format, ...) G_GNUC_PRINTF(2, 3);
-#line 70 "mn-mailbox-private.h"
-#line 1072 "src/mn-mailbox.gob"
+#line 68 "mn-mailbox-private.h"
+#line 1174 "src/mn-mailbox.gob"
 MNMessage * 	mn_mailbox_get_message_from_mid	(MNMailbox * self, const char * mid);
-#line 73 "mn-mailbox-private.h"
+#line 71 "mn-mailbox-private.h"
 
 #ifdef __cplusplus
 }
diff --git a/build/src/mn-mailbox.c b/build/src/mn-mailbox.c
@@ -52,6 +52,7 @@
 #include "mn-message.h"
 #include "mn-conf.h"
 #include "mn-locked-callback.h"
+#include "mn-shell.h"
 
 struct _MNMailboxConfiguration
 {
@@ -64,11 +65,21 @@ GType mn_mailbox_types[MN_MAILBOX_MAX_TYPES + 1];
 
 typedef struct
 {
+  MNMailbox	*self;
+  GHashTable	*messages;
+  GHashTable	*messages_considered_as_read;
+  gboolean	display_seen_mail;
+} FilterMessagesInfo;
+
+typedef struct
+{
   GHashTable	*other;
   gboolean	changed;
 } CompareMessagesInfo;
 
-#line 72 "mn-mailbox.c"
+static unsigned int cleanup_messages_considered_as_read_idle_id = 0;
+
+#line 83 "mn-mailbox.c"
 /* self casting macros */
 #define SELF(x) MN_MAILBOX(x)
 #define SELF_CONST(x) MN_MAILBOX_CONST(x)
@@ -87,56 +98,68 @@ static void ___object_set_property (GObject *object, guint property_id, const GV
 static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec);
 #line 0 "src/mn-mailbox.gob"
 static void mn_mailbox_class_init (MNMailboxClass * c);
-#line 91 "mn-mailbox.c"
-#line 130 "src/mn-mailbox.gob"
+#line 102 "mn-mailbox.c"
+#line 141 "src/mn-mailbox.gob"
 static void mn_mailbox_set_active (MNMailbox * self, gboolean value);
-#line 94 "mn-mailbox.c"
+#line 105 "mn-mailbox.c"
 static void ___real_mn_mailbox_added (MNMailbox * self);
 static void ___real_mn_mailbox_removed (MNMailbox * self);
-#line 234 "src/mn-mailbox.gob"
+#line 259 "src/mn-mailbox.gob"
 static void mn_mailbox_update_check_timeout (MNMailbox * self);
-#line 99 "mn-mailbox.c"
-#line 297 "src/mn-mailbox.gob"
+#line 110 "mn-mailbox.c"
+#line 330 "src/mn-mailbox.gob"
 static void mn_mailbox_filter_messages (MNMailbox * self);
-#line 102 "mn-mailbox.c"
-#line 363 "src/mn-mailbox.gob"
-static gboolean mn_mailbox_remove_stale_messages_cb (gpointer key, MNMessage * message, GHashTable * messages);
-#line 105 "mn-mailbox.c"
-#line 381 "src/mn-mailbox.gob"
+#line 113 "mn-mailbox.c"
+#line 366 "src/mn-mailbox.gob"
+static void mn_mailbox_filter_messages_cb (const char * id, MNMessage * message, FilterMessagesInfo * info);
+#line 116 "mn-mailbox.c"
+#line 395 "src/mn-mailbox.gob"
 static gboolean mn_mailbox_compare_messages (GHashTable * messages1, GHashTable * messages2);
-#line 108 "mn-mailbox.c"
-#line 393 "src/mn-mailbox.gob"
+#line 119 "mn-mailbox.c"
+#line 407 "src/mn-mailbox.gob"
 static void mn_mailbox_compare_messages_cb (const char * id, MNMessage * message, CompareMessagesInfo * info);
-#line 111 "mn-mailbox.c"
-#line 415 "src/mn-mailbox.gob"
+#line 122 "mn-mailbox.c"
+#line 416 "src/mn-mailbox.gob"
+static void mn_mailbox_queue_cleanup_messages_considered_as_read (void);
+#line 125 "mn-mailbox.c"
+#line 423 "src/mn-mailbox.gob"
+static gboolean mn_mailbox_cleanup_messages_considered_as_read_cb (gpointer data);
+#line 128 "mn-mailbox.c"
+#line 444 "src/mn-mailbox.gob"
+static void mn_mailbox_cleanup_messages_considered_as_read (void);
+#line 131 "mn-mailbox.c"
+#line 472 "src/mn-mailbox.gob"
+static gboolean mn_mailbox_cleanup_messages_considered_as_read_remove_cb (const char * id, gpointer value, gpointer user_data);
+#line 134 "mn-mailbox.c"
+#line 503 "src/mn-mailbox.gob"
 static void mn_mailbox_messages_changed (MNMailbox * self, gboolean has_new);
-#line 114 "mn-mailbox.c"
-#line 508 "src/mn-mailbox.gob"
+#line 137 "mn-mailbox.c"
+#line 596 "src/mn-mailbox.gob"
 static void mn_mailbox_init (MNMailbox * self);
-#line 117 "mn-mailbox.c"
-#line 513 "src/mn-mailbox.gob"
+#line 140 "mn-mailbox.c"
+#line 604 "src/mn-mailbox.gob"
 static void mn_mailbox_finalize (MNMailbox * self);
-#line 120 "mn-mailbox.c"
-#line 524 "src/mn-mailbox.gob"
+#line 143 "mn-mailbox.c"
+#line 615 "src/mn-mailbox.gob"
 static void mn_mailbox_notify_display_seen_messages_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data);
-#line 123 "mn-mailbox.c"
-#line 709 "src/mn-mailbox.gob"
+#line 146 "mn-mailbox.c"
+#line 626 "src/mn-mailbox.gob"
+static void mn_mailbox_notify_messages_considered_as_read_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data);
+#line 149 "mn-mailbox.c"
+#line 811 "src/mn-mailbox.gob"
 static MNMailbox * mn_mailbox_parse_obsolete_uri (const char * uri);
-#line 126 "mn-mailbox.c"
-#line 933 "src/mn-mailbox.gob"
+#line 152 "mn-mailbox.c"
+#line 1035 "src/mn-mailbox.gob"
 static gboolean mn_mailbox_check_timeout_cb (gpointer data);
-#line 129 "mn-mailbox.c"
-#line 943 "src/mn-mailbox.gob"
+#line 155 "mn-mailbox.c"
+#line 1045 "src/mn-mailbox.gob"
 static gboolean mn_mailbox_validate (MNMailbox * self, GError ** err);
-#line 132 "mn-mailbox.c"
+#line 158 "mn-mailbox.c"
 static void ___real_mn_mailbox_seal (MNMailbox * self);
-#line 1007 "src/mn-mailbox.gob"
+#line 1109 "src/mn-mailbox.gob"
 static MNMailbox * mn_mailbox_parse_uri (MNMailbox * self, const char * uri) G_GNUC_UNUSED;
-#line 136 "mn-mailbox.c"
+#line 162 "mn-mailbox.c"
 static void ___real_mn_mailbox_check (MNMailbox * self);
-#line 1078 "src/mn-mailbox.gob"
-static void mn_mailbox_consider_as_read_real (MNMailbox * self, MNMessage * message);
-#line 140 "mn-mailbox.c"
 
 /*
  * Signal connection wrapper macro shortcuts
@@ -226,15 +249,20 @@ static GObjectClass *parent_class = NULL;
 #define self_update_check_timeout mn_mailbox_update_check_timeout
 #define self_set_messages mn_mailbox_set_messages
 #define self_filter_messages mn_mailbox_filter_messages
-#define self_remove_stale_messages_cb mn_mailbox_remove_stale_messages_cb
+#define self_filter_messages_cb mn_mailbox_filter_messages_cb
 #define self_compare_messages mn_mailbox_compare_messages
 #define self_compare_messages_cb mn_mailbox_compare_messages_cb
+#define self_queue_cleanup_messages_considered_as_read mn_mailbox_queue_cleanup_messages_considered_as_read
+#define self_cleanup_messages_considered_as_read_cb mn_mailbox_cleanup_messages_considered_as_read_cb
+#define self_cleanup_messages_considered_as_read mn_mailbox_cleanup_messages_considered_as_read
+#define self_cleanup_messages_considered_as_read_remove_cb mn_mailbox_cleanup_messages_considered_as_read_remove_cb
 #define self_messages_changed mn_mailbox_messages_changed
 #define self_set_error mn_mailbox_set_error
 #define self_init_types mn_mailbox_init_types
 #define self_get_class_from_name mn_mailbox_get_class_from_name
 #define self_get_type_from_name mn_mailbox_get_type_from_name
 #define self_notify_display_seen_messages_cb mn_mailbox_notify_display_seen_messages_cb
+#define self_notify_messages_considered_as_read_cb mn_mailbox_notify_messages_considered_as_read_cb
 #define self_new mn_mailbox_new
 #define self_new_from_xml_node mn_mailbox_new_from_xml_node
 #define self_xml_node_new mn_mailbox_xml_node_new
@@ -253,9 +281,6 @@ static GObjectClass *parent_class = NULL;
 #define self_notice mn_mailbox_notice
 #define self_warning mn_mailbox_warning
 #define self_get_message_from_mid mn_mailbox_get_message_from_mid
-#define self_consider_as_read_real mn_mailbox_consider_as_read_real
-#define self_consider_as_read mn_mailbox_consider_as_read
-#define self_consider_as_read_list mn_mailbox_consider_as_read_list
 #define self_get_command mn_mailbox_get_command
 #define self_has_command mn_mailbox_has_command
 GType
@@ -307,53 +332,47 @@ ___finalize(GObject *obj_self)
 #define __GOB_FUNCTION__ "MN:Mailbox::finalize"
 	MNMailbox *self G_GNUC_UNUSED = MN_MAILBOX (obj_self);
 	gpointer priv G_GNUC_UNUSED = self->_priv;
-#line 513 "src/mn-mailbox.gob"
+#line 604 "src/mn-mailbox.gob"
 	mn_mailbox_finalize (self);
-#line 313 "mn-mailbox.c"
+#line 338 "mn-mailbox.c"
 	if(G_OBJECT_CLASS(parent_class)->finalize) \
 		(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
-#line 167 "src/mn-mailbox.gob"
+#line 192 "src/mn-mailbox.gob"
 	if(self->runtime_name) { g_free ((gpointer) self->runtime_name); self->runtime_name = NULL; }
-#line 318 "mn-mailbox.c"
-#line 169 "src/mn-mailbox.gob"
+#line 343 "mn-mailbox.c"
+#line 194 "src/mn-mailbox.gob"
 	if(self->name) { g_free ((gpointer) self->name); self->name = NULL; }
-#line 321 "mn-mailbox.c"
-#line 172 "src/mn-mailbox.gob"
+#line 346 "mn-mailbox.c"
+#line 197 "src/mn-mailbox.gob"
 	if(self->open_command) { g_free ((gpointer) self->open_command); self->open_command = NULL; }
-#line 324 "mn-mailbox.c"
-#line 175 "src/mn-mailbox.gob"
+#line 349 "mn-mailbox.c"
+#line 200 "src/mn-mailbox.gob"
 	if(self->mark_as_read_command) { g_free ((gpointer) self->mark_as_read_command); self->mark_as_read_command = NULL; }
-#line 327 "mn-mailbox.c"
-#line 178 "src/mn-mailbox.gob"
+#line 352 "mn-mailbox.c"
+#line 203 "src/mn-mailbox.gob"
 	if(self->mark_as_spam_command) { g_free ((gpointer) self->mark_as_spam_command); self->mark_as_spam_command = NULL; }
-#line 330 "mn-mailbox.c"
-#line 181 "src/mn-mailbox.gob"
+#line 355 "mn-mailbox.c"
+#line 206 "src/mn-mailbox.gob"
 	if(self->delete_command) { g_free ((gpointer) self->delete_command); self->delete_command = NULL; }
-#line 333 "mn-mailbox.c"
-#line 184 "src/mn-mailbox.gob"
+#line 358 "mn-mailbox.c"
+#line 209 "src/mn-mailbox.gob"
 	if(self->stock_id) { g_free ((gpointer) self->stock_id); self->stock_id = NULL; }
-#line 336 "mn-mailbox.c"
-#line 187 "src/mn-mailbox.gob"
+#line 361 "mn-mailbox.c"
+#line 212 "src/mn-mailbox.gob"
 	if(self->format) { g_free ((gpointer) self->format); self->format = NULL; }
-#line 339 "mn-mailbox.c"
-#line 246 "src/mn-mailbox.gob"
-	if(self->_priv->all_messages) { mn_g_object_slist_free ((gpointer) self->_priv->all_messages); self->_priv->all_messages = NULL; }
-#line 342 "mn-mailbox.c"
-#line 255 "src/mn-mailbox.gob"
-	if(self->_priv->all_messages_mid_hash_table) { g_hash_table_destroy ((gpointer) self->_priv->all_messages_mid_hash_table); self->_priv->all_messages_mid_hash_table = NULL; }
-#line 345 "mn-mailbox.c"
-#line 262 "src/mn-mailbox.gob"
-	if(self->_priv->all_messages_considered_as_read) { g_hash_table_destroy ((gpointer) self->_priv->all_messages_considered_as_read); self->_priv->all_messages_considered_as_read = NULL; }
-#line 348 "mn-mailbox.c"
-#line 265 "src/mn-mailbox.gob"
-	if(self->messages) { mn_g_object_ptr_array_free ((gpointer) self->messages); self->messages = NULL; }
-#line 351 "mn-mailbox.c"
-#line 268 "src/mn-mailbox.gob"
-	if(self->_priv->messages_hash_table) { g_hash_table_destroy ((gpointer) self->_priv->messages_hash_table); self->_priv->messages_hash_table = NULL; }
-#line 354 "mn-mailbox.c"
-#line 418 "src/mn-mailbox.gob"
+#line 364 "mn-mailbox.c"
+#line 274 "src/mn-mailbox.gob"
+	if(self->_priv->all_messages) { g_hash_table_destroy ((gpointer) self->_priv->all_messages); self->_priv->all_messages = NULL; }
+#line 367 "mn-mailbox.c"
+#line 277 "src/mn-mailbox.gob"
+	if(self->_priv->all_messages_by_mid) { g_hash_table_destroy ((gpointer) self->_priv->all_messages_by_mid); self->_priv->all_messages_by_mid = NULL; }
+#line 370 "mn-mailbox.c"
+#line 280 "src/mn-mailbox.gob"
+	if(self->messages) { g_hash_table_destroy ((gpointer) self->messages); self->messages = NULL; }
+#line 373 "mn-mailbox.c"
+#line 506 "src/mn-mailbox.gob"
 	if(self->error) { g_free ((gpointer) self->error); self->error = NULL; }
-#line 357 "mn-mailbox.c"
+#line 376 "mn-mailbox.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -366,10 +385,10 @@ mn_mailbox_class_init (MNMailboxClass * c G_GNUC_UNUSED)
 	g_type_class_add_private(c,sizeof(MNMailboxPrivate));
 #line 56 "src/mn-mailbox.gob"
 	c->default_check_delay = -1;
-#line 370 "mn-mailbox.c"
+#line 389 "mn-mailbox.c"
 #line 56 "src/mn-mailbox.gob"
 	c->enable_checking_when_added = TRUE;
-#line 373 "mn-mailbox.c"
+#line 392 "mn-mailbox.c"
 
 	parent_class = g_type_class_ref (G_TYPE_OBJECT);
 
@@ -399,22 +418,22 @@ mn_mailbox_class_init (MNMailboxClass * c G_GNUC_UNUSED)
 			G_TYPE_NONE, 1,
 			G_TYPE_BOOLEAN);
 	if ___GOB_UNLIKELY(sizeof(gboolean ) != sizeof(gboolean ) || parent_class == NULL /* avoid warning */) {
-		g_error("src/mn-mailbox.gob line 415: Type mismatch of \"messages_changed\" signal signature");
+		g_error("src/mn-mailbox.gob line 503: Type mismatch of \"messages_changed\" signal signature");
 	}
 
-#line 143 "src/mn-mailbox.gob"
+#line 154 "src/mn-mailbox.gob"
 	c->added = ___real_mn_mailbox_added;
-#line 159 "src/mn-mailbox.gob"
+#line 170 "src/mn-mailbox.gob"
 	c->removed = ___real_mn_mailbox_removed;
-#line 410 "mn-mailbox.c"
+#line 429 "mn-mailbox.c"
 	c->messages_changed = NULL;
-#line 992 "src/mn-mailbox.gob"
+#line 1094 "src/mn-mailbox.gob"
 	c->seal = ___real_mn_mailbox_seal;
-#line 414 "mn-mailbox.c"
+#line 433 "mn-mailbox.c"
 	c->parse_uri = NULL;
-#line 1010 "src/mn-mailbox.gob"
+#line 1112 "src/mn-mailbox.gob"
 	c->check = ___real_mn_mailbox_check;
-#line 418 "mn-mailbox.c"
+#line 437 "mn-mailbox.c"
 	g_object_class->finalize = ___finalize;
 	g_object_class->get_property = ___object_get_property;
 	g_object_class->set_property = ___object_set_property;
@@ -533,34 +552,34 @@ mn_mailbox_class_init (MNMailboxClass * c G_GNUC_UNUSED)
     }
 }
 #undef __GOB_FUNCTION__
-#line 508 "src/mn-mailbox.gob"
+#line 596 "src/mn-mailbox.gob"
 static void 
 mn_mailbox_init (MNMailbox * self G_GNUC_UNUSED)
 {
-#line 541 "mn-mailbox.c"
+#line 560 "mn-mailbox.c"
 #define __GOB_FUNCTION__ "MN:Mailbox::init"
 	self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_MAILBOX,MNMailboxPrivate);
-#line 161 "src/mn-mailbox.gob"
+#line 172 "src/mn-mailbox.gob"
 	self->_priv->poll = TRUE;
-#line 546 "mn-mailbox.c"
-#line 255 "src/mn-mailbox.gob"
-	self->_priv->all_messages_mid_hash_table = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, (GDestroyNotify) g_object_unref);
-#line 549 "mn-mailbox.c"
-#line 262 "src/mn-mailbox.gob"
-	self->_priv->all_messages_considered_as_read = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, (GDestroyNotify) g_object_unref);
-#line 552 "mn-mailbox.c"
-#line 265 "src/mn-mailbox.gob"
-	self->messages = g_ptr_array_new();
-#line 555 "mn-mailbox.c"
-#line 268 "src/mn-mailbox.gob"
-	self->_priv->messages_hash_table = g_hash_table_new(g_str_hash, g_str_equal);
-#line 558 "mn-mailbox.c"
+#line 565 "mn-mailbox.c"
+#line 274 "src/mn-mailbox.gob"
+	self->_priv->all_messages = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, (GDestroyNotify) g_object_unref);
+#line 568 "mn-mailbox.c"
+#line 277 "src/mn-mailbox.gob"
+	self->_priv->all_messages_by_mid = g_hash_table_new(g_str_hash, g_str_equal);
+#line 571 "mn-mailbox.c"
+#line 280 "src/mn-mailbox.gob"
+	self->messages = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, (GDestroyNotify) g_object_unref);
+#line 574 "mn-mailbox.c"
  {
-#line 509 "src/mn-mailbox.gob"
+#line 597 "src/mn-mailbox.gob"
 
-    mn_g_object_gconf_notification_add_gdk_locked(self, MN_CONF_DISPLAY_SEEN_MAIL, self_notify_display_seen_messages_cb, self);
+    mn_g_object_gconf_notifications_add_gdk_locked(self,
+						   MN_CONF_DISPLAY_SEEN_MAIL, self_notify_display_seen_messages_cb, self,
+						   MN_CONF_MESSAGES_CONSIDERED_AS_READ, self_notify_messages_considered_as_read_cb, self,
+						   NULL);
   
-#line 564 "mn-mailbox.c"
+#line 583 "mn-mailbox.c"
  }
 }
 #undef __GOB_FUNCTION__
@@ -579,63 +598,63 @@ ___object_set_property (GObject *object,
 	switch (property_id) {
 	case PROP_NAME:
 		{
-#line 170 "src/mn-mailbox.gob"
+#line 195 "src/mn-mailbox.gob"
 { char *old = self->name; self->name = g_value_dup_string (VAL); g_free (old); }
-#line 585 "mn-mailbox.c"
+#line 604 "mn-mailbox.c"
 		}
 		break;
 	case PROP_OPEN_COMMAND:
 		{
-#line 173 "src/mn-mailbox.gob"
+#line 198 "src/mn-mailbox.gob"
 { char *old = self->open_command; self->open_command = g_value_dup_string (VAL); g_free (old); }
-#line 592 "mn-mailbox.c"
+#line 611 "mn-mailbox.c"
 		}
 		break;
 	case PROP_MARK_AS_READ_COMMAND:
 		{
-#line 176 "src/mn-mailbox.gob"
+#line 201 "src/mn-mailbox.gob"
 { char *old = self->mark_as_read_command; self->mark_as_read_command = g_value_dup_string (VAL); g_free (old); }
-#line 599 "mn-mailbox.c"
+#line 618 "mn-mailbox.c"
 		}
 		break;
 	case PROP_MARK_AS_SPAM_COMMAND:
 		{
-#line 179 "src/mn-mailbox.gob"
+#line 204 "src/mn-mailbox.gob"
 { char *old = self->mark_as_spam_command; self->mark_as_spam_command = g_value_dup_string (VAL); g_free (old); }
-#line 606 "mn-mailbox.c"
+#line 625 "mn-mailbox.c"
 		}
 		break;
 	case PROP_DELETE_COMMAND:
 		{
-#line 182 "src/mn-mailbox.gob"
+#line 207 "src/mn-mailbox.gob"
 { char *old = self->delete_command; self->delete_command = g_value_dup_string (VAL); g_free (old); }
-#line 613 "mn-mailbox.c"
+#line 632 "mn-mailbox.c"
 		}
 		break;
 	case PROP_STOCK_ID:
 		{
-#line 185 "src/mn-mailbox.gob"
+#line 210 "src/mn-mailbox.gob"
 { char *old = self->stock_id; self->stock_id = g_value_dup_string (VAL); g_free (old); }
-#line 620 "mn-mailbox.c"
+#line 639 "mn-mailbox.c"
 		}
 		break;
 	case PROP_FORMAT:
 		{
-#line 188 "src/mn-mailbox.gob"
+#line 213 "src/mn-mailbox.gob"
 { char *old = self->format; self->format = g_value_dup_string (VAL); g_free (old); }
-#line 627 "mn-mailbox.c"
+#line 646 "mn-mailbox.c"
 		}
 		break;
 	case PROP_CHECK_DELAY:
 		{
-#line 195 "src/mn-mailbox.gob"
+#line 220 "src/mn-mailbox.gob"
 self->check_delay = g_value_get_int (VAL);
-#line 634 "mn-mailbox.c"
+#line 653 "mn-mailbox.c"
 		}
 		break;
 	case PROP_POLL:
 		{
-#line 202 "src/mn-mailbox.gob"
+#line 227 "src/mn-mailbox.gob"
 
       gboolean new_poll = g_value_get_boolean(VAL);
 
@@ -652,14 +671,14 @@ self->check_delay = g_value_get_int (VAL);
 	  g_object_notify(G_OBJECT(self), "manually-checkable");
 	}
     
-#line 656 "mn-mailbox.c"
+#line 675 "mn-mailbox.c"
 		}
 		break;
 	case PROP_ERROR:
 		{
-#line 419 "src/mn-mailbox.gob"
+#line 507 "src/mn-mailbox.gob"
 { char *old = self->error; self->error = g_value_dup_string (VAL); g_free (old); }
-#line 663 "mn-mailbox.c"
+#line 682 "mn-mailbox.c"
 		}
 		break;
 	default:
@@ -688,92 +707,92 @@ ___object_get_property (GObject *object,
 	switch (property_id) {
 	case PROP_NAME:
 		{
-#line 170 "src/mn-mailbox.gob"
+#line 195 "src/mn-mailbox.gob"
 g_value_set_string (VAL, self->name);
-#line 694 "mn-mailbox.c"
+#line 713 "mn-mailbox.c"
 		}
 		break;
 	case PROP_OPEN_COMMAND:
 		{
-#line 173 "src/mn-mailbox.gob"
+#line 198 "src/mn-mailbox.gob"
 g_value_set_string (VAL, self->open_command);
-#line 701 "mn-mailbox.c"
+#line 720 "mn-mailbox.c"
 		}
 		break;
 	case PROP_MARK_AS_READ_COMMAND:
 		{
-#line 176 "src/mn-mailbox.gob"
+#line 201 "src/mn-mailbox.gob"
 g_value_set_string (VAL, self->mark_as_read_command);
-#line 708 "mn-mailbox.c"
+#line 727 "mn-mailbox.c"
 		}
 		break;
 	case PROP_MARK_AS_SPAM_COMMAND:
 		{
-#line 179 "src/mn-mailbox.gob"
+#line 204 "src/mn-mailbox.gob"
 g_value_set_string (VAL, self->mark_as_spam_command);
-#line 715 "mn-mailbox.c"
+#line 734 "mn-mailbox.c"
 		}
 		break;
 	case PROP_DELETE_COMMAND:
 		{
-#line 182 "src/mn-mailbox.gob"
+#line 207 "src/mn-mailbox.gob"
 g_value_set_string (VAL, self->delete_command);
-#line 722 "mn-mailbox.c"
+#line 741 "mn-mailbox.c"
 		}
 		break;
 	case PROP_STOCK_ID:
 		{
-#line 185 "src/mn-mailbox.gob"
+#line 210 "src/mn-mailbox.gob"
 g_value_set_string (VAL, self->stock_id);
-#line 729 "mn-mailbox.c"
+#line 748 "mn-mailbox.c"
 		}
 		break;
 	case PROP_FORMAT:
 		{
-#line 188 "src/mn-mailbox.gob"
+#line 213 "src/mn-mailbox.gob"
 g_value_set_string (VAL, self->format);
-#line 736 "mn-mailbox.c"
+#line 755 "mn-mailbox.c"
 		}
 		break;
 	case PROP_CHECK_DELAY:
 		{
-#line 195 "src/mn-mailbox.gob"
+#line 220 "src/mn-mailbox.gob"
 g_value_set_int (VAL, self->check_delay);
-#line 743 "mn-mailbox.c"
+#line 762 "mn-mailbox.c"
 		}
 		break;
 	case PROP_POLL:
 		{
-#line 219 "src/mn-mailbox.gob"
+#line 244 "src/mn-mailbox.gob"
 
       g_value_set_boolean(VAL, selfp->poll);
     
-#line 752 "mn-mailbox.c"
+#line 771 "mn-mailbox.c"
 		}
 		break;
 	case PROP_MANUALLY_CHECKABLE:
 		{
-#line 230 "src/mn-mailbox.gob"
+#line 255 "src/mn-mailbox.gob"
 
       g_value_set_boolean(VAL, selfp->checking_enabled && selfp->poll);
     
-#line 761 "mn-mailbox.c"
+#line 780 "mn-mailbox.c"
 		}
 		break;
 	case PROP_MESSAGES:
 		{
-#line 275 "src/mn-mailbox.gob"
+#line 287 "src/mn-mailbox.gob"
 
       g_value_set_pointer(VAL, self->messages);
     
-#line 770 "mn-mailbox.c"
+#line 789 "mn-mailbox.c"
 		}
 		break;
 	case PROP_ERROR:
 		{
-#line 419 "src/mn-mailbox.gob"
+#line 507 "src/mn-mailbox.gob"
 g_value_set_string (VAL, self->error);
-#line 777 "mn-mailbox.c"
+#line 796 "mn-mailbox.c"
 		}
 		break;
 	default:
@@ -789,42 +808,42 @@ g_value_set_string (VAL, self->error);
 #undef __GOB_FUNCTION__
 
 
-#line 124 "src/mn-mailbox.gob"
+#line 135 "src/mn-mailbox.gob"
 gboolean 
 mn_mailbox_get_active (MNMailbox * self)
 {
-#line 797 "mn-mailbox.c"
+#line 816 "mn-mailbox.c"
 #define __GOB_FUNCTION__ "MN:Mailbox::get_active"
-#line 124 "src/mn-mailbox.gob"
+#line 135 "src/mn-mailbox.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 124 "src/mn-mailbox.gob"
+#line 135 "src/mn-mailbox.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX (self), (gboolean )0);
-#line 803 "mn-mailbox.c"
+#line 822 "mn-mailbox.c"
 {
-#line 126 "src/mn-mailbox.gob"
+#line 137 "src/mn-mailbox.gob"
 	
     return g_atomic_int_get(&selfp->_active);
   }}
-#line 809 "mn-mailbox.c"
+#line 828 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 130 "src/mn-mailbox.gob"
+#line 141 "src/mn-mailbox.gob"
 static void 
 mn_mailbox_set_active (MNMailbox * self, gboolean value)
 {
-#line 816 "mn-mailbox.c"
+#line 835 "mn-mailbox.c"
 #define __GOB_FUNCTION__ "MN:Mailbox::set_active"
-#line 130 "src/mn-mailbox.gob"
+#line 141 "src/mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 130 "src/mn-mailbox.gob"
+#line 141 "src/mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 822 "mn-mailbox.c"
+#line 841 "mn-mailbox.c"
 {
-#line 132 "src/mn-mailbox.gob"
+#line 143 "src/mn-mailbox.gob"
 	
     g_atomic_int_set(&selfp->_active, value);
   }}
-#line 828 "mn-mailbox.c"
+#line 847 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
 /**
@@ -834,22 +853,22 @@ mn_mailbox_set_active (MNMailbox * self, gboolean value)
  * This signal gets emitted after the mailbox is added to the
  * mailboxes list.
  **/
-#line 143 "src/mn-mailbox.gob"
+#line 154 "src/mn-mailbox.gob"
 void 
 mn_mailbox_added (MNMailbox * self)
 {
-#line 842 "mn-mailbox.c"
+#line 861 "mn-mailbox.c"
 	GValue ___param_values[1];
 	GValue ___return_val;
 
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 143 "src/mn-mailbox.gob"
+#line 154 "src/mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 143 "src/mn-mailbox.gob"
+#line 154 "src/mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 853 "mn-mailbox.c"
+#line 872 "mn-mailbox.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -862,21 +881,21 @@ memset (&___param_values, 0, sizeof (___param_values));
 
 	g_value_unset (&___param_values[0]);
 }
-#line 143 "src/mn-mailbox.gob"
+#line 154 "src/mn-mailbox.gob"
 static void 
 ___real_mn_mailbox_added (MNMailbox * self)
 {
-#line 870 "mn-mailbox.c"
+#line 889 "mn-mailbox.c"
 #define __GOB_FUNCTION__ "MN:Mailbox::added"
 {
-#line 145 "src/mn-mailbox.gob"
+#line 156 "src/mn-mailbox.gob"
 	
     self_set_active(self, TRUE);
 
     if (SELF_GET_CLASS(self)->enable_checking_when_added)
       self_enable_checking(self);
   }}
-#line 880 "mn-mailbox.c"
+#line 899 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
 /**
@@ -886,22 +905,22 @@ ___real_mn_mailbox_added (MNMailbox * self)
  * This signal gets emitted after the mailbox is removed from the
  * mailboxes list.
  **/
-#line 159 "src/mn-mailbox.gob"
+#line 170 "src/mn-mailbox.gob"
 void 
 mn_mailbox_removed (MNMailbox * self)
 {
-#line 894 "mn-mailbox.c"
+#line 913 "mn-mailbox.c"
 	GValue ___param_values[1];
 	GValue ___return_val;
 
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 159 "src/mn-mailbox.gob"
+#line 170 "src/mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 159 "src/mn-mailbox.gob"
+#line 170 "src/mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 905 "mn-mailbox.c"
+#line 924 "mn-mailbox.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -914,126 +933,140 @@ memset (&___param_values, 0, sizeof (___param_values));
 
 	g_value_unset (&___param_values[0]);
 }
-#line 159 "src/mn-mailbox.gob"
+#line 170 "src/mn-mailbox.gob"
 static void 
 ___real_mn_mailbox_removed (MNMailbox * self)
 {
-#line 922 "mn-mailbox.c"
+#line 941 "mn-mailbox.c"
 #define __GOB_FUNCTION__ "MN:Mailbox::removed"
 {
-#line 161 "src/mn-mailbox.gob"
+#line 172 "src/mn-mailbox.gob"
 	
     self_set_active(self, FALSE);
 
     mn_source_clear(&selfp->check_timeout_id);
+
+    /*
+     * Do not queue a cleanup of the messages-considered-as-read GConf
+     * setting: it should not be done if the mailbox is only being
+     * replaced (eg. from mn_mailbox_properties_dialog_apply()).
+     *
+     * If however the mailbox is being permanently removed, its
+     * messages considered as read will be cleaned up the next time
+     * another mailbox is checked, which is good enough.
+     *
+     * Note that we could queue a cleanup from here by adding and
+     * testing a "gboolean replacing" signal parameter, but it is not
+     * worth the effort.
+     */
   }}
-#line 931 "mn-mailbox.c"
+#line 964 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 185 "src/mn-mailbox.gob"
+#line 210 "src/mn-mailbox.gob"
 gchar * 
 mn_mailbox_get_stock_id (MNMailbox * self)
 {
-#line 938 "mn-mailbox.c"
+#line 971 "mn-mailbox.c"
 #define __GOB_FUNCTION__ "MN:Mailbox::get_stock_id"
 {
-#line 185 "src/mn-mailbox.gob"
+#line 210 "src/mn-mailbox.gob"
 		gchar* val; g_object_get (G_OBJECT (self), "stock_id", &val, NULL); return val;
 }}
-#line 944 "mn-mailbox.c"
+#line 977 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 185 "src/mn-mailbox.gob"
+#line 210 "src/mn-mailbox.gob"
 void 
 mn_mailbox_set_stock_id (MNMailbox * self, gchar * val)
 {
-#line 951 "mn-mailbox.c"
+#line 984 "mn-mailbox.c"
 #define __GOB_FUNCTION__ "MN:Mailbox::set_stock_id"
 {
-#line 185 "src/mn-mailbox.gob"
+#line 210 "src/mn-mailbox.gob"
 		g_object_set (G_OBJECT (self), "stock_id", val, NULL);
 }}
-#line 957 "mn-mailbox.c"
+#line 990 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 188 "src/mn-mailbox.gob"
+#line 213 "src/mn-mailbox.gob"
 gchar * 
 mn_mailbox_get_format (MNMailbox * self)
 {
-#line 964 "mn-mailbox.c"
+#line 997 "mn-mailbox.c"
 #define __GOB_FUNCTION__ "MN:Mailbox::get_format"
 {
-#line 188 "src/mn-mailbox.gob"
+#line 213 "src/mn-mailbox.gob"
 		gchar* val; g_object_get (G_OBJECT (self), "format", &val, NULL); return val;
 }}
-#line 970 "mn-mailbox.c"
+#line 1003 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 188 "src/mn-mailbox.gob"
+#line 213 "src/mn-mailbox.gob"
 void 
 mn_mailbox_set_format (MNMailbox * self, gchar * val)
 {
-#line 977 "mn-mailbox.c"
+#line 1010 "mn-mailbox.c"
 #define __GOB_FUNCTION__ "MN:Mailbox::set_format"
 {
-#line 188 "src/mn-mailbox.gob"
+#line 213 "src/mn-mailbox.gob"
 		g_object_set (G_OBJECT (self), "format", val, NULL);
 }}
-#line 983 "mn-mailbox.c"
+#line 1016 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 219 "src/mn-mailbox.gob"
+#line 244 "src/mn-mailbox.gob"
 gboolean 
 mn_mailbox_get_poll (MNMailbox * self)
 {
-#line 990 "mn-mailbox.c"
+#line 1023 "mn-mailbox.c"
 #define __GOB_FUNCTION__ "MN:Mailbox::get_poll"
 {
-#line 200 "src/mn-mailbox.gob"
+#line 225 "src/mn-mailbox.gob"
 		gboolean val; g_object_get (G_OBJECT (self), "poll", &val, NULL); return val;
 }}
-#line 996 "mn-mailbox.c"
+#line 1029 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 202 "src/mn-mailbox.gob"
+#line 227 "src/mn-mailbox.gob"
 void 
 mn_mailbox_set_poll (MNMailbox * self, gboolean val)
 {
-#line 1003 "mn-mailbox.c"
+#line 1036 "mn-mailbox.c"
 #define __GOB_FUNCTION__ "MN:Mailbox::set_poll"
 {
-#line 200 "src/mn-mailbox.gob"
+#line 225 "src/mn-mailbox.gob"
 		g_object_set (G_OBJECT (self), "poll", val, NULL);
 }}
-#line 1009 "mn-mailbox.c"
+#line 1042 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 230 "src/mn-mailbox.gob"
+#line 255 "src/mn-mailbox.gob"
 gboolean 
 mn_mailbox_get_manually_checkable (MNMailbox * self)
 {
-#line 1016 "mn-mailbox.c"
+#line 1049 "mn-mailbox.c"
 #define __GOB_FUNCTION__ "MN:Mailbox::get_manually_checkable"
 {
-#line 228 "src/mn-mailbox.gob"
+#line 253 "src/mn-mailbox.gob"
 		gboolean val; g_object_get (G_OBJECT (self), "manually_checkable", &val, NULL); return val;
 }}
-#line 1022 "mn-mailbox.c"
+#line 1055 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 234 "src/mn-mailbox.gob"
+#line 259 "src/mn-mailbox.gob"
 static void 
 mn_mailbox_update_check_timeout (MNMailbox * self)
 {
-#line 1029 "mn-mailbox.c"
+#line 1062 "mn-mailbox.c"
 #define __GOB_FUNCTION__ "MN:Mailbox::update_check_timeout"
-#line 234 "src/mn-mailbox.gob"
+#line 259 "src/mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 234 "src/mn-mailbox.gob"
+#line 259 "src/mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 1035 "mn-mailbox.c"
+#line 1068 "mn-mailbox.c"
 {
-#line 236 "src/mn-mailbox.gob"
+#line 261 "src/mn-mailbox.gob"
 	
     g_assert(self_get_active(self) == TRUE);
     g_assert(selfp->checking_enabled == TRUE);
@@ -1042,131 +1075,133 @@ mn_mailbox_update_check_timeout (MNMailbox * self)
     if (selfp->poll && self->runtime_check_delay > 0)
       selfp->check_timeout_id = gdk_threads_add_timeout(self->runtime_check_delay * 1000, self_check_timeout_cb, self);
   }}
-#line 1046 "mn-mailbox.c"
+#line 1079 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 279 "src/mn-mailbox.gob"
+#line 291 "src/mn-mailbox.gob"
 void 
 mn_mailbox_set_messages (MNMailbox * self, GSList * messages)
 {
-#line 1053 "mn-mailbox.c"
+#line 1086 "mn-mailbox.c"
 #define __GOB_FUNCTION__ "MN:Mailbox::set_messages"
-#line 279 "src/mn-mailbox.gob"
+#line 291 "src/mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 279 "src/mn-mailbox.gob"
+#line 291 "src/mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 1059 "mn-mailbox.c"
+#line 1092 "mn-mailbox.c"
 {
-#line 281 "src/mn-mailbox.gob"
+#line 293 "src/mn-mailbox.gob"
 	
-    mn_g_object_slist_free(selfp->all_messages);
-    selfp->all_messages = mn_g_object_slist_copy(messages);
+    GSList *l;
+
+    selfp->all_messages_set = TRUE;
+
+    g_hash_table_remove_all(selfp->all_messages);
+    g_hash_table_remove_all(selfp->all_messages_by_mid);
+
+    MN_LIST_FOREACH(l, messages)
+      {
+	MNMessage *message = l->data;
+
+	g_hash_table_replace(selfp->all_messages, message->id, g_object_ref(message));
+
+	if (message->mid)
+	  /* do not ref message, it is owned by all_messages */
+	  g_hash_table_replace(selfp->all_messages_by_mid, message->mid, message);
+      }
+
+    /*
+     * Some messages might be gone, queue a cleanup of the
+     * considered-as-read GConf setting.
+     */
+    self_queue_cleanup_messages_considered_as_read();
 
     self_filter_messages(self);
   }}
-#line 1068 "mn-mailbox.c"
+#line 1122 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
 /**
  * mn_mailbox_filter_messages:
  * @self: the mailbox to act upon
  *
- * Filters @self->all_messages with the "seen mail" filter and
- * @selfp->all_messages_considered_as_read, and stores the resulting
- * list in @self->messages. Additionally, if @self->messages has
- * changed, emits the "messages-changed" signal.
+ * Filters @self->all_messages with the "seen mail" filter and the
+ * considered-as-read GConf list, and stores the resulting set in
+ * @self->messages. Additionally, if @self->messages has changed,
+ * emits the "messages-changed" signal.
  **/
-#line 297 "src/mn-mailbox.gob"
+#line 330 "src/mn-mailbox.gob"
 static void 
 mn_mailbox_filter_messages (MNMailbox * self)
 {
-#line 1084 "mn-mailbox.c"
+#line 1138 "mn-mailbox.c"
 #define __GOB_FUNCTION__ "MN:Mailbox::filter_messages"
-#line 297 "src/mn-mailbox.gob"
+#line 330 "src/mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 297 "src/mn-mailbox.gob"
+#line 330 "src/mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 1090 "mn-mailbox.c"
+#line 1144 "mn-mailbox.c"
 {
-#line 299 "src/mn-mailbox.gob"
+#line 332 "src/mn-mailbox.gob"
 	
-    GPtrArray *messages;
-    GHashTable *all_messages_hash_table;
-    GHashTable *messages_hash_table;
-    gboolean display_seen_mail;
-    GSList *l;
+    FilterMessagesInfo info;
     gboolean changed = FALSE;
     gboolean has_new = FALSE;
 
     /* filter messages */
 
-    messages = g_ptr_array_new();
     self->timestamp = 0;
 
-    all_messages_hash_table = g_hash_table_new(g_str_hash, g_str_equal);
-    messages_hash_table = g_hash_table_new(g_str_hash, g_str_equal);
+    info.self = self;
+    info.messages = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, (GDestroyNotify) g_object_unref);
+    info.messages_considered_as_read = mn_conf_get_string_hash_set(MN_CONF_MESSAGES_CONSIDERED_AS_READ);
+    info.display_seen_mail = mn_conf_get_bool(MN_CONF_DISPLAY_SEEN_MAIL);
 
-    display_seen_mail = mn_conf_get_bool(MN_CONF_DISPLAY_SEEN_MAIL);
+    g_hash_table_foreach(selfp->all_messages, (GHFunc) self_filter_messages_cb, &info);
 
-    MN_LIST_FOREACH(l, selfp->all_messages)
-      {
-	MNMessage *message = l->data;
-
-	g_hash_table_replace(all_messages_hash_table, message->id, message);
-
-	if (message->mid)
-	  g_hash_table_replace(selfp->all_messages_mid_hash_table, message->mid, g_object_ref(message));
-
-	if ((display_seen_mail || (message->flags & MN_MESSAGE_NEW) != 0)
-	    && ! g_hash_table_lookup(selfp->all_messages_considered_as_read, message->id))
-	  {
-	    if (message->sent_time > self->timestamp)
-	      self->timestamp = message->sent_time;
-
-	    g_ptr_array_add(messages, g_object_ref(message));
-	    g_hash_table_replace(messages_hash_table, message->id, message);
-	  }
-      }
-
-    /* remove stale messages */
-    g_hash_table_foreach_remove(selfp->all_messages_mid_hash_table, (GHRFunc) self_remove_stale_messages_cb, all_messages_hash_table);
-    g_hash_table_foreach_remove(selfp->all_messages_considered_as_read, (GHRFunc) self_remove_stale_messages_cb, all_messages_hash_table);
-
-    g_hash_table_destroy(all_messages_hash_table);
+    g_hash_table_destroy(info.messages_considered_as_read);
 
     /* detect changes */
 
-    if (self_compare_messages(selfp->messages_hash_table, messages_hash_table))
+    if (self_compare_messages(self->messages, info.messages))
       changed = TRUE;
-    if (self_compare_messages(messages_hash_table, selfp->messages_hash_table))
+    if (self_compare_messages(info.messages, self->messages))
       changed = has_new = TRUE;
 
-    mn_g_object_ptr_array_free(self->messages);
-    self->messages = messages;
-
-    g_hash_table_destroy(selfp->messages_hash_table);
-    selfp->messages_hash_table = messages_hash_table;
+    g_hash_table_destroy(self->messages);
+    self->messages = info.messages;
 
     g_object_notify(G_OBJECT(self), "messages");
 
     if (changed)
       self_messages_changed(self, has_new);
   }}
-#line 1156 "mn-mailbox.c"
+#line 1180 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 363 "src/mn-mailbox.gob"
-static gboolean 
-mn_mailbox_remove_stale_messages_cb (gpointer key, MNMessage * message, GHashTable * messages)
+#line 366 "src/mn-mailbox.gob"
+static void 
+mn_mailbox_filter_messages_cb (const char * id, MNMessage * message, FilterMessagesInfo * info)
 {
-#line 1163 "mn-mailbox.c"
-#define __GOB_FUNCTION__ "MN:Mailbox::remove_stale_messages_cb"
+#line 1187 "mn-mailbox.c"
+#define __GOB_FUNCTION__ "MN:Mailbox::filter_messages_cb"
 {
-#line 367 "src/mn-mailbox.gob"
+#line 370 "src/mn-mailbox.gob"
 	
-    return g_hash_table_lookup(messages, message->id) == NULL;
+    Self *self = info->self;
+
+    if (! info->display_seen_mail && (message->flags & MN_MESSAGE_NEW) == 0)
+      return;
+
+    if (g_hash_table_lookup(info->messages_considered_as_read, message->id))
+      return;
+
+    if (message->sent_time > self->timestamp)
+      self->timestamp = message->sent_time;
+
+    g_hash_table_replace(info->messages, message->id, g_object_ref(message));
   }}
-#line 1170 "mn-mailbox.c"
+#line 1205 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
 /**
@@ -1179,14 +1214,14 @@ mn_mailbox_remove_stale_messages_cb (gpointer key, MNMessage * message, GHashTab
  * Return value: %TRUE if @messages1 contains messages not present
  * in @messages2, %FALSE otherwise.
  **/
-#line 381 "src/mn-mailbox.gob"
+#line 395 "src/mn-mailbox.gob"
 static gboolean 
 mn_mailbox_compare_messages (GHashTable * messages1, GHashTable * messages2)
 {
-#line 1187 "mn-mailbox.c"
+#line 1222 "mn-mailbox.c"
 #define __GOB_FUNCTION__ "MN:Mailbox::compare_messages"
 {
-#line 383 "src/mn-mailbox.gob"
+#line 397 "src/mn-mailbox.gob"
 	
     CompareMessagesInfo info;
 
@@ -1196,40 +1231,132 @@ mn_mailbox_compare_messages (GHashTable * messages1, GHashTable * messages2)
 
     return info.changed;
   }}
-#line 1200 "mn-mailbox.c"
+#line 1235 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 393 "src/mn-mailbox.gob"
+#line 407 "src/mn-mailbox.gob"
 static void 
 mn_mailbox_compare_messages_cb (const char * id, MNMessage * message, CompareMessagesInfo * info)
 {
-#line 1207 "mn-mailbox.c"
+#line 1242 "mn-mailbox.c"
 #define __GOB_FUNCTION__ "MN:Mailbox::compare_messages_cb"
 {
-#line 397 "src/mn-mailbox.gob"
+#line 411 "src/mn-mailbox.gob"
 	
     if (! info->changed && ! g_hash_table_lookup(info->other, id))
       info->changed = TRUE;
   }}
-#line 1215 "mn-mailbox.c"
+#line 1250 "mn-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 416 "src/mn-mailbox.gob"
+static void 
+mn_mailbox_queue_cleanup_messages_considered_as_read (void)
+{
+#line 1257 "mn-mailbox.c"
+#define __GOB_FUNCTION__ "MN:Mailbox::queue_cleanup_messages_considered_as_read"
+{
+#line 418 "src/mn-mailbox.gob"
+	
+    if (! cleanup_messages_considered_as_read_idle_id)
+      cleanup_messages_considered_as_read_idle_id = gdk_threads_add_idle(self_cleanup_messages_considered_as_read_cb, NULL);
+  }}
+#line 1265 "mn-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 423 "src/mn-mailbox.gob"
+static gboolean 
+mn_mailbox_cleanup_messages_considered_as_read_cb (gpointer data)
+{
+#line 1272 "mn-mailbox.c"
+#define __GOB_FUNCTION__ "MN:Mailbox::cleanup_messages_considered_as_read_cb"
+{
+#line 425 "src/mn-mailbox.gob"
+	
+    self_cleanup_messages_considered_as_read();
+
+    cleanup_messages_considered_as_read_idle_id = 0;
+    return FALSE;		/* remove source */
+  }}
+#line 1282 "mn-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 444 "src/mn-mailbox.gob"
+static void 
+mn_mailbox_cleanup_messages_considered_as_read (void)
+{
+#line 1289 "mn-mailbox.c"
+#define __GOB_FUNCTION__ "MN:Mailbox::cleanup_messages_considered_as_read"
+{
+#line 446 "src/mn-mailbox.gob"
+	
+    GList *l;
+    GHashTable *set;
+
+    /*
+     * If there is a mailbox which has not been successfully checked
+     * yet, abort. Otherwise, the messages of that mailbox could be
+     * mistakenly cleaned up.
+     */
+    MN_LIST_FOREACH(l, mn_shell->mailboxes->list)
+      {
+	MNMailbox *mailbox = l->data;
+
+	if (! mailbox->_priv->all_messages_set)
+	  return;
+      }
+
+    set = mn_conf_get_string_hash_set(MN_CONF_MESSAGES_CONSIDERED_AS_READ);
+
+    if (g_hash_table_foreach_remove(set, (GHRFunc) self_cleanup_messages_considered_as_read_remove_cb, NULL))
+      /* one or more messages were removed, reflect the changes */
+      mn_conf_set_string_hash_set(MN_CONF_MESSAGES_CONSIDERED_AS_READ, set);
+
+    g_hash_table_destroy(set);
+  }}
+#line 1318 "mn-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 472 "src/mn-mailbox.gob"
+static gboolean 
+mn_mailbox_cleanup_messages_considered_as_read_remove_cb (const char * id, gpointer value, gpointer user_data)
+{
+#line 1325 "mn-mailbox.c"
+#define __GOB_FUNCTION__ "MN:Mailbox::cleanup_messages_considered_as_read_remove_cb"
+{
+#line 476 "src/mn-mailbox.gob"
+	
+    GList *l;
+
+    MN_LIST_FOREACH(l, mn_shell->mailboxes->list)
+      {
+	MNMailbox *mailbox = l->data;
+
+	if (g_hash_table_lookup(mailbox->_priv->all_messages, id))
+	  return FALSE;		/* message still exists, do not remove it */
+      }
+
+    return TRUE;		/* message no longer exists, remove it */
+  }}
+#line 1342 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 415 "src/mn-mailbox.gob"
+#line 503 "src/mn-mailbox.gob"
 static void 
 mn_mailbox_messages_changed (MNMailbox * self, gboolean has_new)
 {
-#line 1222 "mn-mailbox.c"
+#line 1349 "mn-mailbox.c"
 	GValue ___param_values[2];
 	GValue ___return_val;
 
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 415 "src/mn-mailbox.gob"
+#line 503 "src/mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 415 "src/mn-mailbox.gob"
+#line 503 "src/mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 1233 "mn-mailbox.c"
+#line 1360 "mn-mailbox.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -1248,19 +1375,19 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_value_unset (&___param_values[1]);
 }
 
-#line 422 "src/mn-mailbox.gob"
+#line 510 "src/mn-mailbox.gob"
 void 
 mn_mailbox_set_error (MNMailbox * self, const char * format, ...)
 {
-#line 1256 "mn-mailbox.c"
+#line 1383 "mn-mailbox.c"
 #define __GOB_FUNCTION__ "MN:Mailbox::set_error"
-#line 422 "src/mn-mailbox.gob"
+#line 510 "src/mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 422 "src/mn-mailbox.gob"
+#line 510 "src/mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 1262 "mn-mailbox.c"
+#line 1389 "mn-mailbox.c"
 {
-#line 424 "src/mn-mailbox.gob"
+#line 512 "src/mn-mailbox.gob"
 	
     char *error = NULL;
 
@@ -1270,17 +1397,17 @@ mn_mailbox_set_error (MNMailbox * self, const char * format, ...)
     g_object_set(G_OBJECT(self), MN_MAILBOX_PROP_ERROR(error), NULL);
     g_free(error);
   }}
-#line 1274 "mn-mailbox.c"
+#line 1401 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 434 "src/mn-mailbox.gob"
+#line 522 "src/mn-mailbox.gob"
 void 
 mn_mailbox_init_types (void)
 {
-#line 1281 "mn-mailbox.c"
+#line 1408 "mn-mailbox.c"
 #define __GOB_FUNCTION__ "MN:Mailbox::init_types"
 {
-#line 436 "src/mn-mailbox.gob"
+#line 524 "src/mn-mailbox.gob"
 	
     int i = 0;
 
@@ -1313,20 +1440,20 @@ mn_mailbox_init_types (void)
 #endif
     mn_mailbox_types[i] = 0;
   }}
-#line 1317 "mn-mailbox.c"
+#line 1444 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 470 "src/mn-mailbox.gob"
+#line 558 "src/mn-mailbox.gob"
 MNMailboxClass * 
 mn_mailbox_get_class_from_name (const char * type)
 {
-#line 1324 "mn-mailbox.c"
+#line 1451 "mn-mailbox.c"
 #define __GOB_FUNCTION__ "MN:Mailbox::get_class_from_name"
-#line 470 "src/mn-mailbox.gob"
+#line 558 "src/mn-mailbox.gob"
 	g_return_val_if_fail (type != NULL, (MNMailboxClass * )0);
-#line 1328 "mn-mailbox.c"
+#line 1455 "mn-mailbox.c"
 {
-#line 472 "src/mn-mailbox.gob"
+#line 560 "src/mn-mailbox.gob"
 	
     int i;
 
@@ -1343,20 +1470,20 @@ mn_mailbox_get_class_from_name (const char * type)
 
     return NULL;
   }}
-#line 1347 "mn-mailbox.c"
+#line 1474 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 489 "src/mn-mailbox.gob"
+#line 577 "src/mn-mailbox.gob"
 GType 
 mn_mailbox_get_type_from_name (const char * type)
 {
-#line 1354 "mn-mailbox.c"
+#line 1481 "mn-mailbox.c"
 #define __GOB_FUNCTION__ "MN:Mailbox::get_type_from_name"
-#line 489 "src/mn-mailbox.gob"
+#line 577 "src/mn-mailbox.gob"
 	g_return_val_if_fail (type != NULL, (GType )0);
-#line 1358 "mn-mailbox.c"
+#line 1485 "mn-mailbox.c"
 {
-#line 491 "src/mn-mailbox.gob"
+#line 579 "src/mn-mailbox.gob"
 	
     SelfClass *class;
 
@@ -1373,18 +1500,18 @@ mn_mailbox_get_type_from_name (const char * type)
 
     return 0;
   }}
-#line 1377 "mn-mailbox.c"
+#line 1504 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
 
-#line 513 "src/mn-mailbox.gob"
+#line 604 "src/mn-mailbox.gob"
 static void 
 mn_mailbox_finalize (MNMailbox * self)
 {
-#line 1385 "mn-mailbox.c"
+#line 1512 "mn-mailbox.c"
 #define __GOB_FUNCTION__ "MN:Mailbox::finalize"
 {
-#line 514 "src/mn-mailbox.gob"
+#line 605 "src/mn-mailbox.gob"
 	
     /*
      * Even though we clear the source in removed(), it might have
@@ -1394,36 +1521,52 @@ mn_mailbox_finalize (MNMailbox * self)
     if (selfp->check_timeout_id)
       g_source_remove(selfp->check_timeout_id);
   }}
-#line 1398 "mn-mailbox.c"
+#line 1525 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 524 "src/mn-mailbox.gob"
+#line 615 "src/mn-mailbox.gob"
 static void 
 mn_mailbox_notify_display_seen_messages_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data)
 {
-#line 1405 "mn-mailbox.c"
+#line 1532 "mn-mailbox.c"
 #define __GOB_FUNCTION__ "MN:Mailbox::notify_display_seen_messages_cb"
 {
-#line 529 "src/mn-mailbox.gob"
+#line 620 "src/mn-mailbox.gob"
+	
+    Self *self = user_data;
+
+    self_filter_messages(self);
+  }}
+#line 1541 "mn-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 626 "src/mn-mailbox.gob"
+static void 
+mn_mailbox_notify_messages_considered_as_read_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data)
+{
+#line 1548 "mn-mailbox.c"
+#define __GOB_FUNCTION__ "MN:Mailbox::notify_messages_considered_as_read_cb"
+{
+#line 631 "src/mn-mailbox.gob"
 	
     Self *self = user_data;
 
     self_filter_messages(self);
   }}
-#line 1414 "mn-mailbox.c"
+#line 1557 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 536 "src/mn-mailbox.gob"
+#line 638 "src/mn-mailbox.gob"
 MNMailbox * 
 mn_mailbox_new (const char * type, ...)
 {
-#line 1421 "mn-mailbox.c"
+#line 1564 "mn-mailbox.c"
 #define __GOB_FUNCTION__ "MN:Mailbox::new"
-#line 536 "src/mn-mailbox.gob"
+#line 638 "src/mn-mailbox.gob"
 	g_return_val_if_fail (type != NULL, (MNMailbox * )0);
-#line 1425 "mn-mailbox.c"
+#line 1568 "mn-mailbox.c"
 {
-#line 538 "src/mn-mailbox.gob"
+#line 640 "src/mn-mailbox.gob"
 	
     va_list args;
     GType type_id;
@@ -1441,20 +1584,20 @@ mn_mailbox_new (const char * type, ...)
 
     return SELF(object);
   }}
-#line 1445 "mn-mailbox.c"
+#line 1588 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 556 "src/mn-mailbox.gob"
+#line 658 "src/mn-mailbox.gob"
 MNMailbox * 
 mn_mailbox_new_from_xml_node (xmlNode * node, GError ** err)
 {
-#line 1452 "mn-mailbox.c"
+#line 1595 "mn-mailbox.c"
 #define __GOB_FUNCTION__ "MN:Mailbox::new_from_xml_node"
-#line 556 "src/mn-mailbox.gob"
+#line 658 "src/mn-mailbox.gob"
 	g_return_val_if_fail (node != NULL, (MNMailbox * )0);
-#line 1456 "mn-mailbox.c"
+#line 1599 "mn-mailbox.c"
 {
-#line 558 "src/mn-mailbox.gob"
+#line 660 "src/mn-mailbox.gob"
 	
     char *type;
     Self *self = NULL;
@@ -1485,22 +1628,22 @@ mn_mailbox_new_from_xml_node (xmlNode * node, GError ** err)
     g_free(type);
     return self;
   }}
-#line 1489 "mn-mailbox.c"
+#line 1632 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 589 "src/mn-mailbox.gob"
+#line 691 "src/mn-mailbox.gob"
 xmlNode * 
 mn_mailbox_xml_node_new (MNMailbox * self)
 {
-#line 1496 "mn-mailbox.c"
+#line 1639 "mn-mailbox.c"
 #define __GOB_FUNCTION__ "MN:Mailbox::xml_node_new"
-#line 589 "src/mn-mailbox.gob"
+#line 691 "src/mn-mailbox.gob"
 	g_return_val_if_fail (self != NULL, (xmlNode * )0);
-#line 589 "src/mn-mailbox.gob"
+#line 691 "src/mn-mailbox.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX (self), (xmlNode * )0);
-#line 1502 "mn-mailbox.c"
+#line 1645 "mn-mailbox.c"
 {
-#line 591 "src/mn-mailbox.gob"
+#line 693 "src/mn-mailbox.gob"
 	
     xmlNode *node;
 
@@ -1510,20 +1653,20 @@ mn_mailbox_xml_node_new (MNMailbox * self)
 
     return node;
   }}
-#line 1514 "mn-mailbox.c"
+#line 1657 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 601 "src/mn-mailbox.gob"
+#line 703 "src/mn-mailbox.gob"
 MNMailbox * 
 mn_mailbox_new_from_uri (const char * uri)
 {
-#line 1521 "mn-mailbox.c"
+#line 1664 "mn-mailbox.c"
 #define __GOB_FUNCTION__ "MN:Mailbox::new_from_uri"
-#line 601 "src/mn-mailbox.gob"
+#line 703 "src/mn-mailbox.gob"
 	g_return_val_if_fail (uri != NULL, (MNMailbox * )0);
-#line 1525 "mn-mailbox.c"
+#line 1668 "mn-mailbox.c"
 {
-#line 603 "src/mn-mailbox.gob"
+#line 705 "src/mn-mailbox.gob"
 	
     int i;
 
@@ -1542,39 +1685,39 @@ mn_mailbox_new_from_uri (const char * uri)
 
     return NULL;
   }}
-#line 1546 "mn-mailbox.c"
+#line 1689 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 622 "src/mn-mailbox.gob"
+#line 724 "src/mn-mailbox.gob"
 MNMailbox * 
 mn_mailbox_new_from_configuration (MNMailboxConfiguration * config)
 {
-#line 1553 "mn-mailbox.c"
+#line 1696 "mn-mailbox.c"
 #define __GOB_FUNCTION__ "MN:Mailbox::new_from_configuration"
-#line 622 "src/mn-mailbox.gob"
+#line 724 "src/mn-mailbox.gob"
 	g_return_val_if_fail (config != NULL, (MNMailbox * )0);
-#line 1557 "mn-mailbox.c"
+#line 1700 "mn-mailbox.c"
 {
-#line 624 "src/mn-mailbox.gob"
+#line 726 "src/mn-mailbox.gob"
 	
     return g_object_newv(config->type, config->n_parameters, config->parameters);
   }}
-#line 1563 "mn-mailbox.c"
+#line 1706 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 628 "src/mn-mailbox.gob"
+#line 730 "src/mn-mailbox.gob"
 MNMailboxConfiguration * 
 mn_mailbox_get_configuration (MNMailbox * self)
 {
-#line 1570 "mn-mailbox.c"
+#line 1713 "mn-mailbox.c"
 #define __GOB_FUNCTION__ "MN:Mailbox::get_configuration"
-#line 628 "src/mn-mailbox.gob"
+#line 730 "src/mn-mailbox.gob"
 	g_return_val_if_fail (self != NULL, (MNMailboxConfiguration * )0);
-#line 628 "src/mn-mailbox.gob"
+#line 730 "src/mn-mailbox.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX (self), (MNMailboxConfiguration * )0);
-#line 1576 "mn-mailbox.c"
+#line 1719 "mn-mailbox.c"
 {
-#line 630 "src/mn-mailbox.gob"
+#line 732 "src/mn-mailbox.gob"
 	
     GObject *object = G_OBJECT(self);
     GArray *parameters;
@@ -1607,20 +1750,20 @@ mn_mailbox_get_configuration (MNMailbox * self)
 
     return config;
   }}
-#line 1611 "mn-mailbox.c"
+#line 1754 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 663 "src/mn-mailbox.gob"
+#line 765 "src/mn-mailbox.gob"
 void 
 mn_mailbox_configuration_free (MNMailboxConfiguration * config)
 {
-#line 1618 "mn-mailbox.c"
+#line 1761 "mn-mailbox.c"
 #define __GOB_FUNCTION__ "MN:Mailbox::configuration_free"
-#line 663 "src/mn-mailbox.gob"
+#line 765 "src/mn-mailbox.gob"
 	g_return_if_fail (config != NULL);
-#line 1622 "mn-mailbox.c"
+#line 1765 "mn-mailbox.c"
 {
-#line 665 "src/mn-mailbox.gob"
+#line 767 "src/mn-mailbox.gob"
 	
     int i;
 
@@ -1630,20 +1773,20 @@ mn_mailbox_configuration_free (MNMailboxConfiguration * config)
     g_free(config->parameters);
     g_free(config);
   }}
-#line 1634 "mn-mailbox.c"
+#line 1777 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 675 "src/mn-mailbox.gob"
+#line 777 "src/mn-mailbox.gob"
 MNMailbox * 
 mn_mailbox_new_from_obsolete_uri (const char * uri)
 {
-#line 1641 "mn-mailbox.c"
+#line 1784 "mn-mailbox.c"
 #define __GOB_FUNCTION__ "MN:Mailbox::new_from_obsolete_uri"
-#line 675 "src/mn-mailbox.gob"
+#line 777 "src/mn-mailbox.gob"
 	g_return_val_if_fail (uri != NULL, (MNMailbox * )0);
-#line 1645 "mn-mailbox.c"
+#line 1788 "mn-mailbox.c"
 {
-#line 677 "src/mn-mailbox.gob"
+#line 779 "src/mn-mailbox.gob"
 	
     char *real_uri;
     char *scheme;
@@ -1675,20 +1818,20 @@ mn_mailbox_new_from_obsolete_uri (const char * uri)
 
     return self;
   }}
-#line 1679 "mn-mailbox.c"
+#line 1822 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 709 "src/mn-mailbox.gob"
+#line 811 "src/mn-mailbox.gob"
 static MNMailbox * 
 mn_mailbox_parse_obsolete_uri (const char * uri)
 {
-#line 1686 "mn-mailbox.c"
+#line 1829 "mn-mailbox.c"
 #define __GOB_FUNCTION__ "MN:Mailbox::parse_obsolete_uri"
-#line 709 "src/mn-mailbox.gob"
+#line 811 "src/mn-mailbox.gob"
 	g_return_val_if_fail (uri != NULL, (MNMailbox * )0);
-#line 1690 "mn-mailbox.c"
+#line 1833 "mn-mailbox.c"
 {
-#line 711 "src/mn-mailbox.gob"
+#line 813 "src/mn-mailbox.gob"
 	
     int len;
     int buflen;
@@ -1910,17 +2053,17 @@ mn_mailbox_parse_obsolete_uri (const char * uri)
 
     return self;
   }}
-#line 1914 "mn-mailbox.c"
+#line 2057 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 933 "src/mn-mailbox.gob"
+#line 1035 "src/mn-mailbox.gob"
 static gboolean 
 mn_mailbox_check_timeout_cb (gpointer data)
 {
-#line 1921 "mn-mailbox.c"
+#line 2064 "mn-mailbox.c"
 #define __GOB_FUNCTION__ "MN:Mailbox::check_timeout_cb"
 {
-#line 935 "src/mn-mailbox.gob"
+#line 1037 "src/mn-mailbox.gob"
 	
     Self *self = data;
 
@@ -1928,22 +2071,22 @@ mn_mailbox_check_timeout_cb (gpointer data)
 
     return TRUE;		/* continue */
   }}
-#line 1932 "mn-mailbox.c"
+#line 2075 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 943 "src/mn-mailbox.gob"
+#line 1045 "src/mn-mailbox.gob"
 static gboolean 
 mn_mailbox_validate (MNMailbox * self, GError ** err)
 {
-#line 1939 "mn-mailbox.c"
+#line 2082 "mn-mailbox.c"
 #define __GOB_FUNCTION__ "MN:Mailbox::validate"
-#line 943 "src/mn-mailbox.gob"
+#line 1045 "src/mn-mailbox.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 943 "src/mn-mailbox.gob"
+#line 1045 "src/mn-mailbox.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX (self), (gboolean )0);
-#line 1945 "mn-mailbox.c"
+#line 2088 "mn-mailbox.c"
 {
-#line 945 "src/mn-mailbox.gob"
+#line 1047 "src/mn-mailbox.gob"
 	
     GParamSpec **properties;
     unsigned int n_properties;
@@ -1979,7 +2122,7 @@ mn_mailbox_validate (MNMailbox * self, GError ** err)
 
     return status;
   }}
-#line 1983 "mn-mailbox.c"
+#line 2126 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
 /**
@@ -1993,30 +2136,30 @@ mn_mailbox_validate (MNMailbox * self, GError ** err)
  * properties dialog. That would not be possible from init(), since
  * these properties are only set after the mailbox is constructed.
  **/
-#line 992 "src/mn-mailbox.gob"
+#line 1094 "src/mn-mailbox.gob"
 void 
 mn_mailbox_seal (MNMailbox * self)
 {
-#line 2001 "mn-mailbox.c"
+#line 2144 "mn-mailbox.c"
 	MNMailboxClass *klass;
-#line 992 "src/mn-mailbox.gob"
+#line 1094 "src/mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 992 "src/mn-mailbox.gob"
+#line 1094 "src/mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 2007 "mn-mailbox.c"
+#line 2150 "mn-mailbox.c"
 	klass = MN_MAILBOX_GET_CLASS(self);
 
 	if(klass->seal)
 		(*klass->seal)(self);
 }
-#line 992 "src/mn-mailbox.gob"
+#line 1094 "src/mn-mailbox.gob"
 static void 
 ___real_mn_mailbox_seal (MNMailbox * self G_GNUC_UNUSED)
 {
-#line 2017 "mn-mailbox.c"
+#line 2160 "mn-mailbox.c"
 #define __GOB_FUNCTION__ "MN:Mailbox::seal"
 {
-#line 994 "src/mn-mailbox.gob"
+#line 1096 "src/mn-mailbox.gob"
 	
     if (self->name)
       {
@@ -2028,22 +2171,22 @@ ___real_mn_mailbox_seal (MNMailbox * self G_GNUC_UNUSED)
       ? self->check_delay
       : SELF_GET_CLASS(self)->default_check_delay;
   }}
-#line 2032 "mn-mailbox.c"
+#line 2175 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1007 "src/mn-mailbox.gob"
+#line 1109 "src/mn-mailbox.gob"
 static MNMailbox * 
 mn_mailbox_parse_uri (MNMailbox * self, const char * uri)
 {
-#line 2039 "mn-mailbox.c"
+#line 2182 "mn-mailbox.c"
 	MNMailboxClass *klass;
-#line 1007 "src/mn-mailbox.gob"
+#line 1109 "src/mn-mailbox.gob"
 	g_return_val_if_fail (self != NULL, (MNMailbox * )0);
-#line 1007 "src/mn-mailbox.gob"
+#line 1109 "src/mn-mailbox.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX (self), (MNMailbox * )0);
-#line 1007 "src/mn-mailbox.gob"
+#line 1109 "src/mn-mailbox.gob"
 	g_return_val_if_fail (uri != NULL, (MNMailbox * )0);
-#line 2047 "mn-mailbox.c"
+#line 2190 "mn-mailbox.c"
 	klass = MN_MAILBOX_GET_CLASS(self);
 
 	if(klass->parse_uri)
@@ -2052,50 +2195,50 @@ mn_mailbox_parse_uri (MNMailbox * self, const char * uri)
 		return (MNMailbox * )(0);
 }
 
-#line 1010 "src/mn-mailbox.gob"
+#line 1112 "src/mn-mailbox.gob"
 void 
 mn_mailbox_check (MNMailbox * self)
 {
-#line 2060 "mn-mailbox.c"
+#line 2203 "mn-mailbox.c"
 	MNMailboxClass *klass;
-#line 1010 "src/mn-mailbox.gob"
+#line 1112 "src/mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 1010 "src/mn-mailbox.gob"
+#line 1112 "src/mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 2066 "mn-mailbox.c"
+#line 2209 "mn-mailbox.c"
 	klass = MN_MAILBOX_GET_CLASS(self);
 
 	if(klass->check)
 		(*klass->check)(self);
 }
-#line 1010 "src/mn-mailbox.gob"
+#line 1112 "src/mn-mailbox.gob"
 static void 
 ___real_mn_mailbox_check (MNMailbox * self G_GNUC_UNUSED)
 {
-#line 2076 "mn-mailbox.c"
+#line 2219 "mn-mailbox.c"
 #define __GOB_FUNCTION__ "MN:Mailbox::check"
 {
-#line 1012 "src/mn-mailbox.gob"
+#line 1114 "src/mn-mailbox.gob"
 	
     g_assert(self_get_active(self) == TRUE);
     g_assert(selfp->checking_enabled == TRUE);
   }}
-#line 2084 "mn-mailbox.c"
+#line 2227 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1026 "src/mn-mailbox.gob"
+#line 1128 "src/mn-mailbox.gob"
 void 
 mn_mailbox_enable_checking (MNMailbox * self)
 {
-#line 2091 "mn-mailbox.c"
+#line 2234 "mn-mailbox.c"
 #define __GOB_FUNCTION__ "MN:Mailbox::enable_checking"
-#line 1026 "src/mn-mailbox.gob"
+#line 1128 "src/mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 1026 "src/mn-mailbox.gob"
+#line 1128 "src/mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 2097 "mn-mailbox.c"
+#line 2240 "mn-mailbox.c"
 {
-#line 1028 "src/mn-mailbox.gob"
+#line 1130 "src/mn-mailbox.gob"
 	
     selfp->checking_enabled = TRUE;
     g_object_notify(G_OBJECT(self), "manually-checkable");
@@ -2103,24 +2246,24 @@ mn_mailbox_enable_checking (MNMailbox * self)
     self_update_check_timeout(self);
     self_check(self);
   }}
-#line 2107 "mn-mailbox.c"
+#line 2250 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1037 "src/mn-mailbox.gob"
+#line 1139 "src/mn-mailbox.gob"
 void 
 mn_mailbox_notice (MNMailbox * self, const char * format, ...)
 {
-#line 2114 "mn-mailbox.c"
+#line 2257 "mn-mailbox.c"
 #define __GOB_FUNCTION__ "MN:Mailbox::notice"
-#line 1037 "src/mn-mailbox.gob"
+#line 1139 "src/mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 1037 "src/mn-mailbox.gob"
+#line 1139 "src/mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 1037 "src/mn-mailbox.gob"
+#line 1139 "src/mn-mailbox.gob"
 	g_return_if_fail (format != NULL);
-#line 2122 "mn-mailbox.c"
+#line 2265 "mn-mailbox.c"
 {
-#line 1039 "src/mn-mailbox.gob"
+#line 1141 "src/mn-mailbox.gob"
 	
     char *message;
 
@@ -2135,24 +2278,24 @@ mn_mailbox_notice (MNMailbox * self, const char * format, ...)
     mn_info(_("%s: %s"), self->runtime_name, message);
     g_free(message);
   }}
-#line 2139 "mn-mailbox.c"
+#line 2282 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1055 "src/mn-mailbox.gob"
+#line 1157 "src/mn-mailbox.gob"
 void 
 mn_mailbox_warning (MNMailbox * self, const char * format, ...)
 {
-#line 2146 "mn-mailbox.c"
+#line 2289 "mn-mailbox.c"
 #define __GOB_FUNCTION__ "MN:Mailbox::warning"
-#line 1055 "src/mn-mailbox.gob"
+#line 1157 "src/mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 1055 "src/mn-mailbox.gob"
+#line 1157 "src/mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 1055 "src/mn-mailbox.gob"
+#line 1157 "src/mn-mailbox.gob"
 	g_return_if_fail (format != NULL);
-#line 2154 "mn-mailbox.c"
+#line 2297 "mn-mailbox.c"
 {
-#line 1057 "src/mn-mailbox.gob"
+#line 1159 "src/mn-mailbox.gob"
 	
     char *message;
 
@@ -2167,127 +2310,45 @@ mn_mailbox_warning (MNMailbox * self, const char * format, ...)
     g_warning(_("%s: %s"), self->runtime_name, message);
     g_free(message);
   }}
-#line 2171 "mn-mailbox.c"
+#line 2314 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1072 "src/mn-mailbox.gob"
+#line 1174 "src/mn-mailbox.gob"
 MNMessage * 
 mn_mailbox_get_message_from_mid (MNMailbox * self, const char * mid)
 {
-#line 2178 "mn-mailbox.c"
+#line 2321 "mn-mailbox.c"
 #define __GOB_FUNCTION__ "MN:Mailbox::get_message_from_mid"
-#line 1072 "src/mn-mailbox.gob"
+#line 1174 "src/mn-mailbox.gob"
 	g_return_val_if_fail (self != NULL, (MNMessage * )0);
-#line 1072 "src/mn-mailbox.gob"
+#line 1174 "src/mn-mailbox.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX (self), (MNMessage * )0);
-#line 1072 "src/mn-mailbox.gob"
+#line 1174 "src/mn-mailbox.gob"
 	g_return_val_if_fail (mid != NULL, (MNMessage * )0);
-#line 2186 "mn-mailbox.c"
+#line 2329 "mn-mailbox.c"
 {
-#line 1074 "src/mn-mailbox.gob"
+#line 1176 "src/mn-mailbox.gob"
 	
-    return g_hash_table_lookup(selfp->all_messages_mid_hash_table, mid);
+    return g_hash_table_lookup(selfp->all_messages_by_mid, mid);
   }}
-#line 2192 "mn-mailbox.c"
+#line 2335 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1078 "src/mn-mailbox.gob"
-static void 
-mn_mailbox_consider_as_read_real (MNMailbox * self, MNMessage * message)
-{
-#line 2199 "mn-mailbox.c"
-#define __GOB_FUNCTION__ "MN:Mailbox::consider_as_read_real"
-#line 1078 "src/mn-mailbox.gob"
-	g_return_if_fail (self != NULL);
-#line 1078 "src/mn-mailbox.gob"
-	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 1078 "src/mn-mailbox.gob"
-	g_return_if_fail (message != NULL);
-#line 1078 "src/mn-mailbox.gob"
-	g_return_if_fail (MN_IS_MESSAGE (message));
-#line 2209 "mn-mailbox.c"
-{
-#line 1080 "src/mn-mailbox.gob"
-	
-    g_hash_table_replace(selfp->all_messages_considered_as_read, message->id, g_object_ref(message));
-  }}
-#line 2215 "mn-mailbox.c"
-#undef __GOB_FUNCTION__
-
-#line 1094 "src/mn-mailbox.gob"
-void 
-mn_mailbox_consider_as_read (MNMessage * message)
-{
-#line 2222 "mn-mailbox.c"
-#define __GOB_FUNCTION__ "MN:Mailbox::consider_as_read"
-#line 1094 "src/mn-mailbox.gob"
-	g_return_if_fail (message != NULL);
-#line 1094 "src/mn-mailbox.gob"
-	g_return_if_fail (MN_IS_MESSAGE (message));
-#line 2228 "mn-mailbox.c"
-{
-#line 1096 "src/mn-mailbox.gob"
-	
-    Self *self;
-
-    self = message->mailbox;
-    g_assert(self != NULL);
-
-    self_consider_as_read_real(self, message);
-
-    self_filter_messages(self);
-  }}
-#line 2241 "mn-mailbox.c"
-#undef __GOB_FUNCTION__
-
-#line 1112 "src/mn-mailbox.gob"
-void 
-mn_mailbox_consider_as_read_list (GSList * messages)
-{
-#line 2248 "mn-mailbox.c"
-#define __GOB_FUNCTION__ "MN:Mailbox::consider_as_read_list"
-{
-#line 1114 "src/mn-mailbox.gob"
-	
-    Self *self = NULL;
-    GSList *l;
-
-    MN_LIST_FOREACH(l, messages)
-      {
-	MNMessage *message = l->data;
-
-	if (self)
-	  g_assert(self == message->mailbox);
-	else
-	  {
-	    self = message->mailbox;
-	    g_assert(self != NULL);
-	  }
-
-	self_consider_as_read_real(self, message);
-      }
-
-    if (self)			/* non empty list */
-      self_filter_messages(self);
-  }}
-#line 2274 "mn-mailbox.c"
-#undef __GOB_FUNCTION__
-
-#line 1137 "src/mn-mailbox.gob"
+#line 1180 "src/mn-mailbox.gob"
 char * 
 mn_mailbox_get_command (MNMailbox * self, const char * id)
 {
-#line 2281 "mn-mailbox.c"
+#line 2342 "mn-mailbox.c"
 #define __GOB_FUNCTION__ "MN:Mailbox::get_command"
-#line 1137 "src/mn-mailbox.gob"
+#line 1180 "src/mn-mailbox.gob"
 	g_return_val_if_fail (self != NULL, (char * )0);
-#line 1137 "src/mn-mailbox.gob"
+#line 1180 "src/mn-mailbox.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX (self), (char * )0);
-#line 1137 "src/mn-mailbox.gob"
+#line 1180 "src/mn-mailbox.gob"
 	g_return_val_if_fail (id != NULL, (char * )0);
-#line 2289 "mn-mailbox.c"
+#line 2350 "mn-mailbox.c"
 {
-#line 1139 "src/mn-mailbox.gob"
+#line 1182 "src/mn-mailbox.gob"
 	
     char *prop;
     char *command;
@@ -2304,24 +2365,24 @@ mn_mailbox_get_command (MNMailbox * self, const char * id)
 
     return command;
   }}
-#line 2308 "mn-mailbox.c"
+#line 2369 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1156 "src/mn-mailbox.gob"
+#line 1199 "src/mn-mailbox.gob"
 gboolean 
 mn_mailbox_has_command (MNMailbox * self, const char * id)
 {
-#line 2315 "mn-mailbox.c"
+#line 2376 "mn-mailbox.c"
 #define __GOB_FUNCTION__ "MN:Mailbox::has_command"
-#line 1156 "src/mn-mailbox.gob"
+#line 1199 "src/mn-mailbox.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 1156 "src/mn-mailbox.gob"
+#line 1199 "src/mn-mailbox.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX (self), (gboolean )0);
-#line 1156 "src/mn-mailbox.gob"
+#line 1199 "src/mn-mailbox.gob"
 	g_return_val_if_fail (id != NULL, (gboolean )0);
-#line 2323 "mn-mailbox.c"
+#line 2384 "mn-mailbox.c"
 {
-#line 1158 "src/mn-mailbox.gob"
+#line 1201 "src/mn-mailbox.gob"
 	
     char *command;
     gboolean has;
@@ -2332,5 +2393,5 @@ mn_mailbox_has_command (MNMailbox * self, const char * id)
 
     return has;
   }}
-#line 2336 "mn-mailbox.c"
+#line 2397 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
diff --git a/build/src/mn-mailbox.h b/build/src/mn-mailbox.h
@@ -58,7 +58,7 @@ struct _MNMailbox {
 	char * format;
 	int runtime_check_delay;
 	int check_delay;
-	GPtrArray * messages;
+	GHashTable * messages;
 	time_t timestamp;
 	char * error;
 	/*< private >*/
@@ -87,94 +87,88 @@ struct _MNMailboxClass {
  * Public methods
  */
 GType	mn_mailbox_get_type	(void) G_GNUC_CONST;
-#line 124 "src/mn-mailbox.gob"
+#line 135 "src/mn-mailbox.gob"
 gboolean 	mn_mailbox_get_active	(MNMailbox * self);
 #line 93 "mn-mailbox.h"
-#line 143 "src/mn-mailbox.gob"
+#line 154 "src/mn-mailbox.gob"
 void 	mn_mailbox_added	(MNMailbox * self);
 #line 96 "mn-mailbox.h"
-#line 159 "src/mn-mailbox.gob"
+#line 170 "src/mn-mailbox.gob"
 void 	mn_mailbox_removed	(MNMailbox * self);
 #line 99 "mn-mailbox.h"
-#line 185 "src/mn-mailbox.gob"
+#line 210 "src/mn-mailbox.gob"
 gchar * 	mn_mailbox_get_stock_id	(MNMailbox * self);
 #line 102 "mn-mailbox.h"
-#line 185 "src/mn-mailbox.gob"
+#line 210 "src/mn-mailbox.gob"
 void 	mn_mailbox_set_stock_id	(MNMailbox * self,
 					gchar * val);
 #line 106 "mn-mailbox.h"
-#line 188 "src/mn-mailbox.gob"
+#line 213 "src/mn-mailbox.gob"
 gchar * 	mn_mailbox_get_format	(MNMailbox * self);
 #line 109 "mn-mailbox.h"
-#line 188 "src/mn-mailbox.gob"
+#line 213 "src/mn-mailbox.gob"
 void 	mn_mailbox_set_format	(MNMailbox * self,
 					gchar * val);
 #line 113 "mn-mailbox.h"
-#line 219 "src/mn-mailbox.gob"
+#line 244 "src/mn-mailbox.gob"
 gboolean 	mn_mailbox_get_poll	(MNMailbox * self);
 #line 116 "mn-mailbox.h"
-#line 202 "src/mn-mailbox.gob"
+#line 227 "src/mn-mailbox.gob"
 void 	mn_mailbox_set_poll	(MNMailbox * self,
 					gboolean val);
 #line 120 "mn-mailbox.h"
-#line 230 "src/mn-mailbox.gob"
+#line 255 "src/mn-mailbox.gob"
 gboolean 	mn_mailbox_get_manually_checkable	(MNMailbox * self);
 #line 123 "mn-mailbox.h"
-#line 434 "src/mn-mailbox.gob"
+#line 522 "src/mn-mailbox.gob"
 void 	mn_mailbox_init_types	(void);
 #line 126 "mn-mailbox.h"
-#line 470 "src/mn-mailbox.gob"
+#line 558 "src/mn-mailbox.gob"
 MNMailboxClass * 	mn_mailbox_get_class_from_name	(const char * type);
 #line 129 "mn-mailbox.h"
-#line 489 "src/mn-mailbox.gob"
+#line 577 "src/mn-mailbox.gob"
 GType 	mn_mailbox_get_type_from_name	(const char * type);
 #line 132 "mn-mailbox.h"
-#line 536 "src/mn-mailbox.gob"
+#line 638 "src/mn-mailbox.gob"
 MNMailbox * 	mn_mailbox_new	(const char * type,
 					...) G_GNUC_NULL_TERMINATED;
 #line 136 "mn-mailbox.h"
-#line 556 "src/mn-mailbox.gob"
+#line 658 "src/mn-mailbox.gob"
 MNMailbox * 	mn_mailbox_new_from_xml_node	(xmlNode * node,
 					GError ** err);
 #line 140 "mn-mailbox.h"
-#line 589 "src/mn-mailbox.gob"
+#line 691 "src/mn-mailbox.gob"
 xmlNode * 	mn_mailbox_xml_node_new	(MNMailbox * self);
 #line 143 "mn-mailbox.h"
-#line 601 "src/mn-mailbox.gob"
+#line 703 "src/mn-mailbox.gob"
 MNMailbox * 	mn_mailbox_new_from_uri	(const char * uri);
 #line 146 "mn-mailbox.h"
-#line 622 "src/mn-mailbox.gob"
+#line 724 "src/mn-mailbox.gob"
 MNMailbox * 	mn_mailbox_new_from_configuration	(MNMailboxConfiguration * config);
 #line 149 "mn-mailbox.h"
-#line 628 "src/mn-mailbox.gob"
+#line 730 "src/mn-mailbox.gob"
 MNMailboxConfiguration * 	mn_mailbox_get_configuration	(MNMailbox * self);
 #line 152 "mn-mailbox.h"
-#line 663 "src/mn-mailbox.gob"
+#line 765 "src/mn-mailbox.gob"
 void 	mn_mailbox_configuration_free	(MNMailboxConfiguration * config);
 #line 155 "mn-mailbox.h"
-#line 675 "src/mn-mailbox.gob"
+#line 777 "src/mn-mailbox.gob"
 MNMailbox * 	mn_mailbox_new_from_obsolete_uri	(const char * uri);
 #line 158 "mn-mailbox.h"
-#line 992 "src/mn-mailbox.gob"
+#line 1094 "src/mn-mailbox.gob"
 void 	mn_mailbox_seal	(MNMailbox * self);
 #line 161 "mn-mailbox.h"
-#line 1010 "src/mn-mailbox.gob"
+#line 1112 "src/mn-mailbox.gob"
 void 	mn_mailbox_check	(MNMailbox * self);
 #line 164 "mn-mailbox.h"
-#line 1094 "src/mn-mailbox.gob"
-void 	mn_mailbox_consider_as_read	(MNMessage * message);
-#line 167 "mn-mailbox.h"
-#line 1112 "src/mn-mailbox.gob"
-void 	mn_mailbox_consider_as_read_list	(GSList * messages);
-#line 170 "mn-mailbox.h"
-#line 1137 "src/mn-mailbox.gob"
+#line 1180 "src/mn-mailbox.gob"
 char * 	mn_mailbox_get_command	(MNMailbox * self,
 					const char * id);
-#line 174 "mn-mailbox.h"
-#line 1156 "src/mn-mailbox.gob"
+#line 168 "mn-mailbox.h"
+#line 1199 "src/mn-mailbox.gob"
 gboolean 	mn_mailbox_has_command	(MNMailbox * self,
 					const char * id);
-#line 178 "mn-mailbox.h"
+#line 172 "mn-mailbox.h"
 
 /*
  * Signal connection wrapper macros
@@ -225,7 +219,7 @@ gboolean 	mn_mailbox_has_command	(MNMailbox * self,
 #define MN_MAILBOX_PROP_POLL(arg)    	"poll", __extension__ ({gboolean z = (arg); z;})
 #define MN_MAILBOX_GET_PROP_POLL(arg)	"poll", __extension__ ({gboolean *z = (arg); z;})
 #define MN_MAILBOX_GET_PROP_MANUALLY_CHECKABLE(arg)	"manually_checkable", __extension__ ({gboolean *z = (arg); z;})
-#define MN_MAILBOX_GET_PROP_MESSAGES(arg)	"messages", __extension__ ({GPtrArray * *z = (arg); z;})
+#define MN_MAILBOX_GET_PROP_MESSAGES(arg)	"messages", __extension__ ({GHashTable * *z = (arg); z;})
 #define MN_MAILBOX_PROP_ERROR(arg)    	"error", __extension__ ({gchar *z = (arg); z;})
 #define MN_MAILBOX_GET_PROP_ERROR(arg)	"error", __extension__ ({gchar **z = (arg); z;})
 #else /* __GNUC__ && !__STRICT_ANSI__ */
@@ -248,7 +242,7 @@ gboolean 	mn_mailbox_has_command	(MNMailbox * self,
 #define MN_MAILBOX_PROP_POLL(arg)    	"poll",(gboolean )(arg)
 #define MN_MAILBOX_GET_PROP_POLL(arg)	"poll",(gboolean *)(arg)
 #define MN_MAILBOX_GET_PROP_MANUALLY_CHECKABLE(arg)	"manually_checkable",(gboolean *)(arg)
-#define MN_MAILBOX_GET_PROP_MESSAGES(arg)	"messages",(GPtrArray * *)(arg)
+#define MN_MAILBOX_GET_PROP_MESSAGES(arg)	"messages",(GHashTable * *)(arg)
 #define MN_MAILBOX_PROP_ERROR(arg)    	"error",(gchar *)(arg)
 #define MN_MAILBOX_GET_PROP_ERROR(arg)	"error",(gchar **)(arg)
 #endif /* __GNUC__ && !__STRICT_ANSI__ */
diff --git a/build/src/mn-mailboxes.c b/build/src/mn-mailboxes.c
@@ -78,60 +78,63 @@ static void ___real_mn_mailboxes_messages_changed (MNMailboxes * self, gboolean 
 #line 135 "src/mn-mailboxes.gob"
 static void mn_mailboxes_messages_changed (MNMailboxes * self, gboolean has_new);
 #line 81 "mn-mailboxes.c"
-#line 162 "src/mn-mailboxes.gob"
-static int mn_mailboxes_messages_sort_cb (MNMessage ** a, MNMessage ** b);
+#line 155 "src/mn-mailboxes.gob"
+static void mn_mailboxes_messages_changed_cb (const char * id, MNMessage * message, Self * self);
 #line 84 "mn-mailboxes.c"
-#line 178 "src/mn-mailboxes.gob"
-static void mn_mailboxes_error_changed (MNMailboxes * self);
+#line 164 "src/mn-mailboxes.gob"
+static int mn_mailboxes_messages_sort_cb (MNMessage ** a, MNMessage ** b);
 #line 87 "mn-mailboxes.c"
-#line 201 "src/mn-mailboxes.gob"
-static void mn_mailboxes_init (MNMailboxes * self);
+#line 180 "src/mn-mailboxes.gob"
+static void mn_mailboxes_error_changed (MNMailboxes * self);
 #line 90 "mn-mailboxes.c"
-#line 256 "src/mn-mailboxes.gob"
-static void mn_mailboxes_finalize (MNMailboxes * self);
+#line 203 "src/mn-mailboxes.gob"
+static void mn_mailboxes_init (MNMailboxes * self);
 #line 93 "mn-mailboxes.c"
-#line 274 "src/mn-mailboxes.gob"
-static void mn_mailboxes_connect_mailbox_signals (MNMailboxes * self, MNMailbox * mailbox);
+#line 258 "src/mn-mailboxes.gob"
+static void mn_mailboxes_finalize (MNMailboxes * self);
 #line 96 "mn-mailboxes.c"
-#line 285 "src/mn-mailboxes.gob"
-static void mn_mailboxes_disconnect_mailbox_signals (MNMailboxes * self, MNMailbox * mailbox);
+#line 276 "src/mn-mailboxes.gob"
+static void mn_mailboxes_connect_mailbox_signals (MNMailboxes * self, MNMailbox * mailbox);
 #line 99 "mn-mailboxes.c"
-#line 296 "src/mn-mailboxes.gob"
-static void mn_mailboxes_load (MNMailboxes * self);
+#line 287 "src/mn-mailboxes.gob"
+static void mn_mailboxes_disconnect_mailbox_signals (MNMailboxes * self, MNMailbox * mailbox);
 #line 102 "mn-mailboxes.c"
-#line 312 "src/mn-mailboxes.gob"
-static void mn_mailboxes_add_error (GString ** errors, int * n_errors, const char * format, ...) G_GNUC_PRINTF(3, 4);
+#line 298 "src/mn-mailboxes.gob"
+static void mn_mailboxes_load (MNMailboxes * self);
 #line 105 "mn-mailboxes.c"
-#line 332 "src/mn-mailboxes.gob"
-static gboolean mn_mailboxes_load_real (MNMailboxes * self, GError ** err);
+#line 314 "src/mn-mailboxes.gob"
+static void mn_mailboxes_add_error (GString ** errors, int * n_errors, const char * format, ...) G_GNUC_PRINTF(3, 4);
 #line 108 "mn-mailboxes.c"
-#line 417 "src/mn-mailboxes.gob"
-static void mn_mailboxes_save (MNMailboxes * self);
+#line 334 "src/mn-mailboxes.gob"
+static gboolean mn_mailboxes_load_real (MNMailboxes * self, GError ** err);
 #line 111 "mn-mailboxes.c"
-#line 429 "src/mn-mailboxes.gob"
-static gboolean mn_mailboxes_save_real (MNMailboxes * self, GError ** err);
+#line 419 "src/mn-mailboxes.gob"
+static void mn_mailboxes_save (MNMailboxes * self);
 #line 114 "mn-mailboxes.c"
-#line 543 "src/mn-mailboxes.gob"
-static void mn_mailboxes_mailbox_messages_changed_h (MNMailbox * mailbox, gboolean has_new, gpointer user_data);
+#line 431 "src/mn-mailboxes.gob"
+static gboolean mn_mailboxes_save_real (MNMailboxes * self, GError ** err);
 #line 117 "mn-mailboxes.c"
-#line 556 "src/mn-mailboxes.gob"
-static void mn_mailboxes_mailbox_notify_h (GObject * object, GParamSpec * pspec, gpointer user_data);
+#line 545 "src/mn-mailboxes.gob"
+static void mn_mailboxes_mailbox_messages_changed_h (MNMailbox * mailbox, gboolean has_new, gpointer user_data);
 #line 120 "mn-mailboxes.c"
-#line 567 "src/mn-mailboxes.gob"
-static void mn_mailboxes_mailbox_notify_error_h (GObject * object, GParamSpec * pspec, gpointer user_data);
+#line 561 "src/mn-mailboxes.gob"
+static void mn_mailboxes_mailbox_notify_h (GObject * object, GParamSpec * pspec, gpointer user_data);
 #line 123 "mn-mailboxes.c"
-#line 581 "src/mn-mailboxes.gob"
-static void mn_mailboxes_mailbox_notify_manually_checkable_h (GObject * object, GParamSpec * pspec, gpointer user_data);
+#line 572 "src/mn-mailboxes.gob"
+static void mn_mailboxes_mailbox_notify_error_h (GObject * object, GParamSpec * pspec, gpointer user_data);
 #line 126 "mn-mailboxes.c"
-#line 606 "src/mn-mailboxes.gob"
-static void mn_mailboxes_add_real (MNMailboxes * self, MNMailbox * mailbox);
+#line 586 "src/mn-mailboxes.gob"
+static void mn_mailboxes_mailbox_notify_manually_checkable_h (GObject * object, GParamSpec * pspec, gpointer user_data);
 #line 129 "mn-mailboxes.c"
-#line 634 "src/mn-mailboxes.gob"
-static void mn_mailboxes_remove_real (MNMailboxes * self, MNMailbox * mailbox);
+#line 611 "src/mn-mailboxes.gob"
+static void mn_mailboxes_add_real (MNMailboxes * self, MNMailbox * mailbox);
 #line 132 "mn-mailboxes.c"
-#line 661 "src/mn-mailboxes.gob"
-static gboolean mn_mailboxes_queue_idle_cb (gpointer data);
+#line 639 "src/mn-mailboxes.gob"
+static void mn_mailboxes_remove_real (MNMailboxes * self, MNMailbox * mailbox);
 #line 135 "mn-mailboxes.c"
+#line 666 "src/mn-mailboxes.gob"
+static gboolean mn_mailboxes_queue_idle_cb (gpointer data);
+#line 138 "mn-mailboxes.c"
 
 /*
  * Signal connection wrapper macro shortcuts
@@ -278,6 +281,7 @@ static GObjectClass *parent_class = NULL;
 #define self_mailbox_notify mn_mailboxes_mailbox_notify
 #define self_list_changed mn_mailboxes_list_changed
 #define self_messages_changed mn_mailboxes_messages_changed
+#define self_messages_changed_cb mn_mailboxes_messages_changed_cb
 #define self_messages_sort_cb mn_mailboxes_messages_sort_cb
 #define self_error_changed mn_mailboxes_error_changed
 #define self_get_manually_checkable mn_mailboxes_get_manually_checkable
@@ -351,23 +355,23 @@ ___finalize(GObject *obj_self)
 #define __GOB_FUNCTION__ "MN:Mailboxes::finalize"
 	MNMailboxes *self G_GNUC_UNUSED = MN_MAILBOXES (obj_self);
 	gpointer priv G_GNUC_UNUSED = self->_priv;
-#line 256 "src/mn-mailboxes.gob"
+#line 258 "src/mn-mailboxes.gob"
 	mn_mailboxes_finalize (self);
-#line 357 "mn-mailboxes.c"
+#line 361 "mn-mailboxes.c"
 	if(G_OBJECT_CLASS(parent_class)->finalize) \
 		(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
 #line 47 "src/mn-mailboxes.gob"
 	if(self->messages) { mn_g_object_ptr_array_free ((gpointer) self->messages); self->messages = NULL; }
-#line 362 "mn-mailboxes.c"
+#line 366 "mn-mailboxes.c"
 #line 50 "src/mn-mailboxes.gob"
 	if(self->messages_hash_table) { g_hash_table_destroy ((gpointer) self->messages_hash_table); self->messages_hash_table = NULL; }
-#line 365 "mn-mailboxes.c"
+#line 369 "mn-mailboxes.c"
 #line 52 "src/mn-mailboxes.gob"
 	if(self->_priv->add_queue) { mn_g_object_slist_free ((gpointer) self->_priv->add_queue); self->_priv->add_queue = NULL; }
-#line 368 "mn-mailboxes.c"
+#line 372 "mn-mailboxes.c"
 #line 53 "src/mn-mailboxes.gob"
 	if(self->_priv->remove_queue) { mn_g_object_slist_free ((gpointer) self->_priv->remove_queue); self->_priv->remove_queue = NULL; }
-#line 371 "mn-mailboxes.c"
+#line 375 "mn-mailboxes.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -451,13 +455,13 @@ mn_mailboxes_class_init (MNMailboxesClass * c G_GNUC_UNUSED)
 	c->mailbox_added = ___real_mn_mailboxes_mailbox_added;
 #line 87 "src/mn-mailboxes.gob"
 	c->mailbox_removed = ___real_mn_mailboxes_mailbox_removed;
-#line 455 "mn-mailboxes.c"
+#line 459 "mn-mailboxes.c"
 	c->mailbox_notify = NULL;
 #line 114 "src/mn-mailboxes.gob"
 	c->list_changed = ___real_mn_mailboxes_list_changed;
 #line 135 "src/mn-mailboxes.gob"
 	c->messages_changed = ___real_mn_mailboxes_messages_changed;
-#line 461 "mn-mailboxes.c"
+#line 465 "mn-mailboxes.c"
 	c->error_changed = NULL;
 	g_object_class->finalize = ___finalize;
 	g_object_class->get_property = ___object_get_property;
@@ -476,21 +480,21 @@ mn_mailboxes_class_init (MNMailboxesClass * c G_GNUC_UNUSED)
     }
 }
 #undef __GOB_FUNCTION__
-#line 201 "src/mn-mailboxes.gob"
+#line 203 "src/mn-mailboxes.gob"
 static void 
 mn_mailboxes_init (MNMailboxes * self G_GNUC_UNUSED)
 {
-#line 484 "mn-mailboxes.c"
+#line 488 "mn-mailboxes.c"
 #define __GOB_FUNCTION__ "MN:Mailboxes::init"
 	self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_MAILBOXES,MNMailboxesPrivate);
 #line 47 "src/mn-mailboxes.gob"
 	self->messages = g_ptr_array_new();
-#line 489 "mn-mailboxes.c"
+#line 493 "mn-mailboxes.c"
 #line 50 "src/mn-mailboxes.gob"
 	self->messages_hash_table = g_hash_table_new(g_str_hash, g_str_equal);
-#line 492 "mn-mailboxes.c"
+#line 496 "mn-mailboxes.c"
  {
-#line 202 "src/mn-mailboxes.gob"
+#line 204 "src/mn-mailboxes.gob"
 
     char *filename;
     gboolean exists;
@@ -544,7 +548,7 @@ mn_mailboxes_init (MNMailboxes * self G_GNUC_UNUSED)
 	mn_g_slist_free_deep(gconf_mailboxes);
       }
   
-#line 548 "mn-mailboxes.c"
+#line 552 "mn-mailboxes.c"
  }
 }
 #undef __GOB_FUNCTION__
@@ -563,7 +567,7 @@ ___object_get_property (GObject *object,
 	switch (property_id) {
 	case PROP_MANUALLY_CHECKABLE:
 		{
-#line 183 "src/mn-mailboxes.gob"
+#line 185 "src/mn-mailboxes.gob"
 
       GList *l;
       gboolean value = FALSE;
@@ -581,7 +585,7 @@ ___object_get_property (GObject *object,
 
       g_value_set_boolean(VAL, value);
     
-#line 585 "mn-mailboxes.c"
+#line 589 "mn-mailboxes.c"
 		}
 		break;
 	default:
@@ -601,7 +605,7 @@ ___object_get_property (GObject *object,
 static void 
 mn_mailboxes_mailbox_added (MNMailboxes * self, MNMailbox * mailbox)
 {
-#line 605 "mn-mailboxes.c"
+#line 609 "mn-mailboxes.c"
 	GValue ___param_values[2];
 	GValue ___return_val;
 
@@ -616,7 +620,7 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_return_if_fail (mailbox != NULL);
 #line 70 "src/mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 620 "mn-mailboxes.c"
+#line 624 "mn-mailboxes.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -638,7 +642,7 @@ memset (&___param_values, 0, sizeof (___param_values));
 static void 
 ___real_mn_mailboxes_mailbox_added (MNMailboxes * self, MNMailbox * mailbox)
 {
-#line 642 "mn-mailboxes.c"
+#line 646 "mn-mailboxes.c"
 #define __GOB_FUNCTION__ "MN:Mailboxes::mailbox_added"
 {
 #line 72 "src/mn-mailboxes.gob"
@@ -648,14 +652,14 @@ ___real_mn_mailboxes_mailbox_added (MNMailboxes * self, MNMailbox * mailbox)
     /* emit the "added" signal on the mailbox */
     mn_mailbox_added(mailbox);
   }}
-#line 652 "mn-mailboxes.c"
+#line 656 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
 #line 87 "src/mn-mailboxes.gob"
 static void 
 mn_mailboxes_mailbox_removed (MNMailboxes * self, MNMailbox * mailbox)
 {
-#line 659 "mn-mailboxes.c"
+#line 663 "mn-mailboxes.c"
 	GValue ___param_values[2];
 	GValue ___return_val;
 
@@ -670,7 +674,7 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_return_if_fail (mailbox != NULL);
 #line 87 "src/mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 674 "mn-mailboxes.c"
+#line 678 "mn-mailboxes.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -692,7 +696,7 @@ memset (&___param_values, 0, sizeof (___param_values));
 static void 
 ___real_mn_mailboxes_mailbox_removed (MNMailboxes * self, MNMailbox * mailbox)
 {
-#line 696 "mn-mailboxes.c"
+#line 700 "mn-mailboxes.c"
 #define __GOB_FUNCTION__ "MN:Mailboxes::mailbox_removed"
 {
 #line 89 "src/mn-mailboxes.gob"
@@ -706,14 +710,14 @@ ___real_mn_mailboxes_mailbox_removed (MNMailboxes * self, MNMailbox * mailbox)
     self_messages_changed(self, FALSE);
     self_error_changed(self);
   }}
-#line 710 "mn-mailboxes.c"
+#line 714 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
 #line 101 "src/mn-mailboxes.gob"
 static void 
 mn_mailboxes_mailbox_notify (MNMailboxes * self, MNMailbox * mailbox, GParamSpec * pspec)
 {
-#line 717 "mn-mailboxes.c"
+#line 721 "mn-mailboxes.c"
 	GValue ___param_values[3];
 	GValue ___return_val;
 
@@ -730,7 +734,7 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_return_if_fail (MN_IS_MAILBOX (mailbox));
 #line 101 "src/mn-mailboxes.gob"
 	g_return_if_fail (pspec != NULL);
-#line 734 "mn-mailboxes.c"
+#line 738 "mn-mailboxes.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -758,7 +762,7 @@ memset (&___param_values, 0, sizeof (___param_values));
 static void 
 mn_mailboxes_list_changed (MNMailboxes * self)
 {
-#line 762 "mn-mailboxes.c"
+#line 766 "mn-mailboxes.c"
 	GValue ___param_values[1];
 	GValue ___return_val;
 
@@ -769,7 +773,7 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_return_if_fail (self != NULL);
 #line 114 "src/mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 773 "mn-mailboxes.c"
+#line 777 "mn-mailboxes.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -786,7 +790,7 @@ memset (&___param_values, 0, sizeof (___param_values));
 static void 
 ___real_mn_mailboxes_list_changed (MNMailboxes * self)
 {
-#line 790 "mn-mailboxes.c"
+#line 794 "mn-mailboxes.c"
 #define __GOB_FUNCTION__ "MN:Mailboxes::list_changed"
 {
 #line 116 "src/mn-mailboxes.gob"
@@ -794,14 +798,14 @@ ___real_mn_mailboxes_list_changed (MNMailboxes * self)
     /* manually-checkable has possibly changed */
     g_object_notify(G_OBJECT(self), "manually-checkable");
   }}
-#line 798 "mn-mailboxes.c"
+#line 802 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
 #line 135 "src/mn-mailboxes.gob"
 static void 
 mn_mailboxes_messages_changed (MNMailboxes * self, gboolean has_new)
 {
-#line 805 "mn-mailboxes.c"
+#line 809 "mn-mailboxes.c"
 	GValue ___param_values[2];
 	GValue ___return_val;
 
@@ -812,7 +816,7 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_return_if_fail (self != NULL);
 #line 135 "src/mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 816 "mn-mailboxes.c"
+#line 820 "mn-mailboxes.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -834,7 +838,7 @@ memset (&___param_values, 0, sizeof (___param_values));
 static void 
 ___real_mn_mailboxes_messages_changed (MNMailboxes * self, gboolean has_new)
 {
-#line 838 "mn-mailboxes.c"
+#line 842 "mn-mailboxes.c"
 #define __GOB_FUNCTION__ "MN:Mailboxes::messages_changed"
 {
 #line 137 "src/mn-mailboxes.gob"
@@ -849,53 +853,61 @@ ___real_mn_mailboxes_messages_changed (MNMailboxes * self, gboolean has_new)
     MN_LIST_FOREACH(l, self->list)
       {
 	MNMailbox *mailbox = l->data;
-	int i;
-
-	MN_ARRAY_FOREACH(i, mailbox->messages)
-	  {
-	    MNMessage *message = g_ptr_array_index(mailbox->messages, i);
 
-	    g_ptr_array_add(self->messages, g_object_ref(message));
-	    g_hash_table_insert(self->messages_hash_table, message->id, message);
-	  }
+	g_hash_table_foreach(mailbox->messages, (GHFunc) self_messages_changed_cb, self);
       }
 
     g_ptr_array_sort(self->messages, (GCompareFunc) self_messages_sort_cb);
   }}
-#line 866 "mn-mailboxes.c"
+#line 863 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 162 "src/mn-mailboxes.gob"
+#line 155 "src/mn-mailboxes.gob"
+static void 
+mn_mailboxes_messages_changed_cb (const char * id, MNMessage * message, Self * self)
+{
+#line 870 "mn-mailboxes.c"
+#define __GOB_FUNCTION__ "MN:Mailboxes::messages_changed_cb"
+{
+#line 159 "src/mn-mailboxes.gob"
+	
+    g_ptr_array_add(self->messages, g_object_ref(message));
+    g_hash_table_insert(self->messages_hash_table, message->id, message);
+  }}
+#line 878 "mn-mailboxes.c"
+#undef __GOB_FUNCTION__
+
+#line 164 "src/mn-mailboxes.gob"
 static int 
 mn_mailboxes_messages_sort_cb (MNMessage ** a, MNMessage ** b)
 {
-#line 873 "mn-mailboxes.c"
+#line 885 "mn-mailboxes.c"
 #define __GOB_FUNCTION__ "MN:Mailboxes::messages_sort_cb"
 {
-#line 164 "src/mn-mailboxes.gob"
+#line 166 "src/mn-mailboxes.gob"
 	
     /* sort by sent time in descending order */
     return (*b)->sent_time - (*a)->sent_time;
   }}
-#line 881 "mn-mailboxes.c"
+#line 893 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 178 "src/mn-mailboxes.gob"
+#line 180 "src/mn-mailboxes.gob"
 static void 
 mn_mailboxes_error_changed (MNMailboxes * self)
 {
-#line 888 "mn-mailboxes.c"
+#line 900 "mn-mailboxes.c"
 	GValue ___param_values[1];
 	GValue ___return_val;
 
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 178 "src/mn-mailboxes.gob"
+#line 180 "src/mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 178 "src/mn-mailboxes.gob"
+#line 180 "src/mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 899 "mn-mailboxes.c"
+#line 911 "mn-mailboxes.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -909,28 +921,28 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_value_unset (&___param_values[0]);
 }
 
-#line 183 "src/mn-mailboxes.gob"
+#line 185 "src/mn-mailboxes.gob"
 gboolean 
 mn_mailboxes_get_manually_checkable (MNMailboxes * self)
 {
-#line 917 "mn-mailboxes.c"
+#line 929 "mn-mailboxes.c"
 #define __GOB_FUNCTION__ "MN:Mailboxes::get_manually_checkable"
 {
-#line 181 "src/mn-mailboxes.gob"
+#line 183 "src/mn-mailboxes.gob"
 		gboolean val; g_object_get (G_OBJECT (self), "manually_checkable", &val, NULL); return val;
 }}
-#line 923 "mn-mailboxes.c"
+#line 935 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
 
-#line 256 "src/mn-mailboxes.gob"
+#line 258 "src/mn-mailboxes.gob"
 static void 
 mn_mailboxes_finalize (MNMailboxes * self)
 {
-#line 931 "mn-mailboxes.c"
+#line 943 "mn-mailboxes.c"
 #define __GOB_FUNCTION__ "MN:Mailboxes::finalize"
 {
-#line 257 "src/mn-mailboxes.gob"
+#line 259 "src/mn-mailboxes.gob"
 	
     GList *l;
 
@@ -947,26 +959,26 @@ mn_mailboxes_finalize (MNMailboxes * self)
     if (selfp->queue_idle_id)
       g_source_remove(selfp->queue_idle_id);
   }}
-#line 951 "mn-mailboxes.c"
+#line 963 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 274 "src/mn-mailboxes.gob"
+#line 276 "src/mn-mailboxes.gob"
 static void 
 mn_mailboxes_connect_mailbox_signals (MNMailboxes * self, MNMailbox * mailbox)
 {
-#line 958 "mn-mailboxes.c"
+#line 970 "mn-mailboxes.c"
 #define __GOB_FUNCTION__ "MN:Mailboxes::connect_mailbox_signals"
-#line 274 "src/mn-mailboxes.gob"
+#line 276 "src/mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 274 "src/mn-mailboxes.gob"
+#line 276 "src/mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 274 "src/mn-mailboxes.gob"
+#line 276 "src/mn-mailboxes.gob"
 	g_return_if_fail (mailbox != NULL);
-#line 274 "src/mn-mailboxes.gob"
+#line 276 "src/mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 968 "mn-mailboxes.c"
+#line 980 "mn-mailboxes.c"
 {
-#line 276 "src/mn-mailboxes.gob"
+#line 278 "src/mn-mailboxes.gob"
 	
     g_object_connect(mailbox,
 		     "signal::messages-changed", self_mailbox_messages_changed_h, self,
@@ -975,26 +987,26 @@ mn_mailboxes_connect_mailbox_signals (MNMailboxes * self, MNMailbox * mailbox)
 		     "signal::notify::manually-checkable", self_mailbox_notify_manually_checkable_h, self,
 		     NULL);
   }}
-#line 979 "mn-mailboxes.c"
+#line 991 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 285 "src/mn-mailboxes.gob"
+#line 287 "src/mn-mailboxes.gob"
 static void 
 mn_mailboxes_disconnect_mailbox_signals (MNMailboxes * self, MNMailbox * mailbox)
 {
-#line 986 "mn-mailboxes.c"
+#line 998 "mn-mailboxes.c"
 #define __GOB_FUNCTION__ "MN:Mailboxes::disconnect_mailbox_signals"
-#line 285 "src/mn-mailboxes.gob"
+#line 287 "src/mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 285 "src/mn-mailboxes.gob"
+#line 287 "src/mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 285 "src/mn-mailboxes.gob"
+#line 287 "src/mn-mailboxes.gob"
 	g_return_if_fail (mailbox != NULL);
-#line 285 "src/mn-mailboxes.gob"
+#line 287 "src/mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 996 "mn-mailboxes.c"
+#line 1008 "mn-mailboxes.c"
 {
-#line 287 "src/mn-mailboxes.gob"
+#line 289 "src/mn-mailboxes.gob"
 	
     g_object_disconnect(mailbox,
 			"any-signal", self_mailbox_messages_changed_h, self,
@@ -1003,22 +1015,22 @@ mn_mailboxes_disconnect_mailbox_signals (MNMailboxes * self, MNMailbox * mailbox
 			"any-signal", self_mailbox_notify_manually_checkable_h, self,
 			NULL);
   }}
-#line 1007 "mn-mailboxes.c"
+#line 1019 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 296 "src/mn-mailboxes.gob"
+#line 298 "src/mn-mailboxes.gob"
 static void 
 mn_mailboxes_load (MNMailboxes * self)
 {
-#line 1014 "mn-mailboxes.c"
+#line 1026 "mn-mailboxes.c"
 #define __GOB_FUNCTION__ "MN:Mailboxes::load"
-#line 296 "src/mn-mailboxes.gob"
+#line 298 "src/mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 296 "src/mn-mailboxes.gob"
+#line 298 "src/mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 1020 "mn-mailboxes.c"
+#line 1032 "mn-mailboxes.c"
 {
-#line 298 "src/mn-mailboxes.gob"
+#line 300 "src/mn-mailboxes.gob"
 	
     GError *err = NULL;
 
@@ -1031,22 +1043,22 @@ mn_mailboxes_load (MNMailboxes * self)
     if (self->must_save_after_load)
       self_save(self);
   }}
-#line 1035 "mn-mailboxes.c"
+#line 1047 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 312 "src/mn-mailboxes.gob"
+#line 314 "src/mn-mailboxes.gob"
 static void 
 mn_mailboxes_add_error (GString ** errors, int * n_errors, const char * format, ...)
 {
-#line 1042 "mn-mailboxes.c"
+#line 1054 "mn-mailboxes.c"
 #define __GOB_FUNCTION__ "MN:Mailboxes::add_error"
-#line 312 "src/mn-mailboxes.gob"
+#line 314 "src/mn-mailboxes.gob"
 	g_return_if_fail (errors != NULL);
-#line 312 "src/mn-mailboxes.gob"
+#line 314 "src/mn-mailboxes.gob"
 	g_return_if_fail (n_errors != NULL);
-#line 1048 "mn-mailboxes.c"
+#line 1060 "mn-mailboxes.c"
 {
-#line 317 "src/mn-mailboxes.gob"
+#line 319 "src/mn-mailboxes.gob"
 	
     char *message;
 
@@ -1061,22 +1073,22 @@ mn_mailboxes_add_error (GString ** errors, int * n_errors, const char * format, 
 
     (*n_errors)++;
   }}
-#line 1065 "mn-mailboxes.c"
+#line 1077 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 332 "src/mn-mailboxes.gob"
+#line 334 "src/mn-mailboxes.gob"
 static gboolean 
 mn_mailboxes_load_real (MNMailboxes * self, GError ** err)
 {
-#line 1072 "mn-mailboxes.c"
+#line 1084 "mn-mailboxes.c"
 #define __GOB_FUNCTION__ "MN:Mailboxes::load_real"
-#line 332 "src/mn-mailboxes.gob"
+#line 334 "src/mn-mailboxes.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 332 "src/mn-mailboxes.gob"
+#line 334 "src/mn-mailboxes.gob"
 	g_return_val_if_fail (MN_IS_MAILBOXES (self), (gboolean )0);
-#line 1078 "mn-mailboxes.c"
+#line 1090 "mn-mailboxes.c"
 {
-#line 334 "src/mn-mailboxes.gob"
+#line 336 "src/mn-mailboxes.gob"
 	
     char *filename;
     xmlDoc *doc;
@@ -1159,22 +1171,22 @@ mn_mailboxes_load_real (MNMailboxes * self, GError ** err)
 
     return status;
   }}
-#line 1163 "mn-mailboxes.c"
+#line 1175 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 417 "src/mn-mailboxes.gob"
+#line 419 "src/mn-mailboxes.gob"
 static void 
 mn_mailboxes_save (MNMailboxes * self)
 {
-#line 1170 "mn-mailboxes.c"
+#line 1182 "mn-mailboxes.c"
 #define __GOB_FUNCTION__ "MN:Mailboxes::save"
-#line 417 "src/mn-mailboxes.gob"
+#line 419 "src/mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 417 "src/mn-mailboxes.gob"
+#line 419 "src/mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 1176 "mn-mailboxes.c"
+#line 1188 "mn-mailboxes.c"
 {
-#line 419 "src/mn-mailboxes.gob"
+#line 421 "src/mn-mailboxes.gob"
 	
     GError *err = NULL;
 
@@ -1184,22 +1196,22 @@ mn_mailboxes_save (MNMailboxes * self)
 	g_error_free(err);
       }
   }}
-#line 1188 "mn-mailboxes.c"
+#line 1200 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 429 "src/mn-mailboxes.gob"
+#line 431 "src/mn-mailboxes.gob"
 static gboolean 
 mn_mailboxes_save_real (MNMailboxes * self, GError ** err)
 {
-#line 1195 "mn-mailboxes.c"
+#line 1207 "mn-mailboxes.c"
 #define __GOB_FUNCTION__ "MN:Mailboxes::save_real"
-#line 429 "src/mn-mailboxes.gob"
+#line 431 "src/mn-mailboxes.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 429 "src/mn-mailboxes.gob"
+#line 431 "src/mn-mailboxes.gob"
 	g_return_val_if_fail (MN_IS_MAILBOXES (self), (gboolean )0);
-#line 1201 "mn-mailboxes.c"
+#line 1213 "mn-mailboxes.c"
 {
-#line 431 "src/mn-mailboxes.gob"
+#line 433 "src/mn-mailboxes.gob"
 	
     int indent;
     xmlDoc *doc;
@@ -1311,36 +1323,39 @@ mn_mailboxes_save_real (MNMailboxes * self, GError ** err)
 
     return status;
   }}
-#line 1315 "mn-mailboxes.c"
+#line 1327 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 543 "src/mn-mailboxes.gob"
+#line 545 "src/mn-mailboxes.gob"
 static void 
 mn_mailboxes_mailbox_messages_changed_h (MNMailbox * mailbox, gboolean has_new, gpointer user_data)
 {
-#line 1322 "mn-mailboxes.c"
+#line 1334 "mn-mailboxes.c"
 #define __GOB_FUNCTION__ "MN:Mailboxes::mailbox_messages_changed_h"
 {
-#line 547 "src/mn-mailboxes.gob"
+#line 549 "src/mn-mailboxes.gob"
 	
     Self *self = user_data;
+    int num_messages;
+
+    num_messages = g_hash_table_size(mailbox->messages);
 
-    mn_info(ngettext("%s has %i new message", "%s has %i new messages", mailbox->messages->len),
-	    mailbox->runtime_name, mailbox->messages->len);
+    mn_info(ngettext("%s has %i new message", "%s has %i new messages", num_messages),
+	    mailbox->runtime_name, num_messages);
 
     self_messages_changed(self, has_new);
   }}
-#line 1334 "mn-mailboxes.c"
+#line 1349 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 556 "src/mn-mailboxes.gob"
+#line 561 "src/mn-mailboxes.gob"
 static void 
 mn_mailboxes_mailbox_notify_h (GObject * object, GParamSpec * pspec, gpointer user_data)
 {
-#line 1341 "mn-mailboxes.c"
+#line 1356 "mn-mailboxes.c"
 #define __GOB_FUNCTION__ "MN:Mailboxes::mailbox_notify_h"
 {
-#line 558 "src/mn-mailboxes.gob"
+#line 563 "src/mn-mailboxes.gob"
 	
     Self *self = user_data;
     char *detailed_signal;
@@ -1349,17 +1364,17 @@ mn_mailboxes_mailbox_notify_h (GObject * object, GParamSpec * pspec, gpointer us
     g_signal_emit_by_name(self, detailed_signal, object, pspec);
     g_free(detailed_signal);
   }}
-#line 1353 "mn-mailboxes.c"
+#line 1368 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 567 "src/mn-mailboxes.gob"
+#line 572 "src/mn-mailboxes.gob"
 static void 
 mn_mailboxes_mailbox_notify_error_h (GObject * object, GParamSpec * pspec, gpointer user_data)
 {
-#line 1360 "mn-mailboxes.c"
+#line 1375 "mn-mailboxes.c"
 #define __GOB_FUNCTION__ "MN:Mailboxes::mailbox_notify_error_h"
 {
-#line 571 "src/mn-mailboxes.gob"
+#line 576 "src/mn-mailboxes.gob"
 	
     Self *self = user_data;
     MNMailbox *mailbox = MN_MAILBOX(object);
@@ -1369,39 +1384,39 @@ mn_mailboxes_mailbox_notify_error_h (GObject * object, GParamSpec * pspec, gpoin
 
     self_error_changed(self);
   }}
-#line 1373 "mn-mailboxes.c"
+#line 1388 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 581 "src/mn-mailboxes.gob"
+#line 586 "src/mn-mailboxes.gob"
 static void 
 mn_mailboxes_mailbox_notify_manually_checkable_h (GObject * object, GParamSpec * pspec, gpointer user_data)
 {
-#line 1380 "mn-mailboxes.c"
+#line 1395 "mn-mailboxes.c"
 #define __GOB_FUNCTION__ "MN:Mailboxes::mailbox_notify_manually_checkable_h"
 {
-#line 585 "src/mn-mailboxes.gob"
+#line 590 "src/mn-mailboxes.gob"
 	
     Self *self = user_data;
 
     /* manually-checkable has possibly changed */
     g_object_notify(G_OBJECT(self), "manually-checkable");
   }}
-#line 1390 "mn-mailboxes.c"
+#line 1405 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 592 "src/mn-mailboxes.gob"
+#line 597 "src/mn-mailboxes.gob"
 void 
 mn_mailboxes_check (MNMailboxes * self)
 {
-#line 1397 "mn-mailboxes.c"
+#line 1412 "mn-mailboxes.c"
 #define __GOB_FUNCTION__ "MN:Mailboxes::check"
-#line 592 "src/mn-mailboxes.gob"
+#line 597 "src/mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 592 "src/mn-mailboxes.gob"
+#line 597 "src/mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 1403 "mn-mailboxes.c"
+#line 1418 "mn-mailboxes.c"
 {
-#line 594 "src/mn-mailboxes.gob"
+#line 599 "src/mn-mailboxes.gob"
 	
     GList *l;
 
@@ -1413,51 +1428,51 @@ mn_mailboxes_check (MNMailboxes * self)
 	  mn_mailbox_check(mailbox);
       }
   }}
-#line 1417 "mn-mailboxes.c"
+#line 1432 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 606 "src/mn-mailboxes.gob"
+#line 611 "src/mn-mailboxes.gob"
 static void 
 mn_mailboxes_add_real (MNMailboxes * self, MNMailbox * mailbox)
 {
-#line 1424 "mn-mailboxes.c"
+#line 1439 "mn-mailboxes.c"
 #define __GOB_FUNCTION__ "MN:Mailboxes::add_real"
-#line 606 "src/mn-mailboxes.gob"
+#line 611 "src/mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 606 "src/mn-mailboxes.gob"
+#line 611 "src/mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 606 "src/mn-mailboxes.gob"
+#line 611 "src/mn-mailboxes.gob"
 	g_return_if_fail (mailbox != NULL);
-#line 606 "src/mn-mailboxes.gob"
+#line 611 "src/mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 1434 "mn-mailboxes.c"
+#line 1449 "mn-mailboxes.c"
 {
-#line 608 "src/mn-mailboxes.gob"
+#line 613 "src/mn-mailboxes.gob"
 	
     g_object_ref(mailbox);
     self->list = g_list_insert_sorted(self->list, mailbox, self_compare_by_name_func);
     self_mailbox_added(self, mailbox);
   }}
-#line 1442 "mn-mailboxes.c"
+#line 1457 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 614 "src/mn-mailboxes.gob"
+#line 619 "src/mn-mailboxes.gob"
 void 
 mn_mailboxes_add (MNMailboxes * self, MNMailbox * mailbox)
 {
-#line 1449 "mn-mailboxes.c"
+#line 1464 "mn-mailboxes.c"
 #define __GOB_FUNCTION__ "MN:Mailboxes::add"
-#line 614 "src/mn-mailboxes.gob"
+#line 619 "src/mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 614 "src/mn-mailboxes.gob"
+#line 619 "src/mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 614 "src/mn-mailboxes.gob"
+#line 619 "src/mn-mailboxes.gob"
 	g_return_if_fail (mailbox != NULL);
-#line 614 "src/mn-mailboxes.gob"
+#line 619 "src/mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 1459 "mn-mailboxes.c"
+#line 1474 "mn-mailboxes.c"
 {
-#line 616 "src/mn-mailboxes.gob"
+#line 621 "src/mn-mailboxes.gob"
 	
     self_add_real(self, mailbox);
     self_list_changed(self);
@@ -1465,26 +1480,26 @@ mn_mailboxes_add (MNMailboxes * self, MNMailbox * mailbox)
     if (! MN_IS_TEST_MAILBOX(mailbox))
       self_save(self);
   }}
-#line 1469 "mn-mailboxes.c"
+#line 1484 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 624 "src/mn-mailboxes.gob"
+#line 629 "src/mn-mailboxes.gob"
 void 
 mn_mailboxes_queue_add (MNMailboxes * self, MNMailbox * mailbox)
 {
-#line 1476 "mn-mailboxes.c"
+#line 1491 "mn-mailboxes.c"
 #define __GOB_FUNCTION__ "MN:Mailboxes::queue_add"
-#line 624 "src/mn-mailboxes.gob"
+#line 629 "src/mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 624 "src/mn-mailboxes.gob"
+#line 629 "src/mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 624 "src/mn-mailboxes.gob"
+#line 629 "src/mn-mailboxes.gob"
 	g_return_if_fail (mailbox != NULL);
-#line 624 "src/mn-mailboxes.gob"
+#line 629 "src/mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 1486 "mn-mailboxes.c"
+#line 1501 "mn-mailboxes.c"
 {
-#line 626 "src/mn-mailboxes.gob"
+#line 631 "src/mn-mailboxes.gob"
 	
     g_object_ref(mailbox);
     selfp->add_queue = g_slist_append(selfp->add_queue, mailbox);
@@ -1492,77 +1507,77 @@ mn_mailboxes_queue_add (MNMailboxes * self, MNMailbox * mailbox)
     if (! selfp->queue_idle_id)
       selfp->queue_idle_id = gdk_threads_add_idle(self_queue_idle_cb, self);
   }}
-#line 1496 "mn-mailboxes.c"
+#line 1511 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 634 "src/mn-mailboxes.gob"
+#line 639 "src/mn-mailboxes.gob"
 static void 
 mn_mailboxes_remove_real (MNMailboxes * self, MNMailbox * mailbox)
 {
-#line 1503 "mn-mailboxes.c"
+#line 1518 "mn-mailboxes.c"
 #define __GOB_FUNCTION__ "MN:Mailboxes::remove_real"
-#line 634 "src/mn-mailboxes.gob"
+#line 639 "src/mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 634 "src/mn-mailboxes.gob"
+#line 639 "src/mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 634 "src/mn-mailboxes.gob"
+#line 639 "src/mn-mailboxes.gob"
 	g_return_if_fail (mailbox != NULL);
-#line 634 "src/mn-mailboxes.gob"
+#line 639 "src/mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 1513 "mn-mailboxes.c"
+#line 1528 "mn-mailboxes.c"
 {
-#line 636 "src/mn-mailboxes.gob"
+#line 641 "src/mn-mailboxes.gob"
 	
     self->list = g_list_remove(self->list, mailbox);
     self_mailbox_removed(self, mailbox);
     g_object_unref(mailbox);
   }}
-#line 1521 "mn-mailboxes.c"
+#line 1536 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 642 "src/mn-mailboxes.gob"
+#line 647 "src/mn-mailboxes.gob"
 void 
 mn_mailboxes_remove (MNMailboxes * self, MNMailbox * mailbox)
 {
-#line 1528 "mn-mailboxes.c"
+#line 1543 "mn-mailboxes.c"
 #define __GOB_FUNCTION__ "MN:Mailboxes::remove"
-#line 642 "src/mn-mailboxes.gob"
+#line 647 "src/mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 642 "src/mn-mailboxes.gob"
+#line 647 "src/mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 642 "src/mn-mailboxes.gob"
+#line 647 "src/mn-mailboxes.gob"
 	g_return_if_fail (mailbox != NULL);
-#line 642 "src/mn-mailboxes.gob"
+#line 647 "src/mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 1538 "mn-mailboxes.c"
+#line 1553 "mn-mailboxes.c"
 {
-#line 644 "src/mn-mailboxes.gob"
+#line 649 "src/mn-mailboxes.gob"
 	
     self_remove_real(self, mailbox);
     self_list_changed(self);
     if (! MN_IS_TEST_MAILBOX(mailbox))
       self_save(self);
   }}
-#line 1547 "mn-mailboxes.c"
+#line 1562 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 651 "src/mn-mailboxes.gob"
+#line 656 "src/mn-mailboxes.gob"
 void 
 mn_mailboxes_queue_remove (MNMailboxes * self, MNMailbox * mailbox)
 {
-#line 1554 "mn-mailboxes.c"
+#line 1569 "mn-mailboxes.c"
 #define __GOB_FUNCTION__ "MN:Mailboxes::queue_remove"
-#line 651 "src/mn-mailboxes.gob"
+#line 656 "src/mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 651 "src/mn-mailboxes.gob"
+#line 656 "src/mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 651 "src/mn-mailboxes.gob"
+#line 656 "src/mn-mailboxes.gob"
 	g_return_if_fail (mailbox != NULL);
-#line 651 "src/mn-mailboxes.gob"
+#line 656 "src/mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 1564 "mn-mailboxes.c"
+#line 1579 "mn-mailboxes.c"
 {
-#line 653 "src/mn-mailboxes.gob"
+#line 658 "src/mn-mailboxes.gob"
 	
     g_object_ref(mailbox);
     selfp->remove_queue = g_slist_append(selfp->remove_queue, mailbox);
@@ -1570,17 +1585,17 @@ mn_mailboxes_queue_remove (MNMailboxes * self, MNMailbox * mailbox)
     if (! selfp->queue_idle_id)
       selfp->queue_idle_id = gdk_threads_add_idle(self_queue_idle_cb, self);
   }}
-#line 1574 "mn-mailboxes.c"
+#line 1589 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 661 "src/mn-mailboxes.gob"
+#line 666 "src/mn-mailboxes.gob"
 static gboolean 
 mn_mailboxes_queue_idle_cb (gpointer data)
 {
-#line 1581 "mn-mailboxes.c"
+#line 1596 "mn-mailboxes.c"
 #define __GOB_FUNCTION__ "MN:Mailboxes::queue_idle_cb"
 {
-#line 663 "src/mn-mailboxes.gob"
+#line 668 "src/mn-mailboxes.gob"
 	
     Self *self = data;
     GSList *l;
@@ -1601,36 +1616,36 @@ mn_mailboxes_queue_idle_cb (gpointer data)
     selfp->queue_idle_id = 0;
     return FALSE;		/* remove */
   }}
-#line 1605 "mn-mailboxes.c"
+#line 1620 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 684 "src/mn-mailboxes.gob"
+#line 689 "src/mn-mailboxes.gob"
 int 
 mn_mailboxes_compare_by_name_func (gconstpointer a, gconstpointer b)
 {
-#line 1612 "mn-mailboxes.c"
+#line 1627 "mn-mailboxes.c"
 #define __GOB_FUNCTION__ "MN:Mailboxes::compare_by_name_func"
 {
-#line 686 "src/mn-mailboxes.gob"
+#line 691 "src/mn-mailboxes.gob"
 	
     MNMailbox *mailbox_a = (MNMailbox *) a;
     MNMailbox *mailbox_b = (MNMailbox *) b;
 
     return g_utf8_collate(mailbox_a->runtime_name, mailbox_b->runtime_name);
   }}
-#line 1622 "mn-mailboxes.c"
+#line 1637 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 693 "src/mn-mailboxes.gob"
+#line 698 "src/mn-mailboxes.gob"
 MNMailboxes * 
 mn_mailboxes_new (void)
 {
-#line 1629 "mn-mailboxes.c"
+#line 1644 "mn-mailboxes.c"
 #define __GOB_FUNCTION__ "MN:Mailboxes::new"
 {
-#line 695 "src/mn-mailboxes.gob"
+#line 700 "src/mn-mailboxes.gob"
 	
     return GET_NEW;
   }}
-#line 1636 "mn-mailboxes.c"
+#line 1651 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
diff --git a/build/src/mn-mailboxes.h b/build/src/mn-mailboxes.h
@@ -65,33 +65,33 @@ struct _MNMailboxesClass {
  * Public methods
  */
 GType	mn_mailboxes_get_type	(void) G_GNUC_CONST;
-#line 183 "src/mn-mailboxes.gob"
+#line 185 "src/mn-mailboxes.gob"
 gboolean 	mn_mailboxes_get_manually_checkable	(MNMailboxes * self);
 #line 71 "mn-mailboxes.h"
-#line 592 "src/mn-mailboxes.gob"
+#line 597 "src/mn-mailboxes.gob"
 void 	mn_mailboxes_check	(MNMailboxes * self);
 #line 74 "mn-mailboxes.h"
-#line 614 "src/mn-mailboxes.gob"
+#line 619 "src/mn-mailboxes.gob"
 void 	mn_mailboxes_add	(MNMailboxes * self,
 					MNMailbox * mailbox);
 #line 78 "mn-mailboxes.h"
-#line 624 "src/mn-mailboxes.gob"
+#line 629 "src/mn-mailboxes.gob"
 void 	mn_mailboxes_queue_add	(MNMailboxes * self,
 					MNMailbox * mailbox);
 #line 82 "mn-mailboxes.h"
-#line 642 "src/mn-mailboxes.gob"
+#line 647 "src/mn-mailboxes.gob"
 void 	mn_mailboxes_remove	(MNMailboxes * self,
 					MNMailbox * mailbox);
 #line 86 "mn-mailboxes.h"
-#line 651 "src/mn-mailboxes.gob"
+#line 656 "src/mn-mailboxes.gob"
 void 	mn_mailboxes_queue_remove	(MNMailboxes * self,
 					MNMailbox * mailbox);
 #line 90 "mn-mailboxes.h"
-#line 684 "src/mn-mailboxes.gob"
+#line 689 "src/mn-mailboxes.gob"
 int 	mn_mailboxes_compare_by_name_func	(gconstpointer a,
 					gconstpointer b);
 #line 94 "mn-mailboxes.h"
-#line 693 "src/mn-mailboxes.gob"
+#line 698 "src/mn-mailboxes.gob"
 MNMailboxes * 	mn_mailboxes_new	(void);
 #line 97 "mn-mailboxes.h"
 
diff --git a/build/src/mn-maildir-mailbox-backend.c b/build/src/mn-maildir-mailbox-backend.c
@@ -69,7 +69,7 @@ static void mn_maildir_mailbox_backend_monitor_directory (MNMaildirMailboxBacken
 #line 105 "src/mn-maildir-mailbox-backend.gob"
 static gboolean mn_maildir_mailbox_backend_scan_directory (MNMaildirMailboxBackend * self, int check_id, const char * dir, gboolean new, GSList ** messages, int * num_errors, GError ** err);
 #line 72 "mn-maildir-mailbox-backend.c"
-#line 228 "src/mn-maildir-mailbox-backend.gob"
+#line 240 "src/mn-maildir-mailbox-backend.gob"
 static void ___7_mn_maildir_mailbox_backend_check (MNVFSMailboxBackend * backend, int check_id);
 #line 75 "mn-maildir-mailbox-backend.c"
 
@@ -142,7 +142,7 @@ mn_maildir_mailbox_backend_class_init (MNMaildirMailboxBackendClass * class G_GN
 	mn_vfs_mailbox_backend_class->monitor_cb = ___2_mn_maildir_mailbox_backend_monitor_cb;
 #line 80 "src/mn-maildir-mailbox-backend.gob"
 	mn_vfs_mailbox_backend_class->is = ___4_mn_maildir_mailbox_backend_is;
-#line 228 "src/mn-maildir-mailbox-backend.gob"
+#line 240 "src/mn-maildir-mailbox-backend.gob"
 	mn_vfs_mailbox_backend_class->check = ___7_mn_maildir_mailbox_backend_check;
 #line 148 "mn-maildir-mailbox-backend.c"
  {
@@ -312,7 +312,7 @@ mn_maildir_mailbox_backend_scan_directory (MNMaildirMailboxBackend * self, int c
 	{
 	  char *mid;
 	  MNMessageFlags flags = 0;
-	  MNVFSMessage *message;
+	  MNVFSMessage *message = NULL;
 
 	  if (mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id))
 	    {
@@ -340,13 +340,25 @@ mn_maildir_mailbox_backend_scan_directory (MNMaildirMailboxBackend * self, int c
 	      mid = g_strndup(file_info->name, info - file_info->name);
 	    }
 
+	  /*
+	   * Hold the GDK lock while using
+	   * mn_mailbox_get_message_from_mid(), since for
+	   * MNReentrantMailbox, mail checks can run concurrently, so
+	   * another check could be modifying the MID hash table.
+	   */
+	  GDK_THREADS_ENTER();
+
 	  message = MN_VFS_MESSAGE(mn_mailbox_get_message_from_mid(MN_MAILBOX(backend->mailbox), mid));
 	  if (message)
 	    message = mn_vfs_message_new_from_message(message,
 						      uri,
 						      file_info->name,
 						      flags);
-	  else
+
+	  gdk_flush();
+	  GDK_THREADS_LEAVE();
+
+	  if (! message)
 	    {
 	      GError *tmp_err = NULL;
 
@@ -401,20 +413,20 @@ mn_maildir_mailbox_backend_scan_directory (MNMaildirMailboxBackend * self, int c
 
     return FALSE;
   }}
-#line 405 "mn-maildir-mailbox-backend.c"
+#line 417 "mn-maildir-mailbox-backend.c"
 #undef __GOB_FUNCTION__
 
-#line 228 "src/mn-maildir-mailbox-backend.gob"
+#line 240 "src/mn-maildir-mailbox-backend.gob"
 static void 
 ___7_mn_maildir_mailbox_backend_check (MNVFSMailboxBackend * backend G_GNUC_UNUSED, int check_id)
-#line 411 "mn-maildir-mailbox-backend.c"
+#line 423 "mn-maildir-mailbox-backend.c"
 #define PARENT_HANDLER(___backend,___check_id) \
 	{ if(MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->check) \
 		(* MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->check)(___backend,___check_id); }
 {
 #define __GOB_FUNCTION__ "MN:Maildir:Mailbox:Backend::check"
 {
-#line 230 "src/mn-maildir-mailbox-backend.gob"
+#line 242 "src/mn-maildir-mailbox-backend.gob"
 	
     Self *self = SELF(backend);
     GSList *messages = NULL;
@@ -455,6 +467,6 @@ ___7_mn_maildir_mailbox_backend_check (MNVFSMailboxBackend * backend G_GNUC_UNUS
     if (err)
       g_error_free(err);
   }}
-#line 459 "mn-maildir-mailbox-backend.c"
+#line 471 "mn-maildir-mailbox-backend.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
diff --git a/build/src/mn-message-private.h b/build/src/mn-message-private.h
@@ -23,10 +23,10 @@ typedef enum
 typedef GError *(*MNMessageActionPerformCallback) (MNMessage *message, gpointer data);
 
 #line 26 "mn-message-private.h"
-#line 375 "src/mn-message.gob"
+#line 376 "src/mn-message.gob"
 void 	mn_message_perform_action_in_thread	(MNMessageActionRequest * request, MNMessageActionPerformCallback callback, gpointer user_data);
 #line 29 "mn-message-private.h"
-#line 422 "src/mn-message.gob"
+#line 423 "src/mn-message.gob"
 void 	mn_message_action_done	(MNMessageActionRequest * request, GError * err);
 #line 32 "mn-message-private.h"
 
diff --git a/build/src/mn-message.c b/build/src/mn-message.c
@@ -28,6 +28,7 @@
 #include <glib/gi18n.h>
 #include <gnome.h>
 #include <libgnomevfs/gnome-vfs.h>
+#include "mn-conf.h"
 #include "mn-util.h"
 
 typedef struct
@@ -37,7 +38,7 @@ typedef struct
   gpointer				user_data;
 } PerformInfo;
 
-#line 41 "mn-message.c"
+#line 42 "mn-message.c"
 /* self casting macros */
 #define SELF(x) MN_MESSAGE(x)
 #define SELF_CONST(x) MN_MESSAGE_CONST(x)
@@ -56,69 +57,69 @@ static void ___object_set_property (GObject *object, guint property_id, const GV
 static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec);
 #line 0 "src/mn-message.gob"
 static void mn_message_init (MNMessage * o);
-#line 60 "mn-message.c"
+#line 61 "mn-message.c"
 #line 0 "src/mn-message.gob"
 static void mn_message_class_init (MNMessageClass * c);
-#line 63 "mn-message.c"
-#line 224 "src/mn-message.gob"
+#line 64 "mn-message.c"
+#line 225 "src/mn-message.gob"
 static void mn_message_constructor (MNMessage * self);
-#line 66 "mn-message.c"
-#line 266 "src/mn-message.gob"
+#line 67 "mn-message.c"
+#line 267 "src/mn-message.gob"
 static gboolean mn_message_subst_command_cb (const char * name, char ** value, gpointer data);
-#line 69 "mn-message.c"
-#line 296 "src/mn-message.gob"
+#line 70 "mn-message.c"
+#line 297 "src/mn-message.gob"
 static gboolean mn_message_execute_command_real (MNMessage * self, const char * command, GError ** err);
-#line 72 "mn-message.c"
-#line 324 "src/mn-message.gob"
+#line 73 "mn-message.c"
+#line 325 "src/mn-message.gob"
 static gboolean mn_message_execute_command (MNMessage * self, const char * id, GError ** err);
-#line 75 "mn-message.c"
-#line 393 "src/mn-message.gob"
+#line 76 "mn-message.c"
+#line 394 "src/mn-message.gob"
 static void mn_message_perform_action_in_thread_cb (PerformInfo * info);
-#line 78 "mn-message.c"
-#line 411 "src/mn-message.gob"
+#line 79 "mn-message.c"
+#line 412 "src/mn-message.gob"
 static void mn_message_action_done_real (MNMessage * self, MNMessageAction * action, GError * err, MNMessageActionResultCallback callback, gpointer data);
-#line 81 "mn-message.c"
+#line 82 "mn-message.c"
 static gboolean ___real_mn_message_builtin_can_open (MNMessage * self);
-#line 439 "src/mn-message.gob"
+#line 440 "src/mn-message.gob"
 static gboolean mn_message_builtin_can_open (MNMessage * self);
-#line 85 "mn-message.c"
+#line 86 "mn-message.c"
 static void ___real_mn_message_builtin_open (MNMessage * self, MNMessageActionRequest * request);
-#line 445 "src/mn-message.gob"
+#line 446 "src/mn-message.gob"
 static void mn_message_builtin_open (MNMessage * self, MNMessageActionRequest * request);
-#line 89 "mn-message.c"
-#line 455 "src/mn-message.gob"
+#line 90 "mn-message.c"
+#line 456 "src/mn-message.gob"
 static void mn_message_open_done (MNMessage * self, GError * err);
-#line 92 "mn-message.c"
+#line 93 "mn-message.c"
 static gboolean ___real_mn_message_builtin_can_mark_as_read (MNMessage * self);
-#line 462 "src/mn-message.gob"
+#line 463 "src/mn-message.gob"
 static gboolean mn_message_builtin_can_mark_as_read (MNMessage * self);
-#line 96 "mn-message.c"
-#line 468 "src/mn-message.gob"
+#line 97 "mn-message.c"
+#line 469 "src/mn-message.gob"
 static void mn_message_builtin_mark_as_read (MNMessage * self, MNMessageActionRequest * request);
-#line 99 "mn-message.c"
-#line 471 "src/mn-message.gob"
+#line 100 "mn-message.c"
+#line 472 "src/mn-message.gob"
 static void mn_message_mark_as_read_done (MNMessage * self, GError * err);
-#line 102 "mn-message.c"
+#line 103 "mn-message.c"
 static gboolean ___real_mn_message_builtin_can_mark_as_spam (MNMessage * self);
-#line 478 "src/mn-message.gob"
+#line 479 "src/mn-message.gob"
 static gboolean mn_message_builtin_can_mark_as_spam (MNMessage * self);
-#line 106 "mn-message.c"
-#line 484 "src/mn-message.gob"
+#line 107 "mn-message.c"
+#line 485 "src/mn-message.gob"
 static void mn_message_builtin_mark_as_spam (MNMessage * self, MNMessageActionRequest * request);
-#line 109 "mn-message.c"
-#line 487 "src/mn-message.gob"
+#line 110 "mn-message.c"
+#line 488 "src/mn-message.gob"
 static void mn_message_mark_as_spam_done (MNMessage * self, GError * err);
-#line 112 "mn-message.c"
+#line 113 "mn-message.c"
 static gboolean ___real_mn_message_builtin_can_delete (MNMessage * self);
-#line 494 "src/mn-message.gob"
+#line 495 "src/mn-message.gob"
 static gboolean mn_message_builtin_can_delete (MNMessage * self);
-#line 116 "mn-message.c"
-#line 500 "src/mn-message.gob"
+#line 117 "mn-message.c"
+#line 501 "src/mn-message.gob"
 static void mn_message_builtin_delete (MNMessage * self, MNMessageActionRequest * request);
-#line 119 "mn-message.c"
-#line 503 "src/mn-message.gob"
+#line 120 "mn-message.c"
+#line 504 "src/mn-message.gob"
 static void mn_message_delete_done (MNMessage * self, GError * err);
-#line 122 "mn-message.c"
+#line 123 "mn-message.c"
 
 enum {
 	PROP_0,
@@ -160,6 +161,8 @@ static GObjectClass *parent_class = NULL;
 #define self_builtin_can_delete mn_message_builtin_can_delete
 #define self_builtin_delete mn_message_builtin_delete
 #define self_delete_done mn_message_delete_done
+#define self_consider_as_read mn_message_consider_as_read
+#define self_consider_as_read_list mn_message_consider_as_read_list
 #define self_new mn_message_new
 #define self_xml_node_new mn_message_xml_node_new
 GType
@@ -205,7 +208,7 @@ GET_NEW_VARG (const char *first, ...)
 }
 
 
-#line 91 "src/mn-message.gob"
+#line 92 "src/mn-message.gob"
 
 static const MNMessageAction message_actions[] = {
   {
@@ -250,7 +253,7 @@ static const MNMessageAction message_actions[] = {
   }
 };
 
-#line 254 "mn-message.c"
+#line 257 "mn-message.c"
 
 static GObject *
 ___constructor (GType type, guint n_construct_properties, GObjectConstructParam *construct_properties)
@@ -260,9 +263,9 @@ ___constructor (GType type, guint n_construct_properties, GObjectConstructParam 
 	MNMessage *self;
 	obj_self = G_OBJECT_CLASS (parent_class)->constructor (type, n_construct_properties, construct_properties);
 	self = MN_MESSAGE (obj_self);
-#line 224 "src/mn-message.gob"
+#line 225 "src/mn-message.gob"
 	mn_message_constructor (self);
-#line 266 "mn-message.c"
+#line 269 "mn-message.c"
 	return obj_self;
 }
 #undef __GOB_FUNCTION__
@@ -275,21 +278,21 @@ ___finalize(GObject *obj_self)
 	MNMessage *self G_GNUC_UNUSED = MN_MESSAGE (obj_self);
 	if(G_OBJECT_CLASS(parent_class)->finalize) \
 		(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
-#line 163 "src/mn-message.gob"
+#line 164 "src/mn-message.gob"
 	if(self->id) { g_free ((gpointer) self->id); self->id = NULL; }
-#line 281 "mn-message.c"
-#line 178 "src/mn-message.gob"
-	if(self->mid) { g_free ((gpointer) self->mid); self->mid = NULL; }
 #line 284 "mn-message.c"
-#line 182 "src/mn-message.gob"
-	if(self->from) { g_free ((gpointer) self->from); self->from = NULL; }
+#line 179 "src/mn-message.gob"
+	if(self->mid) { g_free ((gpointer) self->mid); self->mid = NULL; }
 #line 287 "mn-message.c"
-#line 186 "src/mn-message.gob"
-	if(self->subject) { g_free ((gpointer) self->subject); self->subject = NULL; }
+#line 183 "src/mn-message.gob"
+	if(self->from) { g_free ((gpointer) self->from); self->from = NULL; }
 #line 290 "mn-message.c"
-#line 190 "src/mn-message.gob"
-	if(self->uri) { g_free ((gpointer) self->uri); self->uri = NULL; }
+#line 187 "src/mn-message.gob"
+	if(self->subject) { g_free ((gpointer) self->subject); self->subject = NULL; }
 #line 293 "mn-message.c"
+#line 191 "src/mn-message.gob"
+	if(self->uri) { g_free ((gpointer) self->uri); self->uri = NULL; }
+#line 296 "mn-message.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -307,21 +310,21 @@ mn_message_class_init (MNMessageClass * c G_GNUC_UNUSED)
 
 	parent_class = g_type_class_ref (G_TYPE_OBJECT);
 
-#line 439 "src/mn-message.gob"
+#line 440 "src/mn-message.gob"
 	c->builtin_can_open = ___real_mn_message_builtin_can_open;
-#line 445 "src/mn-message.gob"
+#line 446 "src/mn-message.gob"
 	c->builtin_open = ___real_mn_message_builtin_open;
-#line 462 "src/mn-message.gob"
+#line 463 "src/mn-message.gob"
 	c->builtin_can_mark_as_read = ___real_mn_message_builtin_can_mark_as_read;
-#line 317 "mn-message.c"
+#line 320 "mn-message.c"
 	c->builtin_mark_as_read = NULL;
-#line 478 "src/mn-message.gob"
+#line 479 "src/mn-message.gob"
 	c->builtin_can_mark_as_spam = ___real_mn_message_builtin_can_mark_as_spam;
-#line 321 "mn-message.c"
+#line 324 "mn-message.c"
 	c->builtin_mark_as_spam = NULL;
-#line 494 "src/mn-message.gob"
+#line 495 "src/mn-message.gob"
 	c->builtin_can_delete = ___real_mn_message_builtin_can_delete;
-#line 325 "mn-message.c"
+#line 328 "mn-message.c"
 	c->builtin_delete = NULL;
 	g_object_class->constructor = ___constructor;
 	g_object_class->finalize = ___finalize;
@@ -432,58 +435,58 @@ ___object_set_property (GObject *object,
 	switch (property_id) {
 	case PROP_MAILBOX:
 		{
-#line 146 "src/mn-message.gob"
+#line 147 "src/mn-message.gob"
 self->mailbox = g_value_get_pointer (VAL);
-#line 438 "mn-message.c"
+#line 441 "mn-message.c"
 		}
 		break;
 	case PROP_SENT_TIME:
 		{
-#line 150 "src/mn-message.gob"
+#line 151 "src/mn-message.gob"
 self->sent_time = g_value_get_ulong (VAL);
-#line 445 "mn-message.c"
+#line 448 "mn-message.c"
 		}
 		break;
 	case PROP_ID:
 		{
-#line 164 "src/mn-message.gob"
+#line 165 "src/mn-message.gob"
 { char *old = self->id; self->id = g_value_dup_string (VAL); g_free (old); }
-#line 452 "mn-message.c"
+#line 455 "mn-message.c"
 		}
 		break;
 	case PROP_MID:
 		{
-#line 179 "src/mn-message.gob"
+#line 180 "src/mn-message.gob"
 { char *old = self->mid; self->mid = g_value_dup_string (VAL); g_free (old); }
-#line 459 "mn-message.c"
+#line 462 "mn-message.c"
 		}
 		break;
 	case PROP_FROM:
 		{
-#line 183 "src/mn-message.gob"
+#line 184 "src/mn-message.gob"
 { char *old = self->from; self->from = g_value_dup_string (VAL); g_free (old); }
-#line 466 "mn-message.c"
+#line 469 "mn-message.c"
 		}
 		break;
 	case PROP_SUBJECT:
 		{
-#line 187 "src/mn-message.gob"
+#line 188 "src/mn-message.gob"
 { char *old = self->subject; self->subject = g_value_dup_string (VAL); g_free (old); }
-#line 473 "mn-message.c"
+#line 476 "mn-message.c"
 		}
 		break;
 	case PROP_URI:
 		{
-#line 191 "src/mn-message.gob"
+#line 192 "src/mn-message.gob"
 { char *old = self->uri; self->uri = g_value_dup_string (VAL); g_free (old); }
-#line 480 "mn-message.c"
+#line 483 "mn-message.c"
 		}
 		break;
 	case PROP_FLAGS:
 		{
-#line 200 "src/mn-message.gob"
+#line 201 "src/mn-message.gob"
 self->flags = g_value_get_uint (VAL);
-#line 487 "mn-message.c"
+#line 490 "mn-message.c"
 		}
 		break;
 	default:
@@ -512,67 +515,67 @@ ___object_get_property (GObject *object,
 	switch (property_id) {
 	case PROP_MAILBOX:
 		{
-#line 146 "src/mn-message.gob"
+#line 147 "src/mn-message.gob"
 g_value_set_pointer (VAL, self->mailbox);
-#line 518 "mn-message.c"
+#line 521 "mn-message.c"
 		}
 		break;
 	case PROP_SENT_TIME:
 		{
-#line 150 "src/mn-message.gob"
+#line 151 "src/mn-message.gob"
 g_value_set_ulong (VAL, self->sent_time);
-#line 525 "mn-message.c"
+#line 528 "mn-message.c"
 		}
 		break;
 	case PROP_ID:
 		{
-#line 164 "src/mn-message.gob"
+#line 165 "src/mn-message.gob"
 g_value_set_string (VAL, self->id);
-#line 532 "mn-message.c"
+#line 535 "mn-message.c"
 		}
 		break;
 	case PROP_MID:
 		{
-#line 179 "src/mn-message.gob"
+#line 180 "src/mn-message.gob"
 g_value_set_string (VAL, self->mid);
-#line 539 "mn-message.c"
+#line 542 "mn-message.c"
 		}
 		break;
 	case PROP_FROM:
 		{
-#line 183 "src/mn-message.gob"
+#line 184 "src/mn-message.gob"
 g_value_set_string (VAL, self->from);
-#line 546 "mn-message.c"
+#line 549 "mn-message.c"
 		}
 		break;
 	case PROP_SUBJECT:
 		{
-#line 187 "src/mn-message.gob"
+#line 188 "src/mn-message.gob"
 g_value_set_string (VAL, self->subject);
-#line 553 "mn-message.c"
+#line 556 "mn-message.c"
 		}
 		break;
 	case PROP_URI:
 		{
-#line 191 "src/mn-message.gob"
+#line 192 "src/mn-message.gob"
 g_value_set_string (VAL, self->uri);
-#line 560 "mn-message.c"
+#line 563 "mn-message.c"
 		}
 		break;
 	case PROP_FILENAME:
 		{
-#line 195 "src/mn-message.gob"
+#line 196 "src/mn-message.gob"
 
       g_value_take_string(VAL, self->uri ? gnome_vfs_get_local_path_from_uri(self->uri) : NULL);
     
-#line 569 "mn-message.c"
+#line 572 "mn-message.c"
 		}
 		break;
 	case PROP_FLAGS:
 		{
-#line 200 "src/mn-message.gob"
+#line 201 "src/mn-message.gob"
 g_value_set_uint (VAL, self->flags);
-#line 576 "mn-message.c"
+#line 579 "mn-message.c"
 		}
 		break;
 	default:
@@ -589,17 +592,17 @@ g_value_set_uint (VAL, self->flags);
 
 
 
-#line 202 "src/mn-message.gob"
+#line 203 "src/mn-message.gob"
 MNMessageAction * 
 mn_message_get_action (const char * name)
 {
-#line 597 "mn-message.c"
+#line 600 "mn-message.c"
 #define __GOB_FUNCTION__ "MN:Message::get_action"
-#line 202 "src/mn-message.gob"
+#line 203 "src/mn-message.gob"
 	g_return_val_if_fail (name != NULL, (MNMessageAction * )0);
-#line 601 "mn-message.c"
+#line 604 "mn-message.c"
 {
-#line 204 "src/mn-message.gob"
+#line 205 "src/mn-message.gob"
 	
     static GHashTable *actions = NULL;
 
@@ -619,17 +622,17 @@ mn_message_get_action (const char * name)
 
     return g_hash_table_lookup(actions, name);
   }}
-#line 623 "mn-message.c"
+#line 626 "mn-message.c"
 #undef __GOB_FUNCTION__
 
-#line 224 "src/mn-message.gob"
+#line 225 "src/mn-message.gob"
 static void 
 mn_message_constructor (MNMessage * self)
 {
-#line 630 "mn-message.c"
+#line 633 "mn-message.c"
 #define __GOB_FUNCTION__ "MN:Message::constructor"
 {
-#line 225 "src/mn-message.gob"
+#line 226 "src/mn-message.gob"
 	
     g_assert(MN_IS_MAILBOX(self->mailbox));
 
@@ -670,17 +673,17 @@ mn_message_constructor (MNMessage * self)
     if (! self->subject)
       self->subject = g_strdup("");
   }}
-#line 674 "mn-message.c"
+#line 677 "mn-message.c"
 #undef __GOB_FUNCTION__
 
-#line 266 "src/mn-message.gob"
+#line 267 "src/mn-message.gob"
 static gboolean 
 mn_message_subst_command_cb (const char * name, char ** value, gpointer data)
 {
-#line 681 "mn-message.c"
+#line 684 "mn-message.c"
 #define __GOB_FUNCTION__ "MN:Message::subst_command_cb"
 {
-#line 268 "src/mn-message.gob"
+#line 269 "src/mn-message.gob"
 	
     Self *self = data;
     GParamSpec **properties;
@@ -708,24 +711,24 @@ mn_message_subst_command_cb (const char * name, char ** value, gpointer data)
 
     return status;
   }}
-#line 712 "mn-message.c"
+#line 715 "mn-message.c"
 #undef __GOB_FUNCTION__
 
-#line 296 "src/mn-message.gob"
+#line 297 "src/mn-message.gob"
 static gboolean 
 mn_message_execute_command_real (MNMessage * self, const char * command, GError ** err)
 {
-#line 719 "mn-message.c"
+#line 722 "mn-message.c"
 #define __GOB_FUNCTION__ "MN:Message::execute_command_real"
-#line 296 "src/mn-message.gob"
+#line 297 "src/mn-message.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 296 "src/mn-message.gob"
+#line 297 "src/mn-message.gob"
 	g_return_val_if_fail (MN_IS_MESSAGE (self), (gboolean )0);
-#line 296 "src/mn-message.gob"
+#line 297 "src/mn-message.gob"
 	g_return_val_if_fail (command != NULL, (gboolean )0);
-#line 727 "mn-message.c"
+#line 730 "mn-message.c"
 {
-#line 300 "src/mn-message.gob"
+#line 301 "src/mn-message.gob"
 	
     char *subst;
     int status;
@@ -745,24 +748,24 @@ mn_message_execute_command_real (MNMessage * self, const char * command, GError 
 
     return TRUE;
   }}
-#line 749 "mn-message.c"
+#line 752 "mn-message.c"
 #undef __GOB_FUNCTION__
 
-#line 324 "src/mn-message.gob"
+#line 325 "src/mn-message.gob"
 static gboolean 
 mn_message_execute_command (MNMessage * self, const char * id, GError ** err)
 {
-#line 756 "mn-message.c"
+#line 759 "mn-message.c"
 #define __GOB_FUNCTION__ "MN:Message::execute_command"
-#line 324 "src/mn-message.gob"
+#line 325 "src/mn-message.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 324 "src/mn-message.gob"
+#line 325 "src/mn-message.gob"
 	g_return_val_if_fail (MN_IS_MESSAGE (self), (gboolean )0);
-#line 324 "src/mn-message.gob"
+#line 325 "src/mn-message.gob"
 	g_return_val_if_fail (id != NULL, (gboolean )0);
-#line 764 "mn-message.c"
+#line 767 "mn-message.c"
 {
-#line 326 "src/mn-message.gob"
+#line 327 "src/mn-message.gob"
 	
     char *command;
     GError *tmp_err = NULL;
@@ -780,48 +783,48 @@ mn_message_execute_command (MNMessage * self, const char * id, GError ** err)
     g_free(command);
     return TRUE;
   }}
-#line 784 "mn-message.c"
+#line 787 "mn-message.c"
 #undef __GOB_FUNCTION__
 
-#line 344 "src/mn-message.gob"
+#line 345 "src/mn-message.gob"
 gboolean 
 mn_message_can_perform_action (MNMessage * self, MNMessageAction * action)
 {
-#line 791 "mn-message.c"
+#line 794 "mn-message.c"
 #define __GOB_FUNCTION__ "MN:Message::can_perform_action"
-#line 344 "src/mn-message.gob"
+#line 345 "src/mn-message.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 344 "src/mn-message.gob"
+#line 345 "src/mn-message.gob"
 	g_return_val_if_fail (MN_IS_MESSAGE (self), (gboolean )0);
-#line 344 "src/mn-message.gob"
+#line 345 "src/mn-message.gob"
 	g_return_val_if_fail (action != NULL, (gboolean )0);
-#line 799 "mn-message.c"
+#line 802 "mn-message.c"
 {
-#line 346 "src/mn-message.gob"
+#line 347 "src/mn-message.gob"
 	
     return mn_mailbox_has_command(self->mailbox, action->name)
       || action->can_perform(self);
   }}
-#line 806 "mn-message.c"
+#line 809 "mn-message.c"
 #undef __GOB_FUNCTION__
 
-#line 351 "src/mn-message.gob"
+#line 352 "src/mn-message.gob"
 void 
 mn_message_perform_action (MNMessage * self, MNMessageAction * action, MNMessageActionResultCallback callback, gpointer data)
 {
-#line 813 "mn-message.c"
+#line 816 "mn-message.c"
 #define __GOB_FUNCTION__ "MN:Message::perform_action"
-#line 351 "src/mn-message.gob"
+#line 352 "src/mn-message.gob"
 	g_return_if_fail (self != NULL);
-#line 351 "src/mn-message.gob"
+#line 352 "src/mn-message.gob"
 	g_return_if_fail (MN_IS_MESSAGE (self));
-#line 351 "src/mn-message.gob"
+#line 352 "src/mn-message.gob"
 	g_return_if_fail (action != NULL);
-#line 351 "src/mn-message.gob"
+#line 352 "src/mn-message.gob"
 	g_return_if_fail (callback != NULL);
-#line 823 "mn-message.c"
+#line 826 "mn-message.c"
 {
-#line 356 "src/mn-message.gob"
+#line 357 "src/mn-message.gob"
 	
     GError *err = NULL;
 
@@ -840,22 +843,22 @@ mn_message_perform_action (MNMessage * self, MNMessageAction * action, MNMessage
 	action->perform(self, request);
       }
   }}
-#line 844 "mn-message.c"
+#line 847 "mn-message.c"
 #undef __GOB_FUNCTION__
 
-#line 375 "src/mn-message.gob"
+#line 376 "src/mn-message.gob"
 void 
 mn_message_perform_action_in_thread (MNMessageActionRequest * request, MNMessageActionPerformCallback callback, gpointer user_data)
 {
-#line 851 "mn-message.c"
+#line 854 "mn-message.c"
 #define __GOB_FUNCTION__ "MN:Message::perform_action_in_thread"
-#line 375 "src/mn-message.gob"
+#line 376 "src/mn-message.gob"
 	g_return_if_fail (request != NULL);
-#line 375 "src/mn-message.gob"
+#line 376 "src/mn-message.gob"
 	g_return_if_fail (callback != NULL);
-#line 857 "mn-message.c"
+#line 860 "mn-message.c"
 {
-#line 379 "src/mn-message.gob"
+#line 380 "src/mn-message.gob"
 	
     PerformInfo *info;
 
@@ -869,17 +872,17 @@ mn_message_perform_action_in_thread (MNMessageActionRequest * request, MNMessage
 
     mn_thread_create((GThreadFunc) self_perform_action_in_thread_cb, info);
   }}
-#line 873 "mn-message.c"
+#line 876 "mn-message.c"
 #undef __GOB_FUNCTION__
 
-#line 393 "src/mn-message.gob"
+#line 394 "src/mn-message.gob"
 static void 
 mn_message_perform_action_in_thread_cb (PerformInfo * info)
 {
-#line 880 "mn-message.c"
+#line 883 "mn-message.c"
 #define __GOB_FUNCTION__ "MN:Message::perform_action_in_thread_cb"
 {
-#line 395 "src/mn-message.gob"
+#line 396 "src/mn-message.gob"
 	
     GError *err;
 
@@ -895,42 +898,42 @@ mn_message_perform_action_in_thread_cb (PerformInfo * info)
     gdk_flush();
     GDK_THREADS_LEAVE();
   }}
-#line 899 "mn-message.c"
+#line 902 "mn-message.c"
 #undef __GOB_FUNCTION__
 
-#line 411 "src/mn-message.gob"
+#line 412 "src/mn-message.gob"
 static void 
 mn_message_action_done_real (MNMessage * self, MNMessageAction * action, GError * err, MNMessageActionResultCallback callback, gpointer data)
 {
-#line 906 "mn-message.c"
+#line 909 "mn-message.c"
 #define __GOB_FUNCTION__ "MN:Message::action_done_real"
-#line 411 "src/mn-message.gob"
+#line 412 "src/mn-message.gob"
 	g_return_if_fail (self != NULL);
-#line 411 "src/mn-message.gob"
+#line 412 "src/mn-message.gob"
 	g_return_if_fail (MN_IS_MESSAGE (self));
-#line 411 "src/mn-message.gob"
+#line 412 "src/mn-message.gob"
 	g_return_if_fail (action != NULL);
-#line 914 "mn-message.c"
+#line 917 "mn-message.c"
 {
-#line 417 "src/mn-message.gob"
+#line 418 "src/mn-message.gob"
 	
     action->done(self, err);
     callback(action, err, data);
   }}
-#line 921 "mn-message.c"
+#line 924 "mn-message.c"
 #undef __GOB_FUNCTION__
 
-#line 422 "src/mn-message.gob"
+#line 423 "src/mn-message.gob"
 void 
 mn_message_action_done (MNMessageActionRequest * request, GError * err)
 {
-#line 928 "mn-message.c"
+#line 931 "mn-message.c"
 #define __GOB_FUNCTION__ "MN:Message::action_done"
-#line 422 "src/mn-message.gob"
+#line 423 "src/mn-message.gob"
 	g_return_if_fail (request != NULL);
-#line 932 "mn-message.c"
+#line 935 "mn-message.c"
 {
-#line 424 "src/mn-message.gob"
+#line 425 "src/mn-message.gob"
 	
     Self *self = request->message;
 
@@ -939,34 +942,34 @@ mn_message_action_done (MNMessageActionRequest * request, GError * err)
     g_object_unref(request->message);
     g_free(request);
   }}
-#line 943 "mn-message.c"
+#line 946 "mn-message.c"
 #undef __GOB_FUNCTION__
 
-#line 433 "src/mn-message.gob"
+#line 434 "src/mn-message.gob"
 GQuark 
 mn_message_action_error_quark (void)
 {
-#line 950 "mn-message.c"
+#line 953 "mn-message.c"
 #define __GOB_FUNCTION__ "MN:Message::action_error_quark"
 {
-#line 435 "src/mn-message.gob"
+#line 436 "src/mn-message.gob"
 	
     return g_quark_from_static_string("mn-message-action-error");
   }}
-#line 957 "mn-message.c"
+#line 960 "mn-message.c"
 #undef __GOB_FUNCTION__
 
-#line 439 "src/mn-message.gob"
+#line 440 "src/mn-message.gob"
 static gboolean 
 mn_message_builtin_can_open (MNMessage * self)
 {
-#line 964 "mn-message.c"
+#line 967 "mn-message.c"
 	MNMessageClass *klass;
-#line 439 "src/mn-message.gob"
+#line 440 "src/mn-message.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 439 "src/mn-message.gob"
+#line 440 "src/mn-message.gob"
 	g_return_val_if_fail (MN_IS_MESSAGE (self), (gboolean )0);
-#line 970 "mn-message.c"
+#line 973 "mn-message.c"
 	klass = MN_MESSAGE_GET_CLASS(self);
 
 	if(klass->builtin_can_open)
@@ -974,44 +977,44 @@ mn_message_builtin_can_open (MNMessage * self)
 	else
 		return (gboolean )(0);
 }
-#line 439 "src/mn-message.gob"
+#line 440 "src/mn-message.gob"
 static gboolean 
 ___real_mn_message_builtin_can_open (MNMessage * self G_GNUC_UNUSED)
 {
-#line 982 "mn-message.c"
+#line 985 "mn-message.c"
 #define __GOB_FUNCTION__ "MN:Message::builtin_can_open"
 {
-#line 441 "src/mn-message.gob"
+#line 442 "src/mn-message.gob"
 	
     return self->uri != NULL;
   }}
-#line 989 "mn-message.c"
+#line 992 "mn-message.c"
 #undef __GOB_FUNCTION__
 
-#line 445 "src/mn-message.gob"
+#line 446 "src/mn-message.gob"
 static void 
 mn_message_builtin_open (MNMessage * self, MNMessageActionRequest * request)
 {
-#line 996 "mn-message.c"
+#line 999 "mn-message.c"
 	MNMessageClass *klass;
-#line 445 "src/mn-message.gob"
+#line 446 "src/mn-message.gob"
 	g_return_if_fail (self != NULL);
-#line 445 "src/mn-message.gob"
+#line 446 "src/mn-message.gob"
 	g_return_if_fail (MN_IS_MESSAGE (self));
-#line 1002 "mn-message.c"
+#line 1005 "mn-message.c"
 	klass = MN_MESSAGE_GET_CLASS(self);
 
 	if(klass->builtin_open)
 		(*klass->builtin_open)(self,request);
 }
-#line 445 "src/mn-message.gob"
+#line 446 "src/mn-message.gob"
 static void 
 ___real_mn_message_builtin_open (MNMessage * self G_GNUC_UNUSED, MNMessageActionRequest * request)
 {
-#line 1012 "mn-message.c"
+#line 1015 "mn-message.c"
 #define __GOB_FUNCTION__ "MN:Message::builtin_open"
 {
-#line 447 "src/mn-message.gob"
+#line 448 "src/mn-message.gob"
 	
     GError *err = NULL;
 
@@ -1019,40 +1022,40 @@ ___real_mn_message_builtin_open (MNMessage * self G_GNUC_UNUSED, MNMessageAction
 
     self_action_done(request, err);
   }}
-#line 1023 "mn-message.c"
+#line 1026 "mn-message.c"
 #undef __GOB_FUNCTION__
 
-#line 455 "src/mn-message.gob"
+#line 456 "src/mn-message.gob"
 static void 
 mn_message_open_done (MNMessage * self, GError * err)
 {
-#line 1030 "mn-message.c"
+#line 1033 "mn-message.c"
 #define __GOB_FUNCTION__ "MN:Message::open_done"
-#line 455 "src/mn-message.gob"
+#line 456 "src/mn-message.gob"
 	g_return_if_fail (self != NULL);
-#line 455 "src/mn-message.gob"
+#line 456 "src/mn-message.gob"
 	g_return_if_fail (MN_IS_MESSAGE (self));
-#line 1036 "mn-message.c"
+#line 1039 "mn-message.c"
 {
-#line 457 "src/mn-message.gob"
+#line 458 "src/mn-message.gob"
 	
     if (! err)
-      mn_mailbox_consider_as_read(self);
+      self_consider_as_read(self); /* [1] */
   }}
-#line 1043 "mn-message.c"
+#line 1046 "mn-message.c"
 #undef __GOB_FUNCTION__
 
-#line 462 "src/mn-message.gob"
+#line 463 "src/mn-message.gob"
 static gboolean 
 mn_message_builtin_can_mark_as_read (MNMessage * self)
 {
-#line 1050 "mn-message.c"
+#line 1053 "mn-message.c"
 	MNMessageClass *klass;
-#line 462 "src/mn-message.gob"
+#line 463 "src/mn-message.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 462 "src/mn-message.gob"
+#line 463 "src/mn-message.gob"
 	g_return_val_if_fail (MN_IS_MESSAGE (self), (gboolean )0);
-#line 1056 "mn-message.c"
+#line 1059 "mn-message.c"
 	klass = MN_MESSAGE_GET_CLASS(self);
 
 	if(klass->builtin_can_mark_as_read)
@@ -1060,68 +1063,68 @@ mn_message_builtin_can_mark_as_read (MNMessage * self)
 	else
 		return (gboolean )(0);
 }
-#line 462 "src/mn-message.gob"
+#line 463 "src/mn-message.gob"
 static gboolean 
 ___real_mn_message_builtin_can_mark_as_read (MNMessage * self G_GNUC_UNUSED)
 {
-#line 1068 "mn-message.c"
+#line 1071 "mn-message.c"
 #define __GOB_FUNCTION__ "MN:Message::builtin_can_mark_as_read"
 {
-#line 464 "src/mn-message.gob"
+#line 465 "src/mn-message.gob"
 	
     return SELF_GET_CLASS(self)->builtin_mark_as_read != NULL;
   }}
-#line 1075 "mn-message.c"
+#line 1078 "mn-message.c"
 #undef __GOB_FUNCTION__
 
-#line 468 "src/mn-message.gob"
+#line 469 "src/mn-message.gob"
 static void 
 mn_message_builtin_mark_as_read (MNMessage * self, MNMessageActionRequest * request)
 {
-#line 1082 "mn-message.c"
+#line 1085 "mn-message.c"
 	MNMessageClass *klass;
-#line 468 "src/mn-message.gob"
+#line 469 "src/mn-message.gob"
 	g_return_if_fail (self != NULL);
-#line 468 "src/mn-message.gob"
+#line 469 "src/mn-message.gob"
 	g_return_if_fail (MN_IS_MESSAGE (self));
-#line 1088 "mn-message.c"
+#line 1091 "mn-message.c"
 	klass = MN_MESSAGE_GET_CLASS(self);
 
 	if(klass->builtin_mark_as_read)
 		(*klass->builtin_mark_as_read)(self,request);
 }
 
-#line 471 "src/mn-message.gob"
+#line 472 "src/mn-message.gob"
 static void 
 mn_message_mark_as_read_done (MNMessage * self, GError * err)
 {
-#line 1099 "mn-message.c"
+#line 1102 "mn-message.c"
 #define __GOB_FUNCTION__ "MN:Message::mark_as_read_done"
-#line 471 "src/mn-message.gob"
+#line 472 "src/mn-message.gob"
 	g_return_if_fail (self != NULL);
-#line 471 "src/mn-message.gob"
+#line 472 "src/mn-message.gob"
 	g_return_if_fail (MN_IS_MESSAGE (self));
-#line 1105 "mn-message.c"
+#line 1108 "mn-message.c"
 {
-#line 473 "src/mn-message.gob"
+#line 474 "src/mn-message.gob"
 	
     if (! err)
-      mn_mailbox_consider_as_read(self);
+      self_consider_as_read(self); /* [1] */
   }}
-#line 1112 "mn-message.c"
+#line 1115 "mn-message.c"
 #undef __GOB_FUNCTION__
 
-#line 478 "src/mn-message.gob"
+#line 479 "src/mn-message.gob"
 static gboolean 
 mn_message_builtin_can_mark_as_spam (MNMessage * self)
 {
-#line 1119 "mn-message.c"
+#line 1122 "mn-message.c"
 	MNMessageClass *klass;
-#line 478 "src/mn-message.gob"
+#line 479 "src/mn-message.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 478 "src/mn-message.gob"
+#line 479 "src/mn-message.gob"
 	g_return_val_if_fail (MN_IS_MESSAGE (self), (gboolean )0);
-#line 1125 "mn-message.c"
+#line 1128 "mn-message.c"
 	klass = MN_MESSAGE_GET_CLASS(self);
 
 	if(klass->builtin_can_mark_as_spam)
@@ -1129,68 +1132,68 @@ mn_message_builtin_can_mark_as_spam (MNMessage * self)
 	else
 		return (gboolean )(0);
 }
-#line 478 "src/mn-message.gob"
+#line 479 "src/mn-message.gob"
 static gboolean 
 ___real_mn_message_builtin_can_mark_as_spam (MNMessage * self G_GNUC_UNUSED)
 {
-#line 1137 "mn-message.c"
+#line 1140 "mn-message.c"
 #define __GOB_FUNCTION__ "MN:Message::builtin_can_mark_as_spam"
 {
-#line 480 "src/mn-message.gob"
+#line 481 "src/mn-message.gob"
 	
     return SELF_GET_CLASS(self)->builtin_mark_as_spam != NULL;
   }}
-#line 1144 "mn-message.c"
+#line 1147 "mn-message.c"
 #undef __GOB_FUNCTION__
 
-#line 484 "src/mn-message.gob"
+#line 485 "src/mn-message.gob"
 static void 
 mn_message_builtin_mark_as_spam (MNMessage * self, MNMessageActionRequest * request)
 {
-#line 1151 "mn-message.c"
+#line 1154 "mn-message.c"
 	MNMessageClass *klass;
-#line 484 "src/mn-message.gob"
+#line 485 "src/mn-message.gob"
 	g_return_if_fail (self != NULL);
-#line 484 "src/mn-message.gob"
+#line 485 "src/mn-message.gob"
 	g_return_if_fail (MN_IS_MESSAGE (self));
-#line 1157 "mn-message.c"
+#line 1160 "mn-message.c"
 	klass = MN_MESSAGE_GET_CLASS(self);
 
 	if(klass->builtin_mark_as_spam)
 		(*klass->builtin_mark_as_spam)(self,request);
 }
 
-#line 487 "src/mn-message.gob"
+#line 488 "src/mn-message.gob"
 static void 
 mn_message_mark_as_spam_done (MNMessage * self, GError * err)
 {
-#line 1168 "mn-message.c"
+#line 1171 "mn-message.c"
 #define __GOB_FUNCTION__ "MN:Message::mark_as_spam_done"
-#line 487 "src/mn-message.gob"
+#line 488 "src/mn-message.gob"
 	g_return_if_fail (self != NULL);
-#line 487 "src/mn-message.gob"
+#line 488 "src/mn-message.gob"
 	g_return_if_fail (MN_IS_MESSAGE (self));
-#line 1174 "mn-message.c"
+#line 1177 "mn-message.c"
 {
-#line 489 "src/mn-message.gob"
+#line 490 "src/mn-message.gob"
 	
     if (! err)
-      mn_mailbox_consider_as_read(self);
+      self_consider_as_read(self); /* [1] */
   }}
-#line 1181 "mn-message.c"
+#line 1184 "mn-message.c"
 #undef __GOB_FUNCTION__
 
-#line 494 "src/mn-message.gob"
+#line 495 "src/mn-message.gob"
 static gboolean 
 mn_message_builtin_can_delete (MNMessage * self)
 {
-#line 1188 "mn-message.c"
+#line 1191 "mn-message.c"
 	MNMessageClass *klass;
-#line 494 "src/mn-message.gob"
+#line 495 "src/mn-message.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 494 "src/mn-message.gob"
+#line 495 "src/mn-message.gob"
 	g_return_val_if_fail (MN_IS_MESSAGE (self), (gboolean )0);
-#line 1194 "mn-message.c"
+#line 1197 "mn-message.c"
 	klass = MN_MESSAGE_GET_CLASS(self);
 
 	if(klass->builtin_can_delete)
@@ -1198,70 +1201,145 @@ mn_message_builtin_can_delete (MNMessage * self)
 	else
 		return (gboolean )(0);
 }
-#line 494 "src/mn-message.gob"
+#line 495 "src/mn-message.gob"
 static gboolean 
 ___real_mn_message_builtin_can_delete (MNMessage * self G_GNUC_UNUSED)
 {
-#line 1206 "mn-message.c"
+#line 1209 "mn-message.c"
 #define __GOB_FUNCTION__ "MN:Message::builtin_can_delete"
 {
-#line 496 "src/mn-message.gob"
+#line 497 "src/mn-message.gob"
 	
     return SELF_GET_CLASS(self)->builtin_delete != NULL;
   }}
-#line 1213 "mn-message.c"
+#line 1216 "mn-message.c"
 #undef __GOB_FUNCTION__
 
-#line 500 "src/mn-message.gob"
+#line 501 "src/mn-message.gob"
 static void 
 mn_message_builtin_delete (MNMessage * self, MNMessageActionRequest * request)
 {
-#line 1220 "mn-message.c"
+#line 1223 "mn-message.c"
 	MNMessageClass *klass;
-#line 500 "src/mn-message.gob"
+#line 501 "src/mn-message.gob"
 	g_return_if_fail (self != NULL);
-#line 500 "src/mn-message.gob"
+#line 501 "src/mn-message.gob"
 	g_return_if_fail (MN_IS_MESSAGE (self));
-#line 1226 "mn-message.c"
+#line 1229 "mn-message.c"
 	klass = MN_MESSAGE_GET_CLASS(self);
 
 	if(klass->builtin_delete)
 		(*klass->builtin_delete)(self,request);
 }
 
-#line 503 "src/mn-message.gob"
+#line 504 "src/mn-message.gob"
 static void 
 mn_message_delete_done (MNMessage * self, GError * err)
 {
-#line 1237 "mn-message.c"
+#line 1240 "mn-message.c"
 #define __GOB_FUNCTION__ "MN:Message::delete_done"
-#line 503 "src/mn-message.gob"
+#line 504 "src/mn-message.gob"
 	g_return_if_fail (self != NULL);
-#line 503 "src/mn-message.gob"
+#line 504 "src/mn-message.gob"
 	g_return_if_fail (MN_IS_MESSAGE (self));
-#line 1243 "mn-message.c"
+#line 1246 "mn-message.c"
 {
-#line 505 "src/mn-message.gob"
+#line 506 "src/mn-message.gob"
 	
     if (! err)
-      mn_mailbox_consider_as_read(self);
+      self_consider_as_read(self); /* [1] */
+  }}
+#line 1253 "mn-message.c"
+#undef __GOB_FUNCTION__
+
+#line 511 "src/mn-message.gob"
+void 
+mn_message_consider_as_read (MNMessage * self)
+{
+#line 1260 "mn-message.c"
+#define __GOB_FUNCTION__ "MN:Message::consider_as_read"
+#line 511 "src/mn-message.gob"
+	g_return_if_fail (self != NULL);
+#line 511 "src/mn-message.gob"
+	g_return_if_fail (MN_IS_MESSAGE (self));
+#line 1266 "mn-message.c"
+{
+#line 513 "src/mn-message.gob"
+	
+    GSList *list;
+    GSList *l;
+    gboolean exists = FALSE;
+
+    list = mn_conf_get_string_list(MN_CONF_MESSAGES_CONSIDERED_AS_READ);
+
+    MN_LIST_FOREACH(l, list)
+      {
+	const char *id = l->data;
+
+	if (! strcmp(id, self->id))
+	  {
+	    exists = TRUE;
+	    break;
+	  }
+      }
+
+    if (! exists)
+      {
+	list = g_slist_prepend(list, g_strdup(self->id));
+
+	mn_conf_set_string_list(MN_CONF_MESSAGES_CONSIDERED_AS_READ, list);
+      }
+
+    mn_g_slist_free_deep(list);
+  }}
+#line 1296 "mn-message.c"
+#undef __GOB_FUNCTION__
+
+#line 545 "src/mn-message.gob"
+void 
+mn_message_consider_as_read_list (GList * messages)
+{
+#line 1303 "mn-message.c"
+#define __GOB_FUNCTION__ "MN:Message::consider_as_read_list"
+{
+#line 547 "src/mn-message.gob"
+	
+    GHashTable *set;
+    unsigned int old_size;
+    GList *l;
+
+    set = mn_conf_get_string_hash_set(MN_CONF_MESSAGES_CONSIDERED_AS_READ);
+
+    old_size = g_hash_table_size(set);
+
+    MN_LIST_FOREACH(l, messages)
+      {
+	MNMessage *message = l->data;
+
+	g_hash_table_replace(set, g_strdup(message->id), GINT_TO_POINTER(TRUE));
+      }
+
+    if (g_hash_table_size(set) != old_size)
+      mn_conf_set_string_hash_set(MN_CONF_MESSAGES_CONSIDERED_AS_READ, set);
+
+    g_hash_table_destroy(set);
   }}
-#line 1250 "mn-message.c"
+#line 1328 "mn-message.c"
 #undef __GOB_FUNCTION__
 
-#line 510 "src/mn-message.gob"
+#line 569 "src/mn-message.gob"
 MNMessage * 
 mn_message_new (MNMailbox * mailbox, time_t sent_time, const char * id, const char * mid, const char * from, const char * subject, const char * uri, MNMessageFlags flags)
 {
-#line 1257 "mn-message.c"
+#line 1335 "mn-message.c"
 #define __GOB_FUNCTION__ "MN:Message::new"
-#line 510 "src/mn-message.gob"
+#line 569 "src/mn-message.gob"
 	g_return_val_if_fail (mailbox != NULL, (MNMessage * )0);
-#line 510 "src/mn-message.gob"
+#line 569 "src/mn-message.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX (mailbox), (MNMessage * )0);
-#line 1263 "mn-message.c"
+#line 1341 "mn-message.c"
 {
-#line 519 "src/mn-message.gob"
+#line 578 "src/mn-message.gob"
 	
     return GET_NEW_VARG(MN_MESSAGE_PROP_MAILBOX(mailbox),
 			MN_MESSAGE_PROP_SENT_TIME(sent_time),
@@ -1273,22 +1351,22 @@ mn_message_new (MNMailbox * mailbox, time_t sent_time, const char * id, const ch
 			MN_MESSAGE_PROP_FLAGS(flags),
 			NULL);
   }}
-#line 1277 "mn-message.c"
+#line 1355 "mn-message.c"
 #undef __GOB_FUNCTION__
 
-#line 531 "src/mn-message.gob"
+#line 590 "src/mn-message.gob"
 xmlNode * 
 mn_message_xml_node_new (MNMessage * self)
 {
-#line 1284 "mn-message.c"
+#line 1362 "mn-message.c"
 #define __GOB_FUNCTION__ "MN:Message::xml_node_new"
-#line 531 "src/mn-message.gob"
+#line 590 "src/mn-message.gob"
 	g_return_val_if_fail (self != NULL, (xmlNode * )0);
-#line 531 "src/mn-message.gob"
+#line 590 "src/mn-message.gob"
 	g_return_val_if_fail (MN_IS_MESSAGE (self), (xmlNode * )0);
-#line 1290 "mn-message.c"
+#line 1368 "mn-message.c"
 {
-#line 533 "src/mn-message.gob"
+#line 592 "src/mn-message.gob"
 	
     xmlNode *node;
 
@@ -1303,5 +1381,5 @@ mn_message_xml_node_new (MNMessage * self)
 
     return node;
   }}
-#line 1307 "mn-message.c"
+#line 1385 "mn-message.c"
 #undef __GOB_FUNCTION__
diff --git a/build/src/mn-message.h b/build/src/mn-message.h
@@ -106,23 +106,29 @@ struct _MNMessageClass {
  * Public methods
  */
 GType	mn_message_get_type	(void) G_GNUC_CONST;
-#line 202 "src/mn-message.gob"
+#line 203 "src/mn-message.gob"
 MNMessageAction * 	mn_message_get_action	(const char * name);
 #line 112 "mn-message.h"
-#line 344 "src/mn-message.gob"
+#line 345 "src/mn-message.gob"
 gboolean 	mn_message_can_perform_action	(MNMessage * self,
 					MNMessageAction * action);
 #line 116 "mn-message.h"
-#line 351 "src/mn-message.gob"
+#line 352 "src/mn-message.gob"
 void 	mn_message_perform_action	(MNMessage * self,
 					MNMessageAction * action,
 					MNMessageActionResultCallback callback,
 					gpointer data);
 #line 122 "mn-message.h"
-#line 433 "src/mn-message.gob"
+#line 434 "src/mn-message.gob"
 GQuark 	mn_message_action_error_quark	(void);
 #line 125 "mn-message.h"
-#line 510 "src/mn-message.gob"
+#line 511 "src/mn-message.gob"
+void 	mn_message_consider_as_read	(MNMessage * self);
+#line 128 "mn-message.h"
+#line 545 "src/mn-message.gob"
+void 	mn_message_consider_as_read_list	(GList * messages);
+#line 131 "mn-message.h"
+#line 569 "src/mn-message.gob"
 MNMessage * 	mn_message_new	(MNMailbox * mailbox,
 					time_t sent_time,
 					const char * id,
@@ -131,10 +137,10 @@ MNMessage * 	mn_message_new	(MNMailbox * mailbox,
 					const char * subject,
 					const char * uri,
 					MNMessageFlags flags);
-#line 135 "mn-message.h"
-#line 531 "src/mn-message.gob"
+#line 141 "mn-message.h"
+#line 590 "src/mn-message.gob"
 xmlNode * 	mn_message_xml_node_new	(MNMessage * self);
-#line 138 "mn-message.h"
+#line 144 "mn-message.h"
 
 /*
  * Argument wrapping macros
diff --git a/build/src/mn-shell.c b/build/src/mn-shell.c
@@ -169,25 +169,25 @@ static void mn_shell_update_icon (MNShell * self);
 #line 569 "src/mn-shell.gob"
 static void mn_shell_update_tooltip (MNShell * self);
 #line 172 "mn-shell.c"
-#line 717 "src/mn-shell.gob"
+#line 719 "src/mn-shell.gob"
 static int mn_shell_new_mailboxes_compare_cb (MNMailbox * a, MNMailbox * b);
 #line 175 "mn-shell.c"
-#line 736 "src/mn-shell.gob"
+#line 738 "src/mn-shell.gob"
 static GtkWidget * mn_shell_tooltip_section_new (GtkVBox ** vbox, const char * title);
 #line 178 "mn-shell.c"
-#line 756 "src/mn-shell.gob"
+#line 758 "src/mn-shell.gob"
 static void mn_shell_tooltip_text_section_new (GtkVBox ** vbox, const char * title, const char * text);
 #line 181 "mn-shell.c"
-#line 773 "src/mn-shell.gob"
+#line 775 "src/mn-shell.gob"
 static void mn_shell_open_latest_message (MNShell * self);
 #line 184 "mn-shell.c"
-#line 790 "src/mn-shell.gob"
+#line 792 "src/mn-shell.gob"
 static void mn_shell_open_latest_message_done_cb (MNMessageAction * action, GError * err, gpointer data);
 #line 187 "mn-shell.c"
-#line 846 "src/mn-shell.gob"
+#line 848 "src/mn-shell.gob"
 static void mn_shell_show_window (MNShell * self, GType type, GtkWidget ** ptr, guint32 timestamp);
 #line 190 "mn-shell.c"
-#line 874 "src/mn-shell.gob"
+#line 876 "src/mn-shell.gob"
 static void mn_shell_mailbox_properties_dialog_weak_notify_cb (gpointer data, GObject * former_object);
 #line 193 "mn-shell.c"
 
@@ -1064,7 +1064,7 @@ mn_shell_update_icon (MNShell * self)
       {
 	MNMailbox *mailbox = l->data;
 
-	if (mailbox->messages->len != 0)
+	if (g_hash_table_size(mailbox->messages) != 0)
 	  has_new = TRUE;
 	if (mailbox->error)
 	  blink = TRUE;
@@ -1127,7 +1127,7 @@ mn_shell_update_tooltip (MNShell * self)
           {
 	    MNMailbox *mailbox = la->data;
 
-	    if (mailbox->messages->len != 0)
+	    if (g_hash_table_size(mailbox->messages) != 0)
 	      new_mailboxes = g_slist_insert_sorted(new_mailboxes, mailbox, (GCompareFunc) self_new_mailboxes_compare_cb);
 
 	    if (mailbox->error)
@@ -1142,12 +1142,14 @@ mn_shell_update_tooltip (MNShell * self)
 	      {
 		MNMailbox *mailbox = lb->data;
 
-		g_assert(mailbox->messages->len != 0);
+		g_assert(g_hash_table_size(mailbox->messages) != 0);
 
 		if (*string->str)
 		  g_string_append_c(string, '\n');
 
-		g_string_append_printf(string, _("%s (%i)"), mailbox->runtime_name, mailbox->messages->len);
+		g_string_append_printf(string, _("%s (%i)"),
+				       mailbox->runtime_name,
+				       (int) g_hash_table_size(mailbox->messages));
 	      }
 	    g_slist_free(new_mailboxes);
 
@@ -1258,17 +1260,17 @@ mn_shell_update_tooltip (MNShell * self)
     else
       mn_mail_icon_set_tip(self->icon, _("You have no new mail."));
   }}
-#line 1262 "mn-shell.c"
+#line 1264 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 717 "src/mn-shell.gob"
+#line 719 "src/mn-shell.gob"
 static int 
 mn_shell_new_mailboxes_compare_cb (MNMailbox * a, MNMailbox * b)
 {
-#line 1269 "mn-shell.c"
+#line 1271 "mn-shell.c"
 #define __GOB_FUNCTION__ "MN:Shell::new_mailboxes_compare_cb"
 {
-#line 719 "src/mn-shell.gob"
+#line 721 "src/mn-shell.gob"
 	
     int cmp;
 
@@ -1278,29 +1280,29 @@ mn_shell_new_mailboxes_compare_cb (MNMailbox * a, MNMailbox * b)
       return cmp;
 
     /* sort by number of messages (descending order) */
-    cmp = b->messages->len - a->messages->len;
+    cmp = (int) g_hash_table_size(b->messages) - g_hash_table_size(a->messages);
     if (cmp != 0)
       return cmp;
 
     /* sort by name (ascending order) */
     return mn_mailboxes_compare_by_name_func(a, b);
   }}
-#line 1289 "mn-shell.c"
+#line 1291 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 736 "src/mn-shell.gob"
+#line 738 "src/mn-shell.gob"
 static GtkWidget * 
 mn_shell_tooltip_section_new (GtkVBox ** vbox, const char * title)
 {
-#line 1296 "mn-shell.c"
+#line 1298 "mn-shell.c"
 #define __GOB_FUNCTION__ "MN:Shell::tooltip_section_new"
-#line 736 "src/mn-shell.gob"
+#line 738 "src/mn-shell.gob"
 	g_return_val_if_fail (vbox != NULL, (GtkWidget * )0);
-#line 736 "src/mn-shell.gob"
+#line 738 "src/mn-shell.gob"
 	g_return_val_if_fail (title != NULL, (GtkWidget * )0);
-#line 1302 "mn-shell.c"
+#line 1304 "mn-shell.c"
 {
-#line 739 "src/mn-shell.gob"
+#line 741 "src/mn-shell.gob"
 	
     GtkWidget *section;
     GtkWidget *label;
@@ -1317,24 +1319,24 @@ mn_shell_tooltip_section_new (GtkVBox ** vbox, const char * title)
 
     return alignment;
   }}
-#line 1321 "mn-shell.c"
+#line 1323 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 756 "src/mn-shell.gob"
+#line 758 "src/mn-shell.gob"
 static void 
 mn_shell_tooltip_text_section_new (GtkVBox ** vbox, const char * title, const char * text)
 {
-#line 1328 "mn-shell.c"
+#line 1330 "mn-shell.c"
 #define __GOB_FUNCTION__ "MN:Shell::tooltip_text_section_new"
-#line 756 "src/mn-shell.gob"
+#line 758 "src/mn-shell.gob"
 	g_return_if_fail (vbox != NULL);
-#line 756 "src/mn-shell.gob"
+#line 758 "src/mn-shell.gob"
 	g_return_if_fail (title != NULL);
-#line 756 "src/mn-shell.gob"
+#line 758 "src/mn-shell.gob"
 	g_return_if_fail (text != NULL);
-#line 1336 "mn-shell.c"
+#line 1338 "mn-shell.c"
 {
-#line 760 "src/mn-shell.gob"
+#line 762 "src/mn-shell.gob"
 	
     GtkWidget *alignment;
     GtkWidget *label;
@@ -1347,22 +1349,22 @@ mn_shell_tooltip_text_section_new (GtkVBox ** vbox, const char * title, const ch
 
     gtk_container_add(GTK_CONTAINER(alignment), label);
   }}
-#line 1351 "mn-shell.c"
+#line 1353 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 773 "src/mn-shell.gob"
+#line 775 "src/mn-shell.gob"
 static void 
 mn_shell_open_latest_message (MNShell * self)
 {
-#line 1358 "mn-shell.c"
+#line 1360 "mn-shell.c"
 #define __GOB_FUNCTION__ "MN:Shell::open_latest_message"
-#line 773 "src/mn-shell.gob"
+#line 775 "src/mn-shell.gob"
 	g_return_if_fail (self != NULL);
-#line 773 "src/mn-shell.gob"
+#line 775 "src/mn-shell.gob"
 	g_return_if_fail (MN_IS_SHELL (self));
-#line 1364 "mn-shell.c"
+#line 1366 "mn-shell.c"
 {
-#line 775 "src/mn-shell.gob"
+#line 777 "src/mn-shell.gob"
 	
     MNMessage *message;
     MNMessageAction *action;
@@ -1377,167 +1379,167 @@ mn_shell_open_latest_message (MNShell * self)
 
     mn_message_perform_action(message, action, self_open_latest_message_done_cb, NULL);
   }}
-#line 1381 "mn-shell.c"
+#line 1383 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 790 "src/mn-shell.gob"
+#line 792 "src/mn-shell.gob"
 static void 
 mn_shell_open_latest_message_done_cb (MNMessageAction * action, GError * err, gpointer data)
 {
-#line 1388 "mn-shell.c"
+#line 1390 "mn-shell.c"
 #define __GOB_FUNCTION__ "MN:Shell::open_latest_message_done_cb"
 {
-#line 792 "src/mn-shell.gob"
+#line 794 "src/mn-shell.gob"
 	
     if (err && ! g_error_matches(err, MN_MESSAGE_ACTION_ERROR, MN_MESSAGE_ACTION_ERROR_CANCELLED))
       mn_show_error_dialog(NULL, _("Unable to open the latest message"), "%s", err->message);
   }}
-#line 1396 "mn-shell.c"
+#line 1398 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 797 "src/mn-shell.gob"
+#line 799 "src/mn-shell.gob"
 MNShell * 
 mn_shell_new (DBusGConnection * session_bus, DBusGProxy * session_bus_proxy)
 {
-#line 1403 "mn-shell.c"
+#line 1405 "mn-shell.c"
 #define __GOB_FUNCTION__ "MN:Shell::new"
-#line 797 "src/mn-shell.gob"
+#line 799 "src/mn-shell.gob"
 	g_return_val_if_fail (session_bus != NULL, (MNShell * )0);
-#line 797 "src/mn-shell.gob"
+#line 799 "src/mn-shell.gob"
 	g_return_val_if_fail (session_bus_proxy != NULL, (MNShell * )0);
-#line 1409 "mn-shell.c"
+#line 1411 "mn-shell.c"
 {
-#line 800 "src/mn-shell.gob"
+#line 802 "src/mn-shell.gob"
 	
     return GET_NEW_VARG(MN_SHELL_PROP_SESSION_BUS(session_bus),
 			MN_SHELL_PROP_SESSION_BUS_PROXY(session_bus_proxy),
 			NULL);
   }}
-#line 1417 "mn-shell.c"
+#line 1419 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 806 "src/mn-shell.gob"
+#line 808 "src/mn-shell.gob"
 void 
 mn_shell_consider_new_mail_as_read (MNShell * self)
 {
-#line 1424 "mn-shell.c"
+#line 1426 "mn-shell.c"
 #define __GOB_FUNCTION__ "MN:Shell::consider_new_mail_as_read"
-#line 806 "src/mn-shell.gob"
+#line 808 "src/mn-shell.gob"
 	g_return_if_fail (self != NULL);
-#line 806 "src/mn-shell.gob"
+#line 808 "src/mn-shell.gob"
 	g_return_if_fail (MN_IS_SHELL (self));
-#line 1430 "mn-shell.c"
+#line 1432 "mn-shell.c"
 {
-#line 808 "src/mn-shell.gob"
+#line 810 "src/mn-shell.gob"
 	
     GList *l;
 
     MN_LIST_FOREACH(l, self->mailboxes->list)
       {
 	MNMailbox *mailbox = l->data;
-	GSList *list;
+	GList *list;
 
-	list = mn_g_ptr_array_to_slist(mailbox->messages);
-	mn_mailbox_consider_as_read_list(list);
-	g_slist_free(list);
+	list = g_hash_table_get_values(mailbox->messages);
+	mn_message_consider_as_read_list(list);
+	g_list_free(list);
       }
   }}
-#line 1446 "mn-shell.c"
+#line 1448 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 822 "src/mn-shell.gob"
+#line 824 "src/mn-shell.gob"
 void 
 mn_shell_update (MNShell * self)
 {
-#line 1453 "mn-shell.c"
+#line 1455 "mn-shell.c"
 #define __GOB_FUNCTION__ "MN:Shell::update"
-#line 822 "src/mn-shell.gob"
+#line 824 "src/mn-shell.gob"
 	g_return_if_fail (self != NULL);
-#line 822 "src/mn-shell.gob"
+#line 824 "src/mn-shell.gob"
 	g_return_if_fail (MN_IS_SHELL (self));
-#line 1459 "mn-shell.c"
+#line 1461 "mn-shell.c"
 {
-#line 824 "src/mn-shell.gob"
+#line 826 "src/mn-shell.gob"
 	
     mn_mailboxes_check(self->mailboxes);
   }}
-#line 1465 "mn-shell.c"
+#line 1467 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 828 "src/mn-shell.gob"
+#line 830 "src/mn-shell.gob"
 void 
 mn_shell_quit (MNShell * self)
 {
-#line 1472 "mn-shell.c"
+#line 1474 "mn-shell.c"
 #define __GOB_FUNCTION__ "MN:Shell::quit"
-#line 828 "src/mn-shell.gob"
+#line 830 "src/mn-shell.gob"
 	g_return_if_fail (self != NULL);
-#line 828 "src/mn-shell.gob"
+#line 830 "src/mn-shell.gob"
 	g_return_if_fail (MN_IS_SHELL (self));
-#line 1478 "mn-shell.c"
+#line 1480 "mn-shell.c"
 {
-#line 830 "src/mn-shell.gob"
+#line 832 "src/mn-shell.gob"
 	
     g_object_unref(self);
   }}
-#line 1484 "mn-shell.c"
+#line 1486 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 834 "src/mn-shell.gob"
+#line 836 "src/mn-shell.gob"
 void 
 mn_shell_show_properties_dialog (MNShell * self, guint32 timestamp)
 {
-#line 1491 "mn-shell.c"
+#line 1493 "mn-shell.c"
 #define __GOB_FUNCTION__ "MN:Shell::show_properties_dialog"
-#line 834 "src/mn-shell.gob"
+#line 836 "src/mn-shell.gob"
 	g_return_if_fail (self != NULL);
-#line 834 "src/mn-shell.gob"
+#line 836 "src/mn-shell.gob"
 	g_return_if_fail (MN_IS_SHELL (self));
-#line 1497 "mn-shell.c"
+#line 1499 "mn-shell.c"
 {
-#line 836 "src/mn-shell.gob"
+#line 838 "src/mn-shell.gob"
 	
     self_show_window(self, MN_TYPE_PROPERTIES_DIALOG, &selfp->properties_dialog, timestamp);
   }}
-#line 1503 "mn-shell.c"
+#line 1505 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 840 "src/mn-shell.gob"
+#line 842 "src/mn-shell.gob"
 void 
 mn_shell_show_about_dialog (MNShell * self, guint32 timestamp)
 {
-#line 1510 "mn-shell.c"
+#line 1512 "mn-shell.c"
 #define __GOB_FUNCTION__ "MN:Shell::show_about_dialog"
-#line 840 "src/mn-shell.gob"
+#line 842 "src/mn-shell.gob"
 	g_return_if_fail (self != NULL);
-#line 840 "src/mn-shell.gob"
+#line 842 "src/mn-shell.gob"
 	g_return_if_fail (MN_IS_SHELL (self));
-#line 1516 "mn-shell.c"
+#line 1518 "mn-shell.c"
 {
-#line 842 "src/mn-shell.gob"
+#line 844 "src/mn-shell.gob"
 	
     self_show_window(self, MN_TYPE_ABOUT_DIALOG, &selfp->about_dialog, timestamp);
   }}
-#line 1522 "mn-shell.c"
+#line 1524 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 846 "src/mn-shell.gob"
+#line 848 "src/mn-shell.gob"
 static void 
 mn_shell_show_window (MNShell * self, GType type, GtkWidget ** ptr, guint32 timestamp)
 {
-#line 1529 "mn-shell.c"
+#line 1531 "mn-shell.c"
 #define __GOB_FUNCTION__ "MN:Shell::show_window"
-#line 846 "src/mn-shell.gob"
+#line 848 "src/mn-shell.gob"
 	g_return_if_fail (self != NULL);
-#line 846 "src/mn-shell.gob"
+#line 848 "src/mn-shell.gob"
 	g_return_if_fail (MN_IS_SHELL (self));
-#line 846 "src/mn-shell.gob"
+#line 848 "src/mn-shell.gob"
 	g_return_if_fail (type != 0);
-#line 846 "src/mn-shell.gob"
+#line 848 "src/mn-shell.gob"
 	g_return_if_fail (ptr != NULL);
-#line 1539 "mn-shell.c"
+#line 1541 "mn-shell.c"
 {
-#line 851 "src/mn-shell.gob"
+#line 853 "src/mn-shell.gob"
 	
     if (*ptr)
       {
@@ -1553,66 +1555,66 @@ mn_shell_show_window (MNShell * self, GType type, GtkWidget ** ptr, guint32 time
 
     gtk_widget_show(*ptr);
   }}
-#line 1557 "mn-shell.c"
+#line 1559 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 867 "src/mn-shell.gob"
+#line 869 "src/mn-shell.gob"
 void 
 mn_shell_add_mailbox_properties_dialog (MNShell * self, MNMailboxPropertiesDialog * dialog)
 {
-#line 1564 "mn-shell.c"
+#line 1566 "mn-shell.c"
 #define __GOB_FUNCTION__ "MN:Shell::add_mailbox_properties_dialog"
-#line 867 "src/mn-shell.gob"
+#line 869 "src/mn-shell.gob"
 	g_return_if_fail (self != NULL);
-#line 867 "src/mn-shell.gob"
+#line 869 "src/mn-shell.gob"
 	g_return_if_fail (MN_IS_SHELL (self));
-#line 867 "src/mn-shell.gob"
+#line 869 "src/mn-shell.gob"
 	g_return_if_fail (dialog != NULL);
-#line 867 "src/mn-shell.gob"
+#line 869 "src/mn-shell.gob"
 	g_return_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (dialog));
-#line 1574 "mn-shell.c"
+#line 1576 "mn-shell.c"
 {
-#line 869 "src/mn-shell.gob"
+#line 871 "src/mn-shell.gob"
 	
     selfp->mailbox_properties_dialogs = g_slist_append(selfp->mailbox_properties_dialogs, dialog);
     g_object_weak_ref(G_OBJECT(dialog), self_mailbox_properties_dialog_weak_notify_cb, self);
   }}
-#line 1581 "mn-shell.c"
+#line 1583 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 874 "src/mn-shell.gob"
+#line 876 "src/mn-shell.gob"
 static void 
 mn_shell_mailbox_properties_dialog_weak_notify_cb (gpointer data, GObject * former_object)
 {
-#line 1588 "mn-shell.c"
+#line 1590 "mn-shell.c"
 #define __GOB_FUNCTION__ "MN:Shell::mailbox_properties_dialog_weak_notify_cb"
 {
-#line 877 "src/mn-shell.gob"
+#line 879 "src/mn-shell.gob"
 	
     Self *self = data;
 
     selfp->mailbox_properties_dialogs = g_slist_remove(selfp->mailbox_properties_dialogs, former_object);
   }}
-#line 1597 "mn-shell.c"
+#line 1599 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 883 "src/mn-shell.gob"
+#line 885 "src/mn-shell.gob"
 MNMailboxPropertiesDialog * 
 mn_shell_get_mailbox_properties_dialog (MNShell * self, MNMailbox * mailbox)
 {
-#line 1604 "mn-shell.c"
+#line 1606 "mn-shell.c"
 #define __GOB_FUNCTION__ "MN:Shell::get_mailbox_properties_dialog"
-#line 883 "src/mn-shell.gob"
+#line 885 "src/mn-shell.gob"
 	g_return_val_if_fail (self != NULL, (MNMailboxPropertiesDialog * )0);
-#line 883 "src/mn-shell.gob"
+#line 885 "src/mn-shell.gob"
 	g_return_val_if_fail (MN_IS_SHELL (self), (MNMailboxPropertiesDialog * )0);
-#line 883 "src/mn-shell.gob"
+#line 885 "src/mn-shell.gob"
 	g_return_val_if_fail (mailbox != NULL, (MNMailboxPropertiesDialog * )0);
-#line 883 "src/mn-shell.gob"
+#line 885 "src/mn-shell.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX (mailbox), (MNMailboxPropertiesDialog * )0);
-#line 1614 "mn-shell.c"
+#line 1616 "mn-shell.c"
 {
-#line 885 "src/mn-shell.gob"
+#line 887 "src/mn-shell.gob"
 	
     GSList *l;
 
@@ -1632,22 +1634,22 @@ mn_shell_get_mailbox_properties_dialog (MNShell * self, MNMailbox * mailbox)
 
     return NULL;
   }}
-#line 1636 "mn-shell.c"
+#line 1638 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 905 "src/mn-shell.gob"
+#line 907 "src/mn-shell.gob"
 char * 
 mn_shell_get_summary (MNShell * self)
 {
-#line 1643 "mn-shell.c"
+#line 1645 "mn-shell.c"
 #define __GOB_FUNCTION__ "MN:Shell::get_summary"
-#line 905 "src/mn-shell.gob"
+#line 907 "src/mn-shell.gob"
 	g_return_val_if_fail (self != NULL, (char * )0);
-#line 905 "src/mn-shell.gob"
+#line 907 "src/mn-shell.gob"
 	g_return_val_if_fail (MN_IS_SHELL (self), (char * )0);
-#line 1649 "mn-shell.c"
+#line 1651 "mn-shell.c"
 {
-#line 907 "src/mn-shell.gob"
+#line 909 "src/mn-shell.gob"
 	
     int indent;
     xmlDoc *doc;
@@ -1678,7 +1680,7 @@ mn_shell_get_summary (MNShell * self)
 
     return summary;
   }}
-#line 1682 "mn-shell.c"
+#line 1684 "mn-shell.c"
 #undef __GOB_FUNCTION__
 static const GEnumValue _mn_action_values[] = {
 	{ MN_ACTION_LAUNCH_MAIL_READER, (char *)"MN_ACTION_LAUNCH_MAIL_READER", (char *)"launch-mail-reader" },
diff --git a/build/src/mn-shell.h b/build/src/mn-shell.h
@@ -74,36 +74,36 @@ struct _MNShellClass {
  * Public methods
  */
 GType	mn_shell_get_type	(void) G_GNUC_CONST;
-#line 797 "src/mn-shell.gob"
+#line 799 "src/mn-shell.gob"
 MNShell * 	mn_shell_new	(DBusGConnection * session_bus,
 					DBusGProxy * session_bus_proxy);
 #line 81 "mn-shell.h"
-#line 806 "src/mn-shell.gob"
+#line 808 "src/mn-shell.gob"
 void 	mn_shell_consider_new_mail_as_read	(MNShell * self);
 #line 84 "mn-shell.h"
-#line 822 "src/mn-shell.gob"
+#line 824 "src/mn-shell.gob"
 void 	mn_shell_update	(MNShell * self);
 #line 87 "mn-shell.h"
-#line 828 "src/mn-shell.gob"
+#line 830 "src/mn-shell.gob"
 void 	mn_shell_quit	(MNShell * self);
 #line 90 "mn-shell.h"
-#line 834 "src/mn-shell.gob"
+#line 836 "src/mn-shell.gob"
 void 	mn_shell_show_properties_dialog	(MNShell * self,
 					guint32 timestamp);
 #line 94 "mn-shell.h"
-#line 840 "src/mn-shell.gob"
+#line 842 "src/mn-shell.gob"
 void 	mn_shell_show_about_dialog	(MNShell * self,
 					guint32 timestamp);
 #line 98 "mn-shell.h"
-#line 867 "src/mn-shell.gob"
+#line 869 "src/mn-shell.gob"
 void 	mn_shell_add_mailbox_properties_dialog	(MNShell * self,
 					MNMailboxPropertiesDialog * dialog);
 #line 102 "mn-shell.h"
-#line 883 "src/mn-shell.gob"
+#line 885 "src/mn-shell.gob"
 MNMailboxPropertiesDialog * 	mn_shell_get_mailbox_properties_dialog	(MNShell * self,
 					MNMailbox * mailbox);
 #line 106 "mn-shell.h"
-#line 905 "src/mn-shell.gob"
+#line 907 "src/mn-shell.gob"
 char * 	mn_shell_get_summary	(MNShell * self);
 #line 109 "mn-shell.h"
 
diff --git a/data/mail-notification.schemas.in.in b/data/mail-notification.schemas.in.in
@@ -325,5 +325,16 @@
 	mail summary.</long>
       </locale>
     </schema>
+    <schema>
+      <key>/schemas/apps/mail-notification/messages-considered-as-read</key>
+      <applyto>/apps/mail-notification/messages-considered-as-read</applyto>
+      <owner>mail-notification</owner>
+      <type>list</type>
+      <list_type>string</list_type>
+      <locale name="C">
+        <short>Messages to consider as read</short>
+	<long>The list of messages to consider as read and ignore.</long>
+      </locale>
+    </schema>
   </schemalist>
 </gconfschemafile>
diff --git a/help/C/mail-notification-C.omf.in b/help/C/mail-notification-C.omf.in
@@ -12,9 +12,9 @@
       Mail Notification Manual
     </title>
     <date>
-      2008-04-27
+      2008-05-22
     </date>
-    <version identifier="2.24" date="2008-04-27" description="Version 2.24"/>
+    <version identifier="2.25" date="2008-05-22" description="Version 2.25"/>
     <subject category="GNOME|Internet"/>
     <description>
       Mail Notification Manual
diff --git a/help/C/mail-notification.xml b/help/C/mail-notification.xml
@@ -2,9 +2,9 @@
 <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" 
 "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
   <!ENTITY app "<application>Mail Notification</application>">
-  <!ENTITY appversion "5.3">
-  <!ENTITY manrevision "2.24">
-  <!ENTITY date "Sunday, April 27, 2008">
+  <!ENTITY appversion "5.4">
+  <!ENTITY manrevision "2.25">
+  <!ENTITY date "Thursday, May 22, 2008">
 
   <!ENTITY project "The Mail Notification Project">
 
@@ -26,7 +26,7 @@
   <!ENTITY gnomevfs "<link linkend=&#34;gnomevfs&#34;>GnomeVFS</link>">
 ]>
 
-<!-- $Id: mail-notification.xml,v 1.186 2008-04-27 14:49:32 jylefort Exp $ -->
+<!-- $Id: mail-notification.xml,v 1.187 2008-05-22 15:44:32 jylefort Exp $ -->
 <!-- Mail Notification Manual -->
 
 <!-- Copyright (C) 2003-2008 Jean-Yves Lefort -->
@@ -112,6 +112,17 @@
 	</revdescription>
       </revision>
       <revision>
+	<revnumber>Mail Notification Manual V2.24</revnumber>
+	<date>Sunday, April 27, 2008</date>
+	<revdescription>
+	  <para role="author">
+	    Jean-Yves Lefort
+	    <email>jylefort@brutele.be</email>
+	  </para>
+	  <para role="publisher">&project;</para>
+	</revdescription>
+      </revision>
+      <revision>
 	<revnumber>Mail Notification Manual V2.23</revnumber>
 	<date>Thursday, March 20, 2008</date>
 	<revdescription>
diff --git a/jbsrc/jb.c b/jbsrc/jb.c
@@ -708,4 +708,4 @@ jb_package_add_resources (void)
     }
 }
 
-JB_MAIN("mail-notification", "5.3", "Mail Notification")
+JB_MAIN("mail-notification", "5.4", "Mail Notification")
diff --git a/po/fr.po b/po/fr.po
@@ -8,10 +8,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: mail-notification 5.3\n"
+"Project-Id-Version: mail-notification 5.4\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-27 16:50+0200\n"
-"PO-Revision-Date: 2008-04-27 16:51+0200\n"
+"POT-Creation-Date: 2008-05-22 17:39+0200\n"
+"PO-Revision-Date: 2008-05-22 17:46+0200\n"
 "Last-Translator: Jean-Yves Lefort <jylefort@brutele.be>\n"
 "Language-Team: Jean-Yves Lefort <jylefort@brutele.be>\n"
 "MIME-Version: 1.0\n"
@@ -44,7 +44,7 @@ msgstr "Clignoter lors d'erreurs"
 
 #: ../data/mail-notification.schemas.in.in.h:3
 msgid "Click action"
-msgstr "Action du click"
+msgstr "Action du clic"
 
 #: ../data/mail-notification.schemas.in.in.h:4
 msgid "Display a message count in the status icon"
@@ -107,60 +107,61 @@ msgid "Message popups position"
 msgstr "Position des popups"
 
 #: ../data/mail-notification.schemas.in.in.h:18
+msgid "Messages to consider as read"
+msgstr "Les messages à considérer comme lus"
+
+#: ../data/mail-notification.schemas.in.in.h:19
 msgid "New mail command"
 msgstr "Commande de nouveau courrier"
 
-#: ../data/mail-notification.schemas.in.in.h:19
+#: ../data/mail-notification.schemas.in.in.h:20
 msgid "New mail sound"
 msgstr "Son de nouveau courrier"
 
-#: ../data/mail-notification.schemas.in.in.h:20
+#: ../data/mail-notification.schemas.in.in.h:21
 msgid "Play a sound when new mail arrives"
 msgstr "Emettre un son lorsque du nouveau courrier arrive"
 
-#: ../data/mail-notification.schemas.in.in.h:21
+#: ../data/mail-notification.schemas.in.in.h:22
 msgid "Play sound command"
 msgstr "Commande de lecture de son"
 
-#: ../data/mail-notification.schemas.in.in.h:22
+#: ../data/mail-notification.schemas.in.in.h:23
 msgid "Run a command when all mail is read"
 msgstr "Exécuter une commande lorsque tout le courrier est lu"
 
-#: ../data/mail-notification.schemas.in.in.h:23
+#: ../data/mail-notification.schemas.in.in.h:24
 msgid "Run a command when new mail arrives"
 msgstr "Exécuter une commande lorsque du nouveau courrier arrive"
 
-#: ../data/mail-notification.schemas.in.in.h:24
+#: ../data/mail-notification.schemas.in.in.h:25
 msgid "Run a command when the message list changes"
 msgstr "Exécuter une commande lorsque la liste des messages change"
 
-#: ../data/mail-notification.schemas.in.in.h:25
+#: ../data/mail-notification.schemas.in.in.h:26
 msgid "Seconds to wait before expiring message popups"
 msgstr "Délai d'expiration des popups, en secondes"
 
-#: ../data/mail-notification.schemas.in.in.h:26
+#: ../data/mail-notification.schemas.in.in.h:27
 msgid ""
 "The action to perform when the icon is clicked. Must be \"launch-mail-reader"
 "\", \"open-latest-message\", \"consider-new-mail-as-read\" or \"update-mail-"
 "status\"."
-msgstr ""
-"L'action à effectuer lorsque l'icône est clickée. Doit être « launch-mail-"
-"reader », « open-latest-message », « consider-new-mail-as-read » ou « update-"
-"mail-status »."
+msgstr "L'action à effectuer lorsque l'icône est cliquée. Doit être « launch-mail-reader », « open-latest-message », « consider-new-mail-as-read » ou « update-mail-status »."
 
-#: ../data/mail-notification.schemas.in.in.h:27
+#: ../data/mail-notification.schemas.in.in.h:28
 msgid "The command to run when all mail is read."
 msgstr "La commande à exécuter lorsque tout le courrier est lu"
 
-#: ../data/mail-notification.schemas.in.in.h:28
+#: ../data/mail-notification.schemas.in.in.h:29
 msgid "The command to run when new mail arrives."
 msgstr "La commande à exécuter lorsque du nouveau courrier arrive."
 
-#: ../data/mail-notification.schemas.in.in.h:29
+#: ../data/mail-notification.schemas.in.in.h:30
 msgid "The command to run when the message list changes."
 msgstr "La commande à exécuter lorsque la liste des messages change."
 
-#: ../data/mail-notification.schemas.in.in.h:31
+#: ../data/mail-notification.schemas.in.in.h:32
 #, no-c-format
 msgid ""
 "The command to use to play a sound file. The string %file will be "
@@ -169,11 +170,11 @@ msgstr ""
 "La commande à utiliser pour lire un fichier son. La chaîne de caractères %"
 "file sera remplacée par le nom du fichier son à jouer."
 
-#: ../data/mail-notification.schemas.in.in.h:32
+#: ../data/mail-notification.schemas.in.in.h:33
 msgid "The height of the properties dialog in pixels."
 msgstr "La hauteur de la boîte de dialogue contenant les propriétés en pixels."
 
-#: ../data/mail-notification.schemas.in.in.h:33
+#: ../data/mail-notification.schemas.in.in.h:34
 msgid ""
 "The list of character sets to attempt conversion from when uncompliant 8-bit "
 "data is encountered in message headers. The first character set allowing a "
@@ -188,7 +189,11 @@ msgstr ""
 "l'avertisseur de courrier doit être relancé pour que les changements "
 "prennent effet."
 
-#: ../data/mail-notification.schemas.in.in.h:34
+#: ../data/mail-notification.schemas.in.in.h:35
+msgid "The list of messages to consider as read and ignore."
+msgstr "La liste des messages à considérer comme lus et à ignorer."
+
+#: ../data/mail-notification.schemas.in.in.h:36
 msgid ""
 "The list of trusted SSL/TLS servers (hostname:port) lacking a X509 "
 "certificate."
@@ -196,20 +201,20 @@ msgstr ""
 "La liste des serveurs SSL/TLS (hôte:port) de confiance auxquels il manque un "
 "certificat X509."
 
-#: ../data/mail-notification.schemas.in.in.h:35
+#: ../data/mail-notification.schemas.in.in.h:37
 msgid ""
 "The list of trusted X509 certificates, represented by their MD5 fingerprint."
 msgstr ""
 "La liste des certificats X509 de confiance, représentés par leur empreinte "
 "digitale."
 
-#: ../data/mail-notification.schemas.in.in.h:36
+#: ../data/mail-notification.schemas.in.in.h:38
 msgid "The maximum number of messages to display in the tooltip mail summary."
 msgstr ""
 "Le nombre maximum de messages à afficher dans l'aperçu du courrier du ballon "
 "d'aide."
 
-#: ../data/mail-notification.schemas.in.in.h:37
+#: ../data/mail-notification.schemas.in.in.h:39
 msgid ""
 "The maximum number of popups to display simultaneously. If this limit is "
 "exceeded, only the most recent messages will be displayed. If the /apps/mail-"
@@ -222,7 +227,7 @@ msgstr ""
 "notification/popups/position a la valeur \"attached\", cette limite sera "
 "ignorée et un seul popup sera autorisé."
 
-#: ../data/mail-notification.schemas.in.in.h:38
+#: ../data/mail-notification.schemas.in.in.h:40
 msgid ""
 "The ordered list of actions to include in the message popups. Each element "
 "must be \"open\", \"mark-as-read\", \"mark-as-spam\" or \"delete\"."
@@ -230,15 +235,15 @@ msgstr ""
 "La liste triée d'actions à inclure dans les popups. Chaque élément doit être "
 "« open », « mark-as-read », « mark-as-spam » ou « delete »."
 
-#: ../data/mail-notification.schemas.in.in.h:39
+#: ../data/mail-notification.schemas.in.in.h:41
 msgid "The position of the message popups. Must be \"attached\" or \"free\"."
 msgstr "La position des popups. Doit être « attached » ou « free »."
 
-#: ../data/mail-notification.schemas.in.in.h:40
+#: ../data/mail-notification.schemas.in.in.h:42
 msgid "The sound file to play when new mail arrives."
 msgstr "Le fichier son à lire lorsque du nouveau courrier arrive."
 
-#: ../data/mail-notification.schemas.in.in.h:41
+#: ../data/mail-notification.schemas.in.in.h:43
 msgid ""
 "The type of mail summary to display in the icon's tooltip. Must be \"standard"
 "\", \"compact\" or \"none\"."
@@ -246,34 +251,34 @@ msgstr ""
 "Le type d'aperçu du courrier à afficher dans le ballon d'aide de l'icône. "
 "Doit être « standard », « compact » ou « none »."
 
-#: ../data/mail-notification.schemas.in.in.h:42
+#: ../data/mail-notification.schemas.in.in.h:44
 msgid "The width of the properties dialog in pixels."
 msgstr "La largeur de la boîte de dialogue contenant les propriétés en pixels."
 
-#: ../data/mail-notification.schemas.in.in.h:43
+#: ../data/mail-notification.schemas.in.in.h:45
 msgid "Tooltip mail summary"
 msgstr "Aperçu du courrier dans le ballon d'aide"
 
-#: ../data/mail-notification.schemas.in.in.h:44
+#: ../data/mail-notification.schemas.in.in.h:46
 msgid "Trusted servers list"
 msgstr "Liste des serveurs de confiance"
 
-#: ../data/mail-notification.schemas.in.in.h:45
+#: ../data/mail-notification.schemas.in.in.h:47
 msgid "Whether the status icon should blink on errors or not."
 msgstr "Si l'icône de statut doit clignoter lors d'erreurs ou pas."
 
-#: ../data/mail-notification.schemas.in.in.h:46
+#: ../data/mail-notification.schemas.in.in.h:48
 msgid "Whether to display a message count in the status icon or not."
 msgstr ""
 "Si le nombre de messages doit être affiché dans l'icône de statut ou pas."
 
-#: ../data/mail-notification.schemas.in.in.h:47
+#: ../data/mail-notification.schemas.in.in.h:49
 msgid "Whether to display an icon when there is no new mail or not."
 msgstr ""
 "Si une icône doit être affichée lorsqu'il n'y a pas de nouveau courrier ou "
 "pas."
 
-#: ../data/mail-notification.schemas.in.in.h:48
+#: ../data/mail-notification.schemas.in.in.h:50
 msgid ""
 "Whether to display mail which is still marked as unread but has been seen or "
 "not."
@@ -281,11 +286,11 @@ msgstr ""
 "Si le courrier qui est encore marqué comme non lu mais qui a été vu\n"
 "doit être affiché ou pas."
 
-#: ../data/mail-notification.schemas.in.in.h:49
+#: ../data/mail-notification.schemas.in.in.h:51
 msgid "Whether to enable message popups or not."
 msgstr "Si les popups doivent être activés ou pas."
 
-#: ../data/mail-notification.schemas.in.in.h:50
+#: ../data/mail-notification.schemas.in.in.h:52
 msgid ""
 "Whether to expire message popups or not. Must be \"default\", \"false\" or "
 "\"true\"."
@@ -293,28 +298,28 @@ msgstr ""
 "Si l'expiration des popups doit être activée ou pas. Doit être « default », « "
 "false » ou « true »."
 
-#: ../data/mail-notification.schemas.in.in.h:51
+#: ../data/mail-notification.schemas.in.in.h:53
 msgid "Whether to play a sound when new mail arrives or not."
 msgstr ""
 "Si un fichier son doit être lu lorsque du nouveau courrier arrive ou pas."
 
-#: ../data/mail-notification.schemas.in.in.h:52
+#: ../data/mail-notification.schemas.in.in.h:54
 msgid "Whether to run a command when all mail is read or not."
 msgstr ""
 "Si une commande doit être exécutée lorsque tout le courrier est lu ou pas."
 
-#: ../data/mail-notification.schemas.in.in.h:53
+#: ../data/mail-notification.schemas.in.in.h:55
 msgid "Whether to run a command when new mail arrives or not."
 msgstr ""
 "Si une commande doit être exécutée lorsque du nouveau courrier arrive ou pas."
 
-#: ../data/mail-notification.schemas.in.in.h:54
+#: ../data/mail-notification.schemas.in.in.h:56
 msgid "Whether to run a command when the message list changes or not."
 msgstr ""
 "Si une commande doit être exécutée lorsque la liste des messages change ou "
 "pas."
 
-#: ../data/mail-notification.schemas.in.in.h:55
+#: ../data/mail-notification.schemas.in.in.h:57
 msgid "Width of properties dialog"
 msgstr "Largeur de la boîte de dialogue contenant les propriétés"
 
@@ -676,13 +681,13 @@ msgstr "Sujet"
 msgid "Sent"
 msgstr "Envoyé"
 
-#: ../src/mn-conf.c:249
+#: ../src/mn-conf.c:250
 #, c-format
 msgid "cannot find default value of configuration key \"%s\""
 msgstr ""
 "impossible de trouver la valeur par défaut de la clé de configuration « %s »"
 
-#: ../src/mn-conf.c:254
+#: ../src/mn-conf.c:255
 msgid ""
 "The default configuration has not been installed properly. Please check your "
 "Mail Notification installation."
@@ -690,25 +695,25 @@ msgstr ""
 "La configuration par défaut n'a pas été installée correctement. Veuillez "
 "vérifier votre installation de l'avertisseur de courrier."
 
-#: ../src/mn-conf.c:291
+#: ../src/mn-conf.c:292
 msgid "A directory creation error has occurred"
 msgstr "Une erreur de création de répertoire s'est produite"
 
-#: ../src/mn-conf.c:292
+#: ../src/mn-conf.c:293
 #, c-format
 msgid "Unable to create directory \"%s\": %s."
 msgstr "Impossible de créer le répertoire « %s » : %s."
 
-#: ../src/mn-conf.c:361
+#: ../src/mn-conf.c:362
 #, c-format
 msgid "recursively unsetting %s"
 msgstr "en train de supprimer récursivement %s"
 
-#: ../src/mn-conf.c:365
+#: ../src/mn-conf.c:366
 msgid "syncing the GConf database"
 msgstr "en train de synchroniser la base de données GConf"
 
-#: ../src/mn-conf.c:368
+#: ../src/mn-conf.c:369
 msgid "completed"
 msgstr "terminé"
 
@@ -842,7 +847,7 @@ msgstr "impossible de dire la position de %s : %s"
 msgid "unable to close %s: %s"
 msgstr "impossible de fermer %s : %s"
 
-#: ../src/mn-hotmail-mailbox.gob:286 ../src/mn-imap-mailbox.gob:1680
+#: ../src/mn-hotmail-mailbox.gob:286 ../src/mn-imap-mailbox.gob:1684
 #: ../src/mn-pop3-mailbox.gob:1165
 msgid "authentication failed"
 msgstr "l'authentification a échoué"
@@ -894,7 +899,7 @@ msgstr ""
 msgid "unable to login"
 msgstr "impossible d'ouvrir la session"
 
-#: ../src/mn-imap-mailbox.gob:1063
+#: ../src/mn-imap-mailbox.gob:1067
 msgid ""
 "\"Use the IDLE extension\" set to \"never\" in the mailbox properties, "
 "logging out"
@@ -902,12 +907,12 @@ msgstr ""
 "la valeur de l'option « Utiliser l'extension IDLE » dans les propriétés de la "
 "boîte aux lettres est « jamais », fermeture de session"
 
-#: ../src/mn-imap-mailbox.gob:1074
+#: ../src/mn-imap-mailbox.gob:1078
 #, c-format
 msgid "the remote server runs %s, not using the IDLE extension"
 msgstr "le serveur distant utilise %s, l'extension IDLE ne sera pas utilisée"
 
-#: ../src/mn-imap-mailbox.gob:1079
+#: ../src/mn-imap-mailbox.gob:1083
 #, c-format
 msgid ""
 "the remote server runs %s, the IDLE extension might not function properly"
@@ -915,16 +920,16 @@ msgstr ""
 "le serveur distant utilise %s, il se peut que l'extension IDLE ne fonctionne "
 "pas correctement"
 
-#: ../src/mn-imap-mailbox.gob:1088
+#: ../src/mn-imap-mailbox.gob:1092
 msgid "the remote server does not support the IDLE extension, logging out"
 msgstr ""
 "le serveur distant ne supporte pas l'extension IDLE, fermeture de session"
 
-#: ../src/mn-imap-mailbox.gob:1590 ../src/mn-pop3-mailbox.gob:309
+#: ../src/mn-imap-mailbox.gob:1594 ../src/mn-pop3-mailbox.gob:309
 msgid "server does not support in-band SSL/TLS"
 msgstr "le serveur ne supporte pas le mode SSL/TLS interne"
 
-#: ../src/mn-imap-mailbox.gob:1614 ../src/mn-pop3-mailbox.gob:1080
+#: ../src/mn-imap-mailbox.gob:1618 ../src/mn-pop3-mailbox.gob:1080
 msgid ""
 "a SASL authentication mechanism was selected but SASL support has not been "
 "compiled in"
@@ -932,23 +937,23 @@ msgstr ""
 "un mécanisme d'authentification SASL a été sélectionné mais le support SASL "
 "n'a pas été inclus lors de la compilation"
 
-#: ../src/mn-imap-mailbox.gob:1624 ../src/mn-pop3-mailbox.gob:1100
+#: ../src/mn-imap-mailbox.gob:1628 ../src/mn-pop3-mailbox.gob:1100
 #, c-format
 msgid "unknown authentication mechanism \"%s\""
 msgstr "mécanisme d'authentification inconnu « %s »"
 
-#: ../src/mn-imap-mailbox.gob:1656 ../src/mn-pop3-mailbox.gob:1136
+#: ../src/mn-imap-mailbox.gob:1660 ../src/mn-pop3-mailbox.gob:1136
 #, c-format
 msgid "disabling mechanism \"%s\" and retrying SASL authentication"
 msgstr ""
 "désactivation du mécanisme « %s » et nouvelle tentative d'authentification "
 "SASL"
 
-#: ../src/mn-imap-mailbox.gob:1668
+#: ../src/mn-imap-mailbox.gob:1672
 msgid "falling back to IMAP LOGIN authentication"
 msgstr "rétrogradation vers l'authentification IMAP LOGIN"
 
-#: ../src/mn-imap-mailbox.gob:1724 ../src/mn-pop3-mailbox.gob:744
+#: ../src/mn-imap-mailbox.gob:1728 ../src/mn-pop3-mailbox.gob:744
 #, c-format
 msgid "cannot retrieve %i message"
 msgid_plural "cannot retrieve %i messages"
@@ -1027,63 +1032,63 @@ msgstr "boîte aux lettres %s"
 msgid "detecting mailbox type..."
 msgstr "détection du type de boîte aux lettres en cours..."
 
-#: ../src/mn-mailbox.gob:565
+#: ../src/mn-mailbox.gob:667
 #, c-format
 msgid "\"type\" attribute missing"
 msgstr "attribut « type » manquant"
 
-#: ../src/mn-mailbox.gob:572
+#: ../src/mn-mailbox.gob:674
 #, c-format
 msgid "unknown mailbox type \"%s\""
 msgstr "type de boîte aux lettres « %s » inconnu"
 
-#: ../src/mn-mailbox.gob:971
+#: ../src/mn-mailbox.gob:1073
 #, c-format
 msgid "property \"%s\" has no value"
 msgstr "la propriété « %s » n'a pas de valeur"
 
-#: ../src/mn-mailbox.gob:1050 ../src/mn-mailbox.gob:1068
-#: ../src/mn-shell.gob:624
+#: ../src/mn-mailbox.gob:1152 ../src/mn-mailbox.gob:1170
+#: ../src/mn-shell.gob:626
 #, c-format
 msgid "%s: %s"
 msgstr "%s : %s"
 
-#: ../src/mn-mailboxes.gob:248
+#: ../src/mn-mailboxes.gob:250
 msgid "An error has occurred while importing old mailboxes"
 msgstr ""
 "Une erreur s'est produite lors de l'importation des anciennes boîtes aux "
 "lettres"
 
-#: ../src/mn-mailboxes.gob:303
+#: ../src/mn-mailboxes.gob:305
 msgid "Unable to load the mailboxes configuration"
 msgstr "Impossible de charger la configuration des boîtes aux lettres"
 
-#: ../src/mn-mailboxes.gob:350
+#: ../src/mn-mailboxes.gob:352
 #, c-format
 msgid "Unable to parse the XML document."
 msgstr "Impossible d'interpréter le document XML."
 
-#: ../src/mn-mailboxes.gob:357
+#: ../src/mn-mailboxes.gob:359
 #, c-format
 msgid "The root element is missing."
 msgstr "L'élément racine est manquant."
 
-#: ../src/mn-mailboxes.gob:363
+#: ../src/mn-mailboxes.gob:365
 #, c-format
 msgid "The root element \"%s\" is invalid."
 msgstr "L'élément racine « %s » est invalide."
 
-#: ../src/mn-mailboxes.gob:385
+#: ../src/mn-mailboxes.gob:387
 #, c-format
 msgid "On line %i: %s."
 msgstr "A la ligne %i : %s."
 
-#: ../src/mn-mailboxes.gob:390
+#: ../src/mn-mailboxes.gob:392
 #, c-format
 msgid "On line %i: unknown element \"%s\"."
 msgstr "A la ligne %i : élément « %s » inconnu."
 
-#: ../src/mn-mailboxes.gob:399
+#: ../src/mn-mailboxes.gob:401
 msgid "An error has occurred while loading the mailboxes configuration"
 msgid_plural "Errors have occurred while loading the mailboxes configuration"
 msgstr[0] ""
@@ -1093,55 +1098,55 @@ msgstr[1] ""
 "Des erreurs se sont produites lors du chargement de la configuration des "
 "boîtes aux lettres"
 
-#: ../src/mn-mailboxes.gob:424
+#: ../src/mn-mailboxes.gob:426
 msgid "Unable to save the mailboxes configuration"
 msgstr "Impossible de sauvegarder la configuration des boîtes aux lettres"
 
-#: ../src/mn-mailboxes.gob:469 ../src/mn-vfs.c:233
+#: ../src/mn-mailboxes.gob:471 ../src/mn-vfs.c:233
 #, c-format
 msgid "Unable to remove %s: %s."
 msgstr "Impossible d'enlever %s : %s."
 
-#: ../src/mn-mailboxes.gob:477
+#: ../src/mn-mailboxes.gob:479
 #, c-format
 msgid "Unable to create %s: %s."
 msgstr "Impossible de créer %s : %s."
 
-#: ../src/mn-mailboxes.gob:484
+#: ../src/mn-mailboxes.gob:486
 #, c-format
 msgid "Unable to open %s for writing: %s."
 msgstr "Impossible d'ouvrir %s en mode écriture : %s."
 
-#: ../src/mn-mailboxes.gob:491
+#: ../src/mn-mailboxes.gob:493
 #, c-format
 msgid "Unable to write the XML document."
 msgstr "Impossible d'écrire le document XML."
 
-#: ../src/mn-mailboxes.gob:497
+#: ../src/mn-mailboxes.gob:499
 #, c-format
 msgid "Unable to close %s: %s."
 msgstr "Impossible de fermer %s : %s."
 
-#: ../src/mn-mailboxes.gob:507 ../src/mn-mailboxes.gob:514 ../src/mn-vfs.c:251
+#: ../src/mn-mailboxes.gob:509 ../src/mn-mailboxes.gob:516 ../src/mn-vfs.c:251
 #: ../src/mn-vfs.c:259
 #, c-format
 msgid "Unable to rename %s to %s: %s."
 msgstr "Impossible de renommer %s en %s : %s."
 
 #. non fatal
-#: ../src/mn-mailboxes.gob:520 ../src/mn-vfs.c:269
+#: ../src/mn-mailboxes.gob:522 ../src/mn-vfs.c:269
 #, c-format
 msgid "unable to delete %s: %s"
 msgstr "impossible de supprimer %s : %s"
 
-#: ../src/mn-mailboxes.gob:550
+#: ../src/mn-mailboxes.gob:555
 #, c-format
 msgid "%s has %i new message"
 msgid_plural "%s has %i new messages"
 msgstr[0] "%s a %i nouveau message"
 msgstr[1] "%s a %i nouveaux messages"
 
-#: ../src/mn-mailboxes.gob:576
+#: ../src/mn-mailboxes.gob:581
 #, c-format
 msgid "%s reported an error: %s"
 msgstr "%s a indiqué une erreur : %s"
@@ -1151,17 +1156,17 @@ msgstr "%s a indiqué une erreur : %s"
 msgid "unable to open folder \"%s\": %s"
 msgstr "impossible d'ouvrir le dossier « %s » : %s"
 
-#: ../src/mn-maildir-mailbox-backend.gob:219
+#: ../src/mn-maildir-mailbox-backend.gob:231
 #, c-format
 msgid "unable to close folder \"%s\": %s"
 msgstr "impossible de fermer le dossier « %s » : %s"
 
-#: ../src/mn-maildir-mailbox-backend.gob:222
+#: ../src/mn-maildir-mailbox-backend.gob:234
 #, c-format
 msgid "error while reading folder \"%s\": %s"
 msgstr "erreur lors de la lecture du dossier « %s » : %s"
 
-#: ../src/mn-maildir-mailbox-backend.gob:253
+#: ../src/mn-maildir-mailbox-backend.gob:265
 #: ../src/mn-mh-mailbox-backend.gob:210
 #: ../src/mn-sylpheed-mailbox-backend.gob:311
 #, c-format
@@ -1311,38 +1316,38 @@ msgid "unable to parse MIME message"
 msgstr "impossible d'interpréter le message MIME"
 
 #. translators: header capitalization
-#: ../src/mn-message.gob:97
+#: ../src/mn-message.gob:98
 msgid "Open"
 msgstr "Ouvrir"
 
-#: ../src/mn-message.gob:98
+#: ../src/mn-message.gob:99
 msgid "Unable to open message"
 msgstr "Impossible d'ouvrir le message"
 
 #. translators: header capitalization
-#: ../src/mn-message.gob:107
+#: ../src/mn-message.gob:108
 msgid "Mark as Read"
 msgstr "Marquer comme lu"
 
-#: ../src/mn-message.gob:108
+#: ../src/mn-message.gob:109
 msgid "Unable to mark message as read"
 msgstr "Impossible de marquer le message comme lu"
 
 #. translators: header capitalization
-#: ../src/mn-message.gob:117
+#: ../src/mn-message.gob:118
 msgid "Mark as Spam"
 msgstr "Marquer comme indésirable"
 
-#: ../src/mn-message.gob:118 ../src/mn-message.gob:128
+#: ../src/mn-message.gob:119 ../src/mn-message.gob:129
 msgid "Unable to mark message as spam"
 msgstr "Impossible de marquer le message comme indésirable"
 
 #. translators: header capitalization
-#: ../src/mn-message.gob:127
+#: ../src/mn-message.gob:128
 msgid "Delete"
 msgstr "Supprimer"
 
-#: ../src/mn-message.gob:336 ../src/mn-sound-player.gob:133
+#: ../src/mn-message.gob:337 ../src/mn-sound-player.gob:133
 #: ../src/mn-sound-player.gob:169 ../src/mn-util.c:1577
 #, c-format
 msgid "Unable to execute \"%s\": %s."
@@ -1541,7 +1546,7 @@ msgstr ""
 "Vous pouvez configurer un lecteur de courrier en choisissant <b>Système → "
 "Préférences → Applications préférées</b>."
 
-#: ../src/mn-shell.gob:443 ../src/mn-shell.gob:449 ../src/mn-shell.gob:794
+#: ../src/mn-shell.gob:443 ../src/mn-shell.gob:449 ../src/mn-shell.gob:796
 msgid "Unable to open the latest message"
 msgstr "Impossible d'ouvrir le dernier message"
 
@@ -1550,7 +1555,7 @@ msgstr "Impossible d'ouvrir le dernier message"
 msgid "Messages of mailbox \"%s\" cannot be opened."
 msgstr "Les messages de la boîte aux lettres « %s » ne peuvent être ouverts."
 
-#: ../src/mn-shell.gob:450 ../src/mn-shell.gob:714
+#: ../src/mn-shell.gob:450 ../src/mn-shell.gob:716
 msgid "You have no new mail."
 msgstr "Vous n'avez pas de nouveau courrier."
 
@@ -1560,21 +1565,21 @@ msgid "%s (%i)"
 msgstr "%s (%i)"
 
 #. translators: header capitalization
-#: ../src/mn-shell.gob:610
+#: ../src/mn-shell.gob:612
 msgid "Mailboxes Having New Mail"
 msgstr "Boîtes aux lettres ayant du nouveau courrier"
 
 #. translators: header capitalization
-#: ../src/mn-shell.gob:629
+#: ../src/mn-shell.gob:631
 msgid "Errors"
 msgstr "Erreurs"
 
 #. translators: header capitalization
-#: ../src/mn-shell.gob:649
+#: ../src/mn-shell.gob:651
 msgid "Mail Summary"
 msgstr "Aperçu du courrier"
 
-#: ../src/mn-shell.gob:689
+#: ../src/mn-shell.gob:691
 #, c-format
 msgid "<span style=\"italic\">%i message is not displayed</span>"
 msgid_plural "<span style=\"italic\">%i messages are not displayed</span>"
@@ -1919,7 +1924,7 @@ msgstr "A_utre :"
 #. translators: header capitalization
 #: ../ui/properties-dialog.glade.h:2
 msgid "<span weight=\"bold\">Click Action</span>"
-msgstr "<span weight=\"bold\">Action du click</span>"
+msgstr "<span weight=\"bold\">Action du clic</span>"
 
 #. translators: header capitalization
 #: ../ui/properties-dialog.glade.h:4
diff --git a/po/pl.po b/po/pl.po
@@ -12,377 +12,341 @@ msgid ""
 msgstr ""
 "Project-Id-Version: mail-notification 4.1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2004-11-25 01:43+0100\n"
+"POT-Creation-Date: 2008-05-15 22:17+0200\n"
 "PO-Revision-Date: 2007-11-23 00:46+0100\n"
 "Last-Translator: Tomasz Sałaciński <tsalacinski@gmail.com>\n"
 "Language-Team: Polish\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2);\n"
 
-#: data/GNOME_MailNotification_Automation.server.in.in.h:1
-msgid "Mail Notification automation"
-msgstr "Automatyzacja Zawiadomienia Pocztowego"
-
-#: data/GNOME_MailNotification_Automation.server.in.in.h:2
-msgid "Mail Notification automation factory"
-msgstr "Fabryka automatyzacji Zawiadomienia Pocztowego"
-
-#: data/mail-notification-properties.desktop.in.h:1
+#: ../data/mail-notification-properties.desktop.in.h:1
 msgid "Configure Mail Notification"
 msgstr "Konfiguracja zawiadomienia pocztowego"
 
-#: data/mail-notification-properties.desktop.in.h:2
-#: data/mail-notification.desktop.in.h:2
-#: data/mail-notification.soundlist.in.h:1 src/mn-about-dialog.gob:40
-#: src/mn-mail-icon.gob:194 src/mn-main.c:281
+#: ../data/mail-notification-properties.desktop.in.h:2
+#: ../data/mail-notification.desktop.in.h:2 ../src/mn-mail-icon.gob:296
+#: ../src/mn-main.c:107 ../src/mn-main.c:437 ../src/mn-main.c:458
+#: ../src/mn-main.c:509
 msgid "Mail Notification"
 msgstr "Zawiadomienie pocztowe"
 
-#: data/mail-notification.desktop.in.h:1
+#: ../data/mail-notification.desktop.in.h:1
 msgid "Get notified when new mail arrives"
 msgstr "Otrzymaj zawiadomienie po nadejściu nowej poczty"
 
-#: data/mail-notification.schemas.in.h:1
-msgid "Automatically close the mail summary popup"
-msgstr "Automatycznie zamknij wyskakujące okienko streszczenia poczty"
+#: ../data/mail-notification.schemas.in.in.h:1
+msgid "Always display an icon"
+msgstr "Z_awsze pokazuj ikonę w tacce systemowej"
 
-#: data/mail-notification.schemas.in.h:2
+#: ../data/mail-notification.schemas.in.in.h:2
 msgid "Blink on errors"
 msgstr "Miganie przy błędach"
 
-#: data/mail-notification.schemas.in.h:3
-msgid "Delay between mail checks (minutes part)."
-msgstr "Zwłoka pomiędzy sprawdzaniem poczty (minuty)."
+#: ../data/mail-notification.schemas.in.in.h:3
+msgid "Click action"
+msgstr "Akcja po kliknięciu"
 
-#: data/mail-notification.schemas.in.h:4
-msgid "Delay between mail checks (seconds part)."
-msgstr "Zwłoka pomiędzy sprawdzaniem poczty (sekundy)."
+#: ../data/mail-notification.schemas.in.in.h:4
+msgid "Display a message count in the status icon"
+msgstr "Pokaż ilość wiadomości na ikonie w obszarze powiadamiania"
 
-#: data/mail-notification.schemas.in.h:5
-msgid "Display mail summary in tooltip"
-msgstr "Wyświetlanie streszczenia poczty w obszarze powiadamiania"
+# These messages are not translated in any PO file
+#: ../data/mail-notification.schemas.in.in.h:5
+msgid "Display seen mail"
+msgstr "_Pokazuj widzianą pocztę"
 
-#: data/mail-notification.schemas.in.h:6
-msgid "Do not show the immediate notification error dialog"
-msgstr "Nie pokazuj dialogu błędowego natychmiastowego zawiadomienia"
+#: ../data/mail-notification.schemas.in.in.h:6
+msgid "Enable message popups"
+msgstr "Włącz wyskakujące okna wiadomości"
 
-#: data/mail-notification.schemas.in.h:7
-msgid "Double-click action"
-msgstr "Wykonanie podwójnego kliknięcia"
+#: ../data/mail-notification.schemas.in.in.h:7
+msgid "Expire message popups"
+msgstr "Włącz wyskakujące okna wiadomości"
 
-#: data/mail-notification.schemas.in.h:8
-msgid "Enable mail summary popup"
-msgstr "Umożliwij wyskakujące okienko streszczenia poczty"
+#: ../data/mail-notification.schemas.in.in.h:8
+msgid "Fallback character sets"
+msgstr "Awaryjne kodowanie"
 
-#: data/mail-notification.schemas.in.h:9
+#: ../data/mail-notification.schemas.in.in.h:9
 msgid "Fingerprints of trusted X509 certificates"
 msgstr "Odciski palców zaufanych certyfikatów X509"
 
-#: data/mail-notification.schemas.in.h:10
-msgid "Has already been run"
-msgstr "Polecenie już było wykonane"
-
-#: data/mail-notification.schemas.in.h:11
-msgid "Height of mail summary dialog"
-msgstr "Wysokość dialogu streszenia poczty"
-
-#: data/mail-notification.schemas.in.h:12
+#: ../data/mail-notification.schemas.in.in.h:10
 msgid "Height of properties dialog"
 msgstr "Wysokość dialogu wlaściwości"
 
-#: data/mail-notification.schemas.in.h:13
-msgid "Mail read command"
-msgstr "Rozkaz do przeczytania poczty"
-
-#: data/mail-notification.schemas.in.h:14
-msgid "Mail reader command"
-msgstr "Rozkaz do uruchomienia czytnika poczty"
-
-#: data/mail-notification.schemas.in.h:15
-msgid "Mail summary popup contents font"
-msgstr "Czcionka zawartości wyskakującego okienka streszczenia poczty"
-
-#: data/mail-notification.schemas.in.h:16
-msgid "Mail summary popup horizontal offset"
-msgstr "Poziomę przesunięcie wyskakującego okienka streszczenia poczty"
+#: ../data/mail-notification.schemas.in.in.h:11
+msgid ""
+"If /apps/mail-notification/popups/expiration/enabled is set to \"true\", the "
+"number of seconds to wait before expiring message popups."
+msgstr ""
+"Jeżeli /apps/mail-notification/popups/expiration/enabled jest ustawione na "
+"\"true\", to jest to liczba sekund zanim okienka znikną."
 
-#: data/mail-notification.schemas.in.h:17
-msgid "Mail summary popup position"
-msgstr "Pozycja wyskakującego okienka streszczenia poczty"
+#: ../data/mail-notification.schemas.in.in.h:12
+msgid "Mail changed command"
+msgstr "Komenda zmiany poczty"
 
-#: data/mail-notification.schemas.in.h:18
-msgid "Mail summary popup title font"
-msgstr "Czcionka tytułu wyskakującego okienka streszczenia poczty"
+#: ../data/mail-notification.schemas.in.in.h:13
+msgid "Mail read command"
+msgstr "Rozkaz do przeczytania poczty"
 
-#: data/mail-notification.schemas.in.h:19
-msgid "Mail summary popup vertical offset"
-msgstr "Pionowę przesunięcie wyskakującego okienka streszczenia poczty"
+#: ../data/mail-notification.schemas.in.in.h:14
+msgid "Maximum number of messages in the tooltip mail summary"
+msgstr "Maksymalna liczba wiadomości w podsumowaniu poczty"
 
-#: data/mail-notification.schemas.in.h:20
-msgid "Mailbox list"
-msgstr "Lista skrzynek pocztowych"
+#: ../data/mail-notification.schemas.in.in.h:15
+msgid "Maximum number of simultaneous popups"
+msgstr "Maksymalna liczba wyskakujących okienek"
 
-#: data/mail-notification.schemas.in.h:21
-msgid "Minutes between mail checks"
-msgstr "Ilość minut pomiędzy sprawdzaniem poczty"
+#: ../data/mail-notification.schemas.in.in.h:16
+msgid "Message popups actions"
+msgstr "Akcje okienek wiadomości"
 
-#: data/mail-notification.schemas.in.h:22
-msgid "Minutes to wait before closing the mail summary popup"
-msgstr ""
-"Ile minut czekać przed zamknięciem wyskakującego okienka streszczenia poczty"
+#: ../data/mail-notification.schemas.in.in.h:17
+msgid "Message popups position"
+msgstr "Pozycja wyskakujących okienek"
 
-#: data/mail-notification.schemas.in.h:23
+#: ../data/mail-notification.schemas.in.in.h:18
 msgid "New mail command"
 msgstr "Rozkaz do rozpoczęcia nowej poczty"
 
-#: data/mail-notification.schemas.in.h:24
-msgid "Only display recent mail in mail summary popup"
-msgstr ""
-"Tylko wyświetlaj niedawną pocztę w wyskakującym okienku streszczenia poczty"
+#: ../data/mail-notification.schemas.in.in.h:19
+msgid "New mail sound"
+msgstr "Dźwięk nowej poczty"
 
-#: data/mail-notification.schemas.in.h:25
+#: ../data/mail-notification.schemas.in.in.h:20
+msgid "Play a sound when new mail arrives"
+msgstr "Odtwórz dźwięk podczas nadejścia nowej poczty"
+
+#: ../data/mail-notification.schemas.in.in.h:21
+msgid "Play sound command"
+msgstr "Komenda do odtworzenia dźwięku"
+
+#: ../data/mail-notification.schemas.in.in.h:22
 msgid "Run a command when all mail is read"
 msgstr "Wykonaj rozkaz kiedy cała poczta jest przeczytana"
 
-#: data/mail-notification.schemas.in.h:26
+#: ../data/mail-notification.schemas.in.in.h:23
 msgid "Run a command when new mail arrives"
 msgstr "Wykonaj rozkaz po nadejściu nowej poczty"
 
-#: data/mail-notification.schemas.in.h:27
-msgid "Seconds between mail checks"
-msgstr "Sekundy pomiędzy sprawdzaniem poczty"
-
-#: data/mail-notification.schemas.in.h:28
-msgid "Seconds to wait before closing the mail summary popup"
-msgstr ""
-"Ilość sekund do poczekania przed zamknięciem wyskakującego okienka "
-"streszczenia poczty"
-
-#: data/mail-notification.schemas.in.h:29
-msgid "Set a mail reader"
-msgstr "Ustaw czytnika poczty"
-
-#: data/mail-notification.schemas.in.h:30
-msgid ""
-"The action to perform when the icon is double-clicked. Must be \"display-"
-"mail-summary\" or \"launch-mail-reader\"."
-msgstr ""
-"Akcja do wykonania kiedy ikon jest podwójnię kliknięty. Musi być \"display-"
-"mail-summary\" lub \"launch-mail-reader\"."
+#: ../data/mail-notification.schemas.in.in.h:24
+msgid "Run a command when the message list changes"
+msgstr "Uruchom komendę gdy lista wiadomości ulegnie zmianie"
 
-#: data/mail-notification.schemas.in.h:31
-msgid ""
-"The amount of time to wait before closing the mail summary popup (minutes "
-"part)."
-msgstr ""
-"Ilość czasu do czekania przed zamknięciem wyskakującego okienka streszczenia "
-"poczty (minuty)."
+#: ../data/mail-notification.schemas.in.in.h:25
+msgid "Seconds to wait before expiring message popups"
+msgstr "Ilość sekund do poczekania przed zamknięciem wyskakującego okienka."
 
-#: data/mail-notification.schemas.in.h:32
+#: ../data/mail-notification.schemas.in.in.h:26
 msgid ""
-"The amount of time to wait before closing the mail summary popup (seconds "
-"part)."
+"The action to perform when the icon is clicked. Must be \"launch-mail-reader"
+"\", \"open-latest-message\", \"consider-new-mail-as-read\" or \"update-mail-"
+"status\"."
 msgstr ""
-"Ilość czasu do czekania przed zamknięciem wyskakującego okienka streszczenia "
-"poczty (sekundy)."
+"Akcja do wykonania podczas kliknięcia na ikonę. Wartości: \"launch-mail-"
+"reader\", \"open-latest-message\", \"consider-new-mail-as-read\" lub "
+"\"update-mail-status\""
 
-#: data/mail-notification.schemas.in.h:33
-msgid "The command to run to launch the mail reader."
-msgstr "Rozkaz do wykonania żeby uruchomić czytnika poczty."
-
-#: data/mail-notification.schemas.in.h:34
+#: ../data/mail-notification.schemas.in.in.h:27
 msgid "The command to run when all mail is read."
 msgstr "Rozkaz do wykonania kiedy cała poczta jest przeczytana."
 
-#: data/mail-notification.schemas.in.h:35
+#: ../data/mail-notification.schemas.in.in.h:28
 msgid "The command to run when new mail arrives."
 msgstr "Polecenie do wykonania po nadejściu owej poczty."
 
-#: data/mail-notification.schemas.in.h:36
-msgid "The custom font to use for the contents of the mail summary popup."
-msgstr ""
-"Niestandardowa czcionka użyta dla zawartości wyskakującego okienka "
-"streszczenia poczty."
+#: ../data/mail-notification.schemas.in.in.h:29
+msgid "The command to run when the message list changes."
+msgstr "Komenda do wykonania podczas zmiany listy wiadomości"
 
-#: data/mail-notification.schemas.in.h:37
-msgid "The custom font to use for the title of the mail summary popup."
+#: ../data/mail-notification.schemas.in.in.h:31
+#, no-c-format
+msgid ""
+"The command to use to play a sound file. The string %file will be "
+"substituted with the filename of the sound to play."
 msgstr ""
-"Niestandardowa czcionka użyta dla tytułu wyskakującego okienka streszczenia "
-"poczty."
-
-#: data/mail-notification.schemas.in.h:38
-msgid "The height of the mail summary dialog in pixels."
-msgstr "Wysokość dialogu streszczenia poczty w pikselach."
 
-#: data/mail-notification.schemas.in.h:39
+#: ../data/mail-notification.schemas.in.in.h:32
 msgid "The height of the properties dialog in pixels."
 msgstr "Wysokość dialogu właściwości w pikselach."
 
-#: data/mail-notification.schemas.in.h:40
-msgid "The list of mailboxes to monitor."
-msgstr "Lista monitorowanych skrzynek pocztowych."
+#: ../data/mail-notification.schemas.in.in.h:33
+msgid ""
+"The list of character sets to attempt conversion from when uncompliant 8-bit "
+"data is encountered in message headers. The first character set allowing a "
+"successful conversion will be used. The special name \"user\" will be "
+"replaced with the character set of the user's locale. Note that Mail "
+"Notification must be restarted for changes to take effect."
+msgstr ""
 
-#: data/mail-notification.schemas.in.h:41
+#: ../data/mail-notification.schemas.in.in.h:34
 msgid ""
 "The list of trusted SSL/TLS servers (hostname:port) lacking a X509 "
 "certificate."
 msgstr "Lista zaufanych serwerów SSL/TSL (hostname:port) bez certyfikatu X509."
 
-#: data/mail-notification.schemas.in.h:42
+#: ../data/mail-notification.schemas.in.in.h:35
 msgid ""
 "The list of trusted X509 certificates, represented by their MD5 fingerprint."
 msgstr ""
-"Lista zaufanych certyfikatów X509, przedstawionych przez ich MD5 odciski "
-"palców."
+"Lista zaufanych certyfikatów X509, przedstawionych przez ich odciski palców "
+"MD5."
 
-#: data/mail-notification.schemas.in.h:43
-msgid ""
-"The number of pixels to leave between the left or right side of the screen "
-"and the mail summary popup."
+#: ../data/mail-notification.schemas.in.in.h:36
+msgid "The maximum number of messages to display in the tooltip mail summary."
 msgstr ""
-"Ilość pikselów do pozostawienia pomiędzy lewą lub prawą stroną ekranu i "
-"wyskakującym okienkiem streszczenia poczty."
 
-#: data/mail-notification.schemas.in.h:44
+#: ../data/mail-notification.schemas.in.in.h:37
 msgid ""
-"The number of pixels to leave between the top or bottom side of the screen "
-"and the mail summary popup."
+"The maximum number of popups to display simultaneously. If this limit is "
+"exceeded, only the most recent messages will be displayed. If the /apps/mail-"
+"notification/popups/position key is set to \"attached\", this limit will be "
+"ignored and only one popup will be allowed."
 msgstr ""
-"Ilość pikselów do pozostawienia pomiędzy górną lub dolną stroną ekranu i "
-"wyskakującym okienkiem streszczenia poczty."
 
-#: data/mail-notification.schemas.in.h:45
+#: ../data/mail-notification.schemas.in.in.h:38
 msgid ""
-"The position of the mail summary popup. Must be \"top-left\", \"top-right\", "
-"\"bottom-left\" or \"bottom-right\"."
+"The ordered list of actions to include in the message popups. Each element "
+"must be \"open\", \"mark-as-read\", \"mark-as-spam\" or \"delete\"."
+msgstr ""
+
+#: ../data/mail-notification.schemas.in.in.h:39
+msgid "The position of the message popups. Must be \"attached\" or \"free\"."
 msgstr ""
-"Pozycja wyskakującego okienka streszczenia poczty. Musi być \"top-left\", "
-"\"top-right\", \"bottom-left\" lub \"bottom-right\"."
+"Pozycja wyskakującego okienka streszczenia poczty. Wartości: \"attached\" "
+"lub \"free\"."
+
+#: ../data/mail-notification.schemas.in.in.h:40
+msgid "The sound file to play when new mail arrives."
+msgstr "Dźwięk do odtworzenia podczas nadejścia nowej poczty."
 
-#: data/mail-notification.schemas.in.h:46
-msgid "The width of the mail summary dialog in pixels."
-msgstr "Szerokość dialogu streszczenia poczty w pikselach."
+#: ../data/mail-notification.schemas.in.in.h:41
+msgid ""
+"The type of mail summary to display in the icon's tooltip. Must be \"standard"
+"\", \"compact\" or \"none\"."
+msgstr ""
+"Typ podsumowania pokazywany w bąbelku ikony. Musi być \"standard\", \"compact"
+"\" lub \"none\"."
 
-#: data/mail-notification.schemas.in.h:47
+#: ../data/mail-notification.schemas.in.in.h:42
 msgid "The width of the properties dialog in pixels."
 msgstr "Szerokość dialogu właściwości w pikselach."
 
-#: data/mail-notification.schemas.in.h:48
+#: ../data/mail-notification.schemas.in.in.h:43
+msgid "Tooltip mail summary"
+msgstr "Podsumowanie w wyskakującym bąbelku pomocy"
+
+#: ../data/mail-notification.schemas.in.in.h:44
 msgid "Trusted servers list"
 msgstr "Lista zaufanych serwerów"
 
-#: data/mail-notification.schemas.in.h:49
-msgid "Use a custom font for the contents of the mail summary popup"
-msgstr ""
-"Użyj niestandardową czcionkę dla zawartości wyskakującego okienka "
-"streszczenia poczty"
-
-#: data/mail-notification.schemas.in.h:50
-msgid "Use a custom font for the title of the mail summary popup"
-msgstr ""
-"Użyj niestandardową czcionkę dla tytułu wyskakującego okienka streszczenia "
-"poczty"
-
-#: data/mail-notification.schemas.in.h:51
-msgid "Whether Mail Notification has already been run or not."
-msgstr "Czy Zawiadomienie pocztowe było już uruchomione czy nie."
-
-#: data/mail-notification.schemas.in.h:52
+#: ../data/mail-notification.schemas.in.in.h:45
 msgid "Whether the status icon should blink on errors or not."
 msgstr "Czy ikona statusu ma migać przy błędach"
 
-#: data/mail-notification.schemas.in.h:53
-msgid "Whether to automatically close the mail summary popup or not."
+#: ../data/mail-notification.schemas.in.in.h:46
+msgid "Whether to display a message count in the status icon or not."
 msgstr ""
-"Automatycznie zamyka okienko ze streszczeniem poczty po upływie zadanego czasu"
+"Czy wyświetlać liczbę nieprzeczytanych wiadomości w ikonie powiadamiania."
 
-#: data/mail-notification.schemas.in.h:54
-msgid "Whether to display the mail summary in the status icon tooltip or not."
-msgstr ""
-"Czy wyświetlać streszczenie poczty w ikonie stanu etykiety narzędzi czy nie."
-
-#: data/mail-notification.schemas.in.h:55
-msgid "Whether to display the mail summary popup when new mail arrives or not."
-msgstr "Wyświetl streszczenie poczty po nadejściu nowych listów"
+#: ../data/mail-notification.schemas.in.in.h:47
+msgid "Whether to display an icon when there is no new mail or not."
+msgstr "Czy wyświetlać ikonę w pasku powiadamiania, gdy nie ma nowej poczty."
 
-#: data/mail-notification.schemas.in.h:56
+#: ../data/mail-notification.schemas.in.in.h:48
 msgid ""
-"Whether to hide previously displayed mail in the mail summary popup or not."
+"Whether to display mail which is still marked as unread but has been seen or "
+"not."
 msgstr ""
-"Czy schować poprzednio wyświetloną pocztę w wyskakującym okienku "
-"streszczenia poczty czy nie."
+"Czy wyświetlać wiadomości które są dalej oznaczone jako nieprzeczytane, ale "
+"były widziane"
+
+#: ../data/mail-notification.schemas.in.in.h:49
+msgid "Whether to enable message popups or not."
+msgstr "Czy wyświetlać wyskakujące okienka wiadomości"
 
-#: data/mail-notification.schemas.in.h:57
+#: ../data/mail-notification.schemas.in.in.h:50
 msgid ""
-"Whether to prevent the immediate notification error dialog from being "
-"displayed or not."
+"Whether to expire message popups or not. Must be \"default\", \"false\" or "
+"\"true\"."
 msgstr ""
-"Czy zapobiegać wyświetleniu dialogu błędowego natychmiastowego "
-"zawiadomieniaczy nie."
+"Czy automatycznie zamykać wyskakujące okienka wiadomości. Wartości: \"default"
+"\", \"false\" lub \"true\"."
 
-#: data/mail-notification.schemas.in.h:58
+#: ../data/mail-notification.schemas.in.in.h:51
+msgid "Whether to play a sound when new mail arrives or not."
+msgstr "Czy odtwarzać dźwięk podczas nadejścia nowej poczty."
+
+#: ../data/mail-notification.schemas.in.in.h:52
 msgid "Whether to run a command when all mail is read or not."
 msgstr "Czy wykonać rozkaz kiedy cała poczta jest przeczytanacza czy nie."
 
-#: data/mail-notification.schemas.in.h:59
+#: ../data/mail-notification.schemas.in.in.h:53
 msgid "Whether to run a command when new mail arrives or not."
 msgstr "Czy wykonać rozkaz kiedy przyjdzie nowa poczta czy nie."
 
-#: data/mail-notification.schemas.in.h:60
-msgid "Whether to set a mail reader or not."
-msgstr "Czy ustawić czytnika poczty."
-
-#: data/mail-notification.schemas.in.h:61
-msgid ""
-"Whether to use a custom font for the contents of the mail summary popup or "
-"not."
-msgstr ""
-"Czy użyć niestandardową czcionkę dla zawartości wyskakującego okienka "
-"streszczenia poczty czy nie."
-
-#: data/mail-notification.schemas.in.h:62
-msgid ""
-"Whether to use a custom font for the title of the mail summary popup or not."
-msgstr ""
-"Czy użyć niestandardową czcionkę dla tytułu wyskakującego okienka "
-"streszczenia poczty czy nie."
-
-#: data/mail-notification.schemas.in.h:63
-msgid "Width of mail summary dialog"
-msgstr "Szerokość dialogu streszczenia poczty"
+#: ../data/mail-notification.schemas.in.in.h:54
+msgid "Whether to run a command when the message list changes or not."
+msgstr "Czy wykonać komendę poczas zmiany na liście wiadomości."
 
-#: data/mail-notification.schemas.in.h:64
+#: ../data/mail-notification.schemas.in.in.h:55
 msgid "Width of properties dialog"
 msgstr "Szerokość dialogu właściwości"
 
-#: data/mail-notification.soundlist.in.h:2
-msgid "New Mail"
-msgstr "Nowa Poczta"
-
-#: src/eggtrayicon.c:109
+#: ../src/eggtrayicon.c:133
 msgid "Orientation"
 msgstr "Orientacja"
 
-#: src/eggtrayicon.c:110
+#: ../src/eggtrayicon.c:134
 msgid "The orientation of the tray."
 msgstr "Orientacja tacy."
 
-#: src/mn-about-dialog.gob:43
+#. translators: header capitalization
+#: ../src/mn-about-dialog.gob:47
 msgid "A Mail Notification Icon"
 msgstr "Ikon Zawiadomienia Pocztowego"
 
-#. translator: replace with your name and email
-#: src/mn-about-dialog.gob:47
-msgid "Jean-Yves Lefort <jylefort@brutele.be>"
-msgstr "Tomasz Sarota-Raczek <tomasz.sarota.raczek@gmail.com>"
+#.
+#. * translators: Your Name <your-email>
+#. * optionally followed by one or more: \nOther Contributor's Name <his-email>
+#.
+#: ../src/mn-about-dialog.gob:55
+msgid "translator-credits"
+msgstr "Tomasz Sałaciński <tsalacinski@gmail.com>"
+
+#: ../src/mn-auth-combo-box.gob:98
+#: ../src/mn-autodetect-mailbox-properties.gob:106
+msgid "Autodetect"
+msgstr "Wykryj automatycznie"
+
+#. translators: header capitalization
+#: ../src/mn-authenticated-mailbox-properties.gob:56
+msgid "Account"
+msgstr "Konto pocztowe"
+
+#: ../src/mn-authenticated-mailbox-properties.gob:59
+msgid "_Username:"
+msgstr "_Użytkownik:"
+
+#: ../src/mn-authenticated-mailbox-properties.gob:63
+msgid "_Password:"
+msgstr "_Hasło:"
+
+#: ../src/mn-authenticated-mailbox-properties.gob:140
+msgid "Saving password to keyring..."
+msgstr ""
 
-#: src/mn-auth-combo-box.gob:101 src/mn-autodetect-mailbox-properties.gob:37
-msgid "<span style=\"italic\">autodetect</span>"
-msgstr "<span style=\"italic\">automatycznie</span>"
+#: ../src/mn-authenticated-mailbox-properties.gob:185
+msgid "Retrieving password from keyring..."
+msgstr ""
 
-#: src/mn-authenticated-mailbox.gob:80
+#. translators: the first %s is the mailbox format (eg: IMAP) and the second %s is the mailbox name (eg: john@imapserver.org)
+#: ../src/mn-authenticated-mailbox.gob:306
 #, c-format
 msgid ""
 "Mail Notification was unable to log into %s mailbox %s, possibly because the "
@@ -395,918 +359,1052 @@ msgstr ""
 "\n"
 "Proszę jeszcze raz wpisać hasło."
 
-#: src/mn-authenticated-mailbox.gob:81
+#. translators: the first %s is the mailbox format (eg: IMAP) and the second %s is the mailbox name (eg: john@imapserver.org)
+#: ../src/mn-authenticated-mailbox.gob:308
 #, c-format
 msgid "Enter your password for %s mailbox %s."
 msgstr "Wpisz twoje hasło dla skrzynki %s %s."
 
-#: src/mn-authenticated-mailbox.gob:132
+#. keep the title in sync with gnome-authentication-manager
+#. translators: header capitalization
+#: ../src/mn-authenticated-mailbox.gob:381
+msgid "Authentication Required"
+msgstr "Wymagana autentykacja"
+
+#: ../src/mn-authenticated-mailbox.gob:463
+msgid "Unable to save the mailbox password"
+msgstr "Nie można zapisać hasła do skrzynki pocztowej"
+
+#. translators: the first %s is the mailbox format (eg: IMAP) and the second %s is the mailbox name (eg: john@imapserver.org)
+#: ../src/mn-authenticated-mailbox.gob:465
 #, c-format
-msgid ""
-"<span weight=\"bold\" size=\"larger\">Mail Notification requires a password</"
-"span>\n"
-"\n"
-"%s"
-msgstr ""
-"<span weight=\"bold\" size=\"larger\">Zawiadomienie pocztowe wymaga hasła</"
-"span>\n"
-"\n"
-"%s"
+msgid "The password of %s mailbox %s could not be saved to the keyring."
+msgstr "Hasło %s skrzynki %s nie może być zapisane do zestawu kluczy."
+
+#. translators: header capitalization
+#: ../src/mn-autodetect-mailbox-properties.gob:119
+#: ../src/mn-system-vfs-mailbox-properties.gob:57
+msgid "Location"
+msgstr "Lokalizacja"
 
-#: src/mn-autodetect-mailbox-properties.gob:68
+#: ../src/mn-autodetect-mailbox-properties.gob:121
 msgid "_Location:"
 msgstr "_Lokalizacja:"
 
-#: src/mn-autodetect-mailbox-properties.gob:74
+#. translators: header capitalization
+#: ../src/mn-autodetect-mailbox-properties.gob:129
 msgid "_Browse..."
 msgstr "_Przeglądaj..."
 
-#: src/mn-autodetect-mailbox-properties.gob:81
-msgid "The URI of the mailbox"
-msgstr "URI skrzynki pocztowej"
-
-#: src/mn-autodetect-mailbox-properties.gob:118
+#. translators: header capitalization
+#: ../src/mn-autodetect-mailbox-properties.gob:169
 msgid "Select a File or Folder"
 msgstr "Wybierz plik lub folder"
 
-#: src/mn-blinking-image.gob:32
-msgid "Whether the image is blinking or not"
-msgstr "Czy obraz miga czy nie"
+#: ../src/mn-base-mbox-mailbox-backend.gob:346
+#, c-format
+msgid "unable to open mailbox: %s"
+msgstr "niezdolny otworzyć skrzynkę pocztową: %s"
 
-#: src/mn-client-session.c:220
+#: ../src/mn-client-session.c:177
 #, c-format
 msgid "resolving %s"
 msgstr "rozwiązuję %s"
 
-#: src/mn-client-session.c:230
+#: ../src/mn-client-session.c:193
 #, c-format
 msgid "unable to resolve %s: %s"
 msgstr "niezdolny rozwiązać %s: %s"
 
-#: src/mn-client-session.c:267
+#: ../src/mn-client-session.c:234
+#, c-format
+msgid "network address #%i"
+msgstr ""
+
+#: ../src/mn-client-session.c:237
+#, c-format
+msgid "unable to convert network address #%i into textual form: %s"
+msgstr "nie można przekonwertować adresu sieciowego #%i na formę liczbową: %s"
+
+#: ../src/mn-client-session.c:248
 #, c-format
 msgid "%s: unsupported address family"
 msgstr "%s: nieobsługiwana rodzina adresów"
 
-#: src/mn-client-session.c:274
+#: ../src/mn-client-session.c:255
 #, c-format
 msgid "%s: unable to create socket: %s"
 msgstr "%s: niezdolny stworzyć gniazdo: %s"
 
-#: src/mn-client-session.c:278
+#: ../src/mn-client-session.c:259
 #, c-format
 msgid "connecting to %s (%s) port %i"
 msgstr "połączenie do %s (%s) port %i"
 
-#: src/mn-client-session.c:281
+#: ../src/mn-client-session.c:262
 #, c-format
 msgid "unable to connect: %s"
 msgstr "niezdolny do połączenie się: %s"
 
-#: src/mn-client-session.c:286
+#: ../src/mn-client-session.c:267
 msgid "connected successfully"
 msgstr "pomyślnę połączenie"
 
 #. if reached, we couldn't find a working address
-#: src/mn-client-session.c:292
+#: ../src/mn-client-session.c:281
 #, c-format
 msgid "unable to connect to %s"
 msgstr "niezdolny do połączenie się z %s"
 
-#: src/mn-client-session.c:308
+#: ../src/mn-client-session.c:333
+#, c-format
+msgid "response \"%s\" is not valid in current context"
+msgstr "odpowiedź \"%s\" nie jest ważna w aktualnym kontekstcie"
+
+#: ../src/mn-client-session.c:362
+#, c-format
+msgid "unable to parse response \"%s\""
+msgstr "niezdolny zrobić rozbiór odpowiedzi \"%s\""
+
+#: ../src/mn-client-session.c:626
+msgid "server name not found in certificate"
+msgstr "nazwa serwera nie została znaleziona w certyfikacie"
+
+#: ../src/mn-client-session.c:631
+#, c-format
+msgid ""
+"user-provided server name \"%s\" does not match certificate-provided server "
+"name \"%s\""
+msgstr ""
+"nazwa serwera dostarczona przez użytkownika \"%s\" nie zgadza się z nazwą "
+"dostarczoną przez certyfikat \"%s\""
+
+#: ../src/mn-client-session.c:645
+#, c-format
+msgid "\"%s\", "
+msgstr "\"%s\", "
+
+#: ../src/mn-client-session.c:647 ../src/mn-client-session.c:1582
+#: ../src/mn-yahoo-mailbox.gob:218
+#, c-format
+msgid "\"%s\""
+msgstr "\"%s\""
+
+#: ../src/mn-client-session.c:650
+#, c-format
+msgid ""
+"user-provided server name \"%s\" matches none of the certificate-provided "
+"server names %s"
+msgstr ""
+
+#: ../src/mn-client-session.c:740
 #, c-format
 msgid "unable to initialize the OpenSSL library: %s"
 msgstr "niezdolny do inicjalizacji biblioteki OpenSSL: %s"
 
-#: src/mn-client-session.c:316
+#: ../src/mn-client-session.c:748
 #, c-format
 msgid "unable to create a SSL/TLS object: %s"
 msgstr "niezdolny do stworzenia obiektu SSL/TLS: %s"
 
-#: src/mn-client-session.c:322
+#: ../src/mn-client-session.c:754
 #, c-format
 msgid "unable to set the SSL/TLS file descriptor: %s"
 msgstr "niezdolny do ustawienia plikowego deskryptora SSL/TLS: %s"
 
-#: src/mn-client-session.c:328
+#: ../src/mn-client-session.c:761
 #, c-format
 msgid "unable to perform the SSL/TLS handshake: %s"
 msgstr "niezdoly do spełnienia pertraktacji SSL/TLS: %s"
 
-#: src/mn-client-session.c:334
+#: ../src/mn-client-session.c:767
 msgid "untrusted server"
 msgstr "niezaufany serwer"
 
-#: src/mn-client-session.c:338
+#: ../src/mn-client-session.c:771
 #, c-format
 msgid "a SSL/TLS layer is now active (%s, %s %i-bit)"
 msgstr "warstwa SSL/TLS jest teraz aktywna (%s, %s %i-bit)"
 
-#: src/mn-client-session.c:385
-#, c-format
-msgid "%s, fingerprint: %s"
-msgstr "%s, odcisk palca: %s"
-
-#: src/mn-client-session.c:414
-msgid "missing certificate"
-msgstr "brak certyfikatu"
-
-#: src/mn-client-session.c:440
-#, c-format
-msgid ""
-"Mail Notification was unable to trust \"%s\" (%s). It is possible that "
-"someone is intercepting your communication to obtain your confidential "
-"information.\n"
-"\n"
-"You should only connect to the server if you are certain you are connected "
-"to \"%s\". If you choose to connect to the server, this message will not be "
-"shown again."
-msgstr ""
-"Zawiadomienie pocztowe nie mogło zaufać \"%s\" (%s). Jest możliwe że ktoś "
-"przechwyta twoje komunikacje żeby uzyskać twoją konfidencjalną informację.\n"
-"\n"
-"Powinieneś się tylko łączyć z serwerem jeśli jesteś pewny że jesteś "
-"połączony z \"%s\". Jeśli się połączysz z tym serwerem, ta wiadomość nie "
-"będzie pokazana powtórnie."
-
-#: src/mn-client-session.c:457
-msgid "Connect to untrusted server?"
-msgstr "Połączyć się z niezaufanym serwerem?"
-
-#: src/mn-client-session.c:462
-msgid "Co_nnect"
-msgstr "Po_łącz się."
-
-#: src/mn-client-session.c:518
-#, c-format
-msgid "response \"%s\" is not valid in current context"
-msgstr "odpowiedź \"%s\" nie jest ważna w aktualnym kontekstcie"
-
-#: src/mn-client-session.c:544
-#, c-format
-msgid "unable to parse response \"%s\""
-msgstr "niezdolny zrobić rozbiór odpowiedzi \"%s\""
-
-#: src/mn-client-session.c:592 src/mn-client-session.c:599
+#: ../src/mn-client-session.c:819 ../src/mn-client-session.c:826
 #, c-format
 msgid "unable to read from server: %s"
 msgstr "niezdolny do przeczytania z serwera: %s"
 
-#: src/mn-client-session.c:597
+#: ../src/mn-client-session.c:824
 msgid "unable to read from server: EOF"
 msgstr "niezdolny do przeczytania z serwera: EOF"
 
-#: src/mn-client-session.c:609
+#: ../src/mn-client-session.c:836
 #, c-format
 msgid "unable to decode data using SASL: %s"
 msgstr "niezdolny do rozszyfrowania danych używając SASL: %s"
 
-#: src/mn-client-session.c:746
+#: ../src/mn-client-session.c:980
 #, c-format
 msgid "unable to encode data using SASL: %s"
 msgstr "niezdolny do rozszyfrowania danych używając SASL: %s"
 
-#: src/mn-client-session.c:777 src/mn-client-session.c:784
+#: ../src/mn-client-session.c:1009 ../src/mn-client-session.c:1016
 #, c-format
 msgid "unable to write to server: %s"
 msgstr "niezdolny do pisania do serwera: %s"
 
-#: src/mn-client-session.c:782
+#: ../src/mn-client-session.c:1014
 msgid "unable to write to server: EOF"
 msgstr "niezdolny do pisania do serwera: EOF"
 
-#: src/mn-client-session.c:814
+#: ../src/mn-client-session.c:1043 ../src/mn-pop3-mailbox.gob:448
 #, c-format
 msgid "unable to encode Base64: %s"
 msgstr "niezdolny do zakodowania Base64: %s"
 
-#: src/mn-client-session.c:925
+#: ../src/mn-client-session.c:1220
 #, c-format
 msgid "unable to initialize the SASL library: %s"
 msgstr "niezdolny do inicjalizacji biblioteki SASL: %s"
 
-#: src/mn-client-session.c:934
+#: ../src/mn-client-session.c:1232
 #, c-format
 msgid "unable to retrieve local address of socket: %s"
 msgstr "niezdolny odzyskać lokalnego adresu gniazda: %s"
 
-#: src/mn-client-session.c:940
+#: ../src/mn-client-session.c:1238
 #, c-format
 msgid "unable to retrieve remote address of socket: %s"
 msgstr "niezdolny odzyskać odległego adresu gniazda: %s"
 
-#: src/mn-client-session.c:974
+#: ../src/mn-client-session.c:1272
 #, c-format
-msgid "warning: unable to set SASL security properties: %s"
-msgstr "ostrzeżenie: niezdolny ustawić właściwości ochronnę SASL: %s"
+msgid "unable to set SASL security properties: %s"
+msgstr "nie można ustawić właściwości certyfikatu SASL: %s"
 
-#: src/mn-client-session.c:998
+#: ../src/mn-client-session.c:1296
 msgid ""
 "unable to start SASL authentication: SASL asked for something we did not know"
 msgstr ""
 "niezdolny rozpocząć potwierdzenie tożsamości SASL: SASL zapytało się o coś "
 "czego nie wiemy"
 
-#: src/mn-client-session.c:1017
+#: ../src/mn-client-session.c:1315
 #, c-format
 msgid "unable to start SASL authentication: %s"
 msgstr "niezdolny rozpocząć potwierdzenie tożsamości SASL: %s"
 
-#: src/mn-client-session.c:1021
+#: ../src/mn-client-session.c:1319
 #, c-format
 msgid "unable to create a SASL connection: %s"
 msgstr "niezdolny do stworzenia połączenia SASL: %s"
 
-#: src/mn-client-session.c:1058
+#: ../src/mn-client-session.c:1366
 msgid "SASL asked for something we did not know, aborting SASL authentication"
 msgstr ""
 "SASL zapytał się o coś czego nie wiemy, przerywam potwierdzenie tożsamości "
 "SASL"
 
-#: src/mn-client-session.c:1075
+#: ../src/mn-client-session.c:1383
 #, c-format
 msgid "%s, aborting SASL authentication"
 msgstr "%s, przerywam potwierdzenie tożsamości SASL"
 
 #. compliance error
-#: src/mn-client-session.c:1080
+#: ../src/mn-client-session.c:1388
 #, c-format
 msgid "unable to decode Base64 input from server: %s"
 msgstr "niezdolny rozszyfrować wprowadzenie Base64 od serweru : %s"
 
-#: src/mn-client-session.c:1083
-msgid ""
-"the server sent a SASL challenge, but there was a pending initial SASL "
-"client response"
-msgstr ""
-"serwer wysłał wyzwanie SASL, ale już była początkowa odpowiedź SASL od "
-"klienta."
-
-#: src/mn-client-session.c:1097
-msgid ""
-"the server did not send a SASL challenge, but there was no pending initial "
-"SASL client response"
-msgstr ""
-"serwer nie wysłał wyzwania SASL, ale nie było początkowej odpowiedź SASL od "
-"klienta."
-
-#: src/mn-client-session.c:1122
+#: ../src/mn-client-session.c:1424
 #, c-format
 msgid "a SASL security layer of strength factor %i is now active"
 msgstr "warstwa ochronna SASL czynnika mocy %i jest teraz aktywna"
 
 #. a security layer is active but we can't retrieve maxoutbuf -> fatal
-#: src/mn-client-session.c:1127
+#: ../src/mn-client-session.c:1429
 #, c-format
 msgid "unable to get SASL_MAXOUTBUF property: %s"
 msgstr "niezdolny otrzymać właściwość SASL_MAXOUTBUF: %s"
 
-#: src/mn-client-session.c:1133
+#: ../src/mn-client-session.c:1435
 #, c-format
 msgid "warning: unable to get SASL_SSF property: %s"
 msgstr "ostrzeżenie: niezdolny otrzymać właściwość SASL_SSF: %s"
 
-#: src/mn-conf.c:145
+#: ../src/mn-client-session.c:1583
+msgid "unknown server error"
+msgstr "nieznany błąd serweru"
+
+#: ../src/mn-compact-message-view.gob:39
+msgid "Mailbox"
+msgstr "Skrzynka pocztowa"
+
+#: ../src/mn-compact-message-view.gob:40
+msgid "From"
+msgstr "Nadawca"
+
+#: ../src/mn-compact-message-view.gob:41
+msgid "Subject"
+msgstr "Temat wiadomości"
+
+#: ../src/mn-compact-message-view.gob:42
+msgid "Sent"
+msgstr "Wysłano"
+
+#: ../src/mn-conf.c:249
+#, c-format
+msgid "cannot find default value of configuration key \"%s\""
+msgstr ""
+
+#: ../src/mn-conf.c:254
+msgid ""
+"The default configuration has not been installed properly. Please check your "
+"Mail Notification installation."
+msgstr ""
+"Domyślna konfiguracja nie została zainstalowana poprawnie. Proszę sprawdzić "
+"instalację Zawiadomienia Pocztowego."
+
+#: ../src/mn-conf.c:291
+msgid "A directory creation error has occurred"
+msgstr "Błąd podczas tworzenia katalogu"
+
+#: ../src/mn-conf.c:292
+#, c-format
+msgid "Unable to create directory \"%s\": %s."
+msgstr "Nie można utworzyć katalogu \"%s\": %s"
+
+#: ../src/mn-conf.c:361
 #, c-format
 msgid "recursively unsetting %s"
 msgstr "rekursywnie usuwam %s"
 
-#: src/mn-conf.c:149
+#: ../src/mn-conf.c:365
 msgid "syncing the GConf database"
 msgstr "synchronizacja bazy danych GConf"
 
-#: src/mn-conf.c:152
+#: ../src/mn-conf.c:368
 msgid "completed"
 msgstr "skończonę"
 
-#: src/mn-gmail-mailbox-properties.gob:77
-msgid "Your Gmail username"
-msgstr "Twoję Gmail imię użytkownika"
+#: ../src/mn-custom-vfs-mailbox.gob:72
+msgid "invalid location"
+msgstr "nieprawidłowa lokacja"
 
-#: src/mn-gmail-mailbox-properties.gob:78
+#: ../src/mn-evolution-folder-tree-client.gob:269
 msgid ""
-"Your Gmail password (if left blank, you will be prompted for the password "
-"when needed)"
+"Mail Notification can not contact Evolution. Make sure that Evolution is "
+"running and that the Evolution Jean-Yves Lefort's Mail Notification plugin "
+"is loaded."
 msgstr ""
-"Twoję Gmail hasło (jeśli pozostawione pustę, to będziesz zapytany o hasło "
-"wtedy kiedy będzie potrzebnę)"
+"Aplikacja powiadamiania o nowej poczcie nie może skontaktować się z "
+"Evolution. Upewnij się, że Evolution jest uruchomione i że wtyczka Jean-Yves "
+"Lefort's Mail Notification jest zainstalowana i załadowana."
 
-#: src/mn-gmail-mailbox.gob:82
-msgid "libsoup has not been compiled with SSL/TLS support"
-msgstr "libsoup nie było kompilowanę z poparciem SSL/TLS"
+#. translators: header capitalization
+#: ../src/mn-evolution-mailbox-properties.gob:71
+#: ../src/mn-webmail-mailbox-properties.gob:92
+msgid "Folder"
+msgstr "Folder"
+
+#: ../src/mn-evolution-mailbox.gob:225
+msgid "unable to contact Evolution"
+msgstr "nie mogę skontaktować się z Evolution"
+
+#: ../src/mn-evolution-plugin.c:151
+msgid "A fatal error has occurred in the Evolution Mail Notification plugin"
+msgstr "Nastąpił fatalny błąd we wtyczce do Evolution Zawiadomienia Pocztowego"
+
+#: ../src/mn-evolution-plugin.c:152 ../src/mn-main.c:250
+msgid "The connection to the D-Bus session bus was lost."
+msgstr "Połączenie do sesji D-Bus zostało utracone."
+
+#: ../src/mn-evolution-plugin.c:175 ../src/mn-evolution-plugin.c:188
+#: ../src/mn-evolution-plugin.c:226
+msgid "Unable to initialize the Mail Notification plugin"
+msgstr "Nie można załatować wtyczki Zawiadomienia Pocztowego"
+
+#: ../src/mn-evolution-plugin.c:176 ../src/mn-main.c:283
+#, c-format
+msgid "Unable to connect to the D-Bus session bus: %s."
+msgstr "Nie można połączyć się z sesją D-Bus: %s."
+
+#: ../src/mn-evolution-plugin.c:227
+#, c-format
+msgid "Unable to register the Mail Notification Evolution D-Bus server: %s."
+msgstr ""
+"Nie można zarejestrować Zawiadomienia Pocztowego w sesji D-Bus Evolution: %s."
 
-#: src/mn-gmail-mailbox.gob:160
+#: ../src/mn-evolution-server.gob:152
 #, c-format
-msgid "unable to parse URI \"%s\""
-msgstr "niezdolny wykonać rozbiór URI \"%s\""
+msgid "folder not found"
+msgstr "folder nie został znaleziony"
 
-#: src/mn-gmail-mailbox.gob:214
+#: ../src/mn-evolution-server.gob:329
 #, c-format
-msgid "unable to transfer data: %s"
-msgstr "niezdolny do przesłania danych: %s"
+msgid "message not found"
+msgstr "wiadomość nie została znaleziona"
+
+#.
+#. * translators: GTK+ has the same message used in the same
+#. * context; please use the GTK+ translation for consistency
+#.
+#: ../src/mn-file-chooser-button.gob:179
+msgid "(None)"
+msgstr "(Brak)"
 
-#: src/mn-gmail-mailbox.gob:335
-msgid "logging in"
-msgstr "logowanie"
+#. translators: header capitalization
+#: ../src/mn-gmail-mailbox-properties.gob:105
+msgid "Gmail Label"
+msgstr "Etykieta GMail"
+
+#: ../src/mn-gmail-mailbox-properties.gob:107
+msgid "_Restrict to this label:"
+msgstr "_Zastrzeż tylko do tej etykiety:"
+
+#: ../src/mn-gmail-mailbox.gob:154
+msgid "invalid feed location"
+msgstr "nieprawidłowa lokalizacja nagłówka"
+
+#: ../src/mn-gmail-mailbox.gob:175
+#, c-format
+msgid "retrieving feed from %s"
+msgstr "pobieram nagłówek z %s"
 
-#: src/mn-gmail-mailbox.gob:413
-msgid "login failed"
-msgstr "nieudanę logowanie"
+#: ../src/mn-gmail-mailbox.gob:182
+#, c-format
+msgid "unable to retrieve feed: %s"
+msgstr "nie można pobrać nagłówka: %s"
 
-#: src/mn-gmail-mailbox.gob:488
-msgid "searching for unread mail"
-msgstr "szukam nieprzeczytanej poczty"
+#: ../src/mn-gmail-mailbox.gob:191
+#, c-format
+msgid "feed retrieved successfully (%i byte)"
+msgid_plural "feed retrieved successfully (%i bytes)"
+msgstr[0] "nagłówek pobrany pomyślnie (%s bajt)"
+msgstr[1] "nagłówek pobrany pomyślnie (%s bajty)"
+msgstr[2] "nagłówek pobrany pomyślnie (%s bajtów)"
 
-#: src/mn-gmail-mailbox.gob:527
-msgid "unable to parse Gmail data"
-msgstr "niezdolny wykonać rozbioru danych Gmail"
+#: ../src/mn-gmail-mailbox.gob:203 ../src/mn-gmail-mailbox.gob:254
+msgid "unable to parse feed"
+msgstr "nie można przetworzyć nagłówka"
 
-#: src/mn-gmime-stream-vfs.gob:49
+#: ../src/mn-gmime-stream-vfs.gob:48
+#: ../src/mn-sylpheed-mailbox-backend.gob:209
 #, c-format
 msgid "unable to read %s: %s"
 msgstr "niezdolny przeczytać %s: %s"
 
-#: src/mn-gmime-stream-vfs.gob:51
+#: ../src/mn-gmime-stream-vfs.gob:50 ../src/mn-webmail-mailbox.gob:141
 #, c-format
 msgid "unable to write to %s: %s"
 msgstr "niezdolny wpisać %s: %s"
 
-#: src/mn-gmime-stream-vfs.gob:53
+#: ../src/mn-gmime-stream-vfs.gob:52
 #, c-format
 msgid "unable to seek in %s: %s"
 msgstr "niezdolny odszukać %s: %s"
 
-#: src/mn-gmime-stream-vfs.gob:55
+#: ../src/mn-gmime-stream-vfs.gob:54
 #, c-format
 msgid "unable to tell position of %s: %s"
 msgstr "niezdolny opisać pozycję %s: %s"
 
-#: src/mn-gmime-stream-vfs.gob:57
+#: ../src/mn-gmime-stream-vfs.gob:56 ../src/mn-mh-mailbox-backend.gob:216
+#: ../src/mn-webmail-mailbox.gob:147
 #, c-format
 msgid "unable to close %s: %s"
 msgstr "niezdolny zamknąć %s: %s"
 
-#: src/mn-imap-mailbox-properties.gob:94
-msgid "Mailbox:"
-msgstr "Skrzynka pocztowa:"
-
-#: src/mn-imap-mailbox-properties.gob:98
-msgid "in_box"
-msgstr "_skrzynka odbiorcza"
-
-#: src/mn-imap-mailbox-properties.gob:109
-msgid "oth_er:"
-msgstr "innę:"
-
-#: src/mn-imap-mailbox-properties.gob:121
-msgid "U_se idle mode if possible"
-msgstr "Użyj bezczynny tryb jeśli to jest możliwę"
+#: ../src/mn-hotmail-mailbox.gob:286 ../src/mn-imap-mailbox.gob:1680
+#: ../src/mn-pop3-mailbox.gob:1165
+msgid "authentication failed"
+msgstr "logowanie nie udało się"
 
-#: src/mn-imap-mailbox-properties.gob:129
-msgid "The hostname or IP address of the IMAP server"
-msgstr "Nazwa lub adres IP serweru IMAP"
+#. translators: header capitalization
+#: ../src/mn-imap-mailbox-properties.gob:109
+msgid "IMAP Mailbox"
+msgstr "Skrzynka IMAP"
 
-#: src/mn-imap-mailbox-properties.gob:130
-msgid "Your username on the IMAP server"
-msgstr "Twoje imię użytkownika na serwerze IMAP"
+#: ../src/mn-imap-mailbox-properties.gob:111
+#: ../src/mn-webmail-mailbox-properties.gob:94
+msgid "In_box"
+msgstr "Ode_brane"
 
-#: src/mn-imap-mailbox-properties.gob:131
-msgid ""
-"Your password on the IMAP server (if left blank, you will be prompted for "
-"the password when needed)"
-msgstr ""
-"Twoję hasło na serwerze IMAP (jeśli pozostawione pustę, to będziesz zapytany "
-"o hasło wtedy kiedy będzie potrzebnę)"
+#: ../src/mn-imap-mailbox-properties.gob:116
+#: ../src/mn-webmail-mailbox-properties.gob:99
+#: ../ui/mailbox-properties-dialog.glade.h:10
+msgid "_Other:"
+msgstr "_Inna:"
 
-#: src/mn-imap-mailbox-properties.gob:132
-#: src/mn-imap-mailbox-properties.gob:133
-msgid "The port number of the IMAP server"
-msgstr "Numer portu na serwerze IMAP"
+#. translators: header capitalization
+#: ../src/mn-imap-mailbox-properties.gob:129
+msgid "Use the IDLE Extension"
+msgstr "Użyj rozszerzenia IDLE"
 
-#: src/mn-imap-mailbox-properties.gob:134
-msgid "The mailbox name"
-msgstr "Imię skrzynki pocztowej"
+#: ../src/mn-imap-mailbox-properties.gob:133
+msgid "IMAP connection tab|_Never"
+msgstr "_Nigdy"
 
-#: src/mn-imap-mailbox-properties.gob:135
-msgid "If possible, whether to use idle mode or not"
-msgstr "Jeśli możliwę, czy użyć bezczynny tryb czy nie"
+#: ../src/mn-imap-mailbox-properties.gob:134
+msgid "A_utodetect"
+msgstr "Wykryj a_utomatycznie"
 
-#: src/mn-imap-mailbox.gob:166 src/mn-pop3-mailbox.gob:143
-msgid "SSL/TLS support has not been compiled in"
-msgstr "Protokół SSL/TLS nie jest obsługiwany"
+#: ../src/mn-imap-mailbox-properties.gob:135
+msgid "Al_ways"
+msgstr "_Zawsze"
 
-#: src/mn-imap-mailbox.gob:246
+#: ../src/mn-imap-mailbox.gob:384
 msgid "server did not send capabilities"
 msgstr "serwer nie wysłał możliwości"
 
-#: src/mn-imap-mailbox.gob:418
+#: ../src/mn-imap-mailbox.gob:551
 msgid "server advertised LOGINDISABLED, not using LOGIN authentication"
 msgstr ""
 "serwer reklamował LOGINDISABLED, bez używania potwierdzenia tożsamości LOGIN"
 
-#: src/mn-imap-mailbox.gob:419
+#: ../src/mn-imap-mailbox.gob:552
 msgid "unable to login"
 msgstr "niezdolny do logowania"
 
-#. compliance error
-#: src/mn-imap-mailbox.gob:571
-msgid "server did not send search results"
-msgstr "serwer nie wysłał wyników poszukiwania"
-
-#. compliance error
-#: src/mn-imap-mailbox.gob:651
-msgid "server did not send all the messages we requested"
-msgstr "serwer nie wysłał wszystkich wiadomości o które prosiliśmy"
+#: ../src/mn-imap-mailbox.gob:1063
+msgid ""
+"\"Use the IDLE extension\" set to \"never\" in the mailbox properties, "
+"logging out"
+msgstr ""
 
-#: src/mn-imap-mailbox.gob:700
-msgid "unable to fetch message"
-msgstr "niezdolny do sprowadzenia wiadomości"
+#: ../src/mn-imap-mailbox.gob:1074
+#, c-format
+msgid "the remote server runs %s, not using the IDLE extension"
+msgstr ""
 
-#. compliance error
-#: src/mn-imap-mailbox.gob:818
-msgid "server did not send status"
-msgstr "serwer nie wysłał stanu"
+#: ../src/mn-imap-mailbox.gob:1079
+#, c-format
+msgid ""
+"the remote server runs %s, the IDLE extension might not function properly"
+msgstr ""
 
-#: src/mn-imap-mailbox.gob:1096 src/mn-pop3-mailbox.gob:972
-msgid "unknown server error"
-msgstr "nieznany błąd serweru"
+#: ../src/mn-imap-mailbox.gob:1088
+msgid "the remote server does not support the IDLE extension, logging out"
+msgstr ""
 
-#: src/mn-imap-mailbox.gob:1198 src/mn-pop3-mailbox.gob:227
+#: ../src/mn-imap-mailbox.gob:1590 ../src/mn-pop3-mailbox.gob:309
 msgid "server does not support in-band SSL/TLS"
 msgstr "serwer nie popiera wewnątrzpasmowego SSL/TSL"
 
-#: src/mn-imap-mailbox.gob:1217 src/mn-pop3-mailbox.gob:885
+#: ../src/mn-imap-mailbox.gob:1614 ../src/mn-pop3-mailbox.gob:1080
 msgid ""
 "a SASL authentication mechanism was selected but SASL support has not been "
 "compiled in"
-msgstr ""
-"wybrany został nieobsługiwany mechanizm potwierdzania tożsamości SASL"
+msgstr "wybrany został nieobsługiwany mechanizm potwierdzania tożsamości SASL"
 
-#: src/mn-imap-mailbox.gob:1225 src/mn-pop3-mailbox.gob:897
+#: ../src/mn-imap-mailbox.gob:1624 ../src/mn-pop3-mailbox.gob:1100
 #, c-format
 msgid "unknown authentication mechanism \"%s\""
 msgstr "nieznany mechanizm potwierdzenia tożsamości \"%s\""
 
-#: src/mn-imap-mailbox.gob:1246
+#: ../src/mn-imap-mailbox.gob:1656 ../src/mn-pop3-mailbox.gob:1136
+#, c-format
+msgid "disabling mechanism \"%s\" and retrying SASL authentication"
+msgstr "wyłączam mechanizm \"%s\"i ponawiam potwierdzenie tożsamości SASL"
+
+#: ../src/mn-imap-mailbox.gob:1668
 msgid "falling back to IMAP LOGIN authentication"
 msgstr "powrót do potwierdzenia tożsamości IMAP LOGIN"
 
-#: src/mn-imap-mailbox.gob:1257 src/mn-pop3-mailbox.gob:938
-msgid "authentication failed"
-msgstr "logowanie nie udało się"
+#: ../src/mn-imap-mailbox.gob:1724 ../src/mn-pop3-mailbox.gob:744
+#, c-format
+msgid "cannot retrieve %i message"
+msgid_plural "cannot retrieve %i messages"
+msgstr[0] "nie mogę odczytać %i wiadomości"
+msgstr[1] "nie mogę odczytać %i wiadomości"
+msgstr[2] "nie mogę odczytać %i wiadomości"
+
+#. translators: header capitalization
+#: ../src/mn-mail-icon.gob:86
+msgid "_Mail Reader"
+msgstr "Otwórz program pocztowy"
+
+#. translators: header capitalization
+#: ../src/mn-mail-icon.gob:88
+msgid "_Open Latest Message"
+msgstr "_Otwórz ostatnią wiadomość"
 
-#: src/mn-mail-icon.gob:92 ui/summary-dialog.glade.h:2
-msgid "_Launch Mail Reader"
-msgstr "_Uruchom program pocztowy"
+#. translators: header capitalization
+#: ../src/mn-mail-icon.gob:93
+msgid "_Consider New Mail as Read"
+msgstr "Uznaj nową pocztę za przeczytaną"
 
-#: src/mn-mail-icon.gob:93 ui/summary-dialog.glade.h:3
+#. translators: header capitalization
+#: ../src/mn-mail-icon.gob:95 ../src/mn-mailbox-view.gob:312
 msgid "_Update"
 msgstr "_Odśwież"
 
-#: src/mn-mail-icon.gob:99
+#. translators: header capitalization
+#: ../src/mn-mail-icon.gob:106
 msgid "R_emove From Notification Area"
 msgstr "U_suń z obszaru powiadomienia"
 
-#: src/mn-mailbox-properties-dialog.c:109
-msgid "Add a Mailbox"
-msgstr "Dodaj skrzynkę pocztową"
-
-#: src/mn-mailbox-properties-dialog.c:328
+#. translators: header capitalization
+#: ../src/mn-mailbox-properties-dialog.gob:106
 #, c-format
 msgid "%s Properties"
 msgstr "Właściwości %s"
 
-#: src/mn-mailbox-properties-util.c:77 ui/authentication.glade.h:4
-msgid "_Username:"
-msgstr "_Użytkownik:"
+#. translators: header capitalization
+#: ../src/mn-mailbox-properties-dialog.gob:210
+msgid "Add a Mailbox"
+msgstr "Dodaj skrzynkę pocztową"
 
-#: src/mn-mailbox-properties-util.c:87 ui/authentication.glade.h:3
-msgid "_Password:"
-msgstr "_Hasło:"
+#: ../src/mn-mailbox-properties-dialog.gob:585
+msgid "_Default:"
+msgstr "Domyślna:"
 
-#: src/mn-mailbox-properties-util.c:154
-msgid "Connection type:"
-msgstr "Konfiguracja serwera:"
+#: ../src/mn-mailbox-properties-dialog.gob:587
+#: ../ui/mailbox-properties-dialog.glade.h:9
+msgid "_Default"
+msgstr "_Domyślna"
 
-#: src/mn-mailbox-properties-util.c:161
-msgid "Port:"
-msgstr "Port:"
+#: ../src/mn-mailbox-properties-dialog.gob:614
+msgid "D_efault:"
+msgstr "D_omyślnie:"
 
-#: src/mn-mailbox-properties-util.c:189
-msgid "_Authentication mechanism:"
-msgstr "Uwierzytelnianie:"
+#: ../src/mn-mailbox-properties-dialog.gob:618
+#: ../ui/mailbox-properties-dialog.glade.h:4
+msgid "D_efault"
+msgstr "Domyś_lnie"
 
-#: src/mn-mailbox-properties.c:63
-msgid "Label"
-msgstr "Opis"
+#: ../src/mn-mailbox-view.gob:249
+msgid "A paste error has occurred"
+msgstr "Wystąpił błąd wklejania"
 
-#: src/mn-mailbox-properties.c:64
-msgid "The marked up text to show in the type combo box"
-msgstr "Tekst oznaczony do pokazania się w okienku typu combo"
+#: ../src/mn-mailbox-view.gob:571
+#, c-format
+msgid "unhandled %s mailbox (%s)"
+msgstr "nieobsługiwany typ %s skrzynki (%s)"
 
-#: src/mn-mailbox-properties.c:69
-msgid "Size group"
-msgstr "Grupa rozmiaru"
+#: ../src/mn-mailbox-view.gob:575
+#, c-format
+msgid "%s mailbox"
+msgstr "Skrzynka %s"
 
-#: src/mn-mailbox-properties.c:70
-msgid "A GtkSizeGroup for aligning control labels"
-msgstr "GtkSizeGroup dla wyrównania etykiet kontroli"
+#: ../src/mn-mailbox-view.gob:586
+msgid "detecting mailbox type..."
+msgstr "wykrywanie rodzaju skrzynki..."
 
-#: src/mn-mailbox-properties.c:75
-msgid "Complete"
-msgstr "Skończonę"
+#: ../src/mn-mailbox.gob:565
+#, c-format
+msgid "\"type\" attribute missing"
+msgstr "brakuje atrybuty \"type\""
 
-#: src/mn-mailbox-properties.c:76
-msgid "Whether the properties are completely filled or not"
-msgstr "Czy właściwości są całkowicię wypełnione czy nie"
+#: ../src/mn-mailbox.gob:572
+#, c-format
+msgid "unknown mailbox type \"%s\""
+msgstr "nieznany typ skrzynki \"%s\""
 
-#: src/mn-mailbox-view.gob:263 src/mn-message-box.gob:61
-msgid "Mailbox"
-msgstr "Skrzynka pocztowa"
+#: ../src/mn-mailbox.gob:971
+#, c-format
+msgid "property \"%s\" has no value"
+msgstr "właściwość \"%s\" nie ma żadnej wartości"
 
-#. format column
-#: src/mn-mailbox-view.gob:279
-msgid "Format"
-msgstr "Format"
+#: ../src/mn-mailbox.gob:1050 ../src/mn-mailbox.gob:1068
+#: ../src/mn-shell.gob:624
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
 
-#: src/mn-mailbox-view.gob:569
-msgid "Unable to add mailbox"
-msgstr "Niezdolny dodać skrzynkę pocztową"
+#: ../src/mn-mailboxes.gob:248
+msgid "An error has occurred while importing old mailboxes"
+msgstr "Wystąpił błąd podczas importowania skrzynek pocztowych"
 
-#: src/mn-mailbox-view.gob:569
-msgid "The mailbox is already in the list."
-msgstr "Skrzynka pocztowa już jest w spisie."
+#: ../src/mn-mailboxes.gob:303
+msgid "Unable to load the mailboxes configuration"
+msgstr "Nie mogę załadować konfiguracji skrzynek"
 
-#: src/mn-mailbox.gob:130
-msgid "The mailbox URI"
-msgstr "URI skrzynki pocztowej"
+#: ../src/mn-mailboxes.gob:350
+#, c-format
+msgid "Unable to parse the XML document."
+msgstr "Nie mogę przetworzyć dokumentu XML."
 
-#: src/mn-mailbox.gob:141
-msgid "The mailbox human-readable name"
-msgstr "Ludzko-czytelne imię skrzynki pocztowej"
+#: ../src/mn-mailboxes.gob:357
+#, c-format
+msgid "The root element is missing."
+msgstr "Brak elementu korzenia."
 
-#: src/mn-mailbox.gob:145
-msgid "Whether the mailbox has to be polled or not"
-msgstr "Czy skrzynka pocztowa była sprawdzona czy nie"
+#: ../src/mn-mailboxes.gob:363
+#, c-format
+msgid "The root element \"%s\" is invalid."
+msgstr "Element korzenia \"%s\" jest nieprawidłowy."
 
-#: src/mn-mailbox.gob:151
-msgid "Whether the mailbox has new mail or not"
-msgstr "Czy skrzynka pocztowa ma nową pocztę czy nie"
+#: ../src/mn-mailboxes.gob:385
+#, c-format
+msgid "On line %i: %s."
+msgstr ""
 
-#: src/mn-mailbox.gob:156
-msgid "The list of new and unread MNMessage objects"
-msgstr "Spis przeczytanych i nie przeczytanych obiektów MNMessage"
+#: ../src/mn-mailboxes.gob:390
+#, c-format
+msgid "On line %i: unknown element \"%s\"."
+msgstr ""
 
-#: src/mn-mailbox.gob:210
-msgid "The mailbox error, if any"
-msgstr "Błąd skrzynki pocztowej, jeżeli wszelki"
+#: ../src/mn-mailboxes.gob:399
+msgid "An error has occurred while loading the mailboxes configuration"
+msgid_plural "Errors have occurred while loading the mailboxes configuration"
+msgstr[0] "Wystąpił błąd podczas odczytywania konfiguracji skrzynek"
+msgstr[1] "Wystąpiły błądy podczas odczytywania konfiguracji skrzynek"
+msgstr[2] "Wystąpiły błądy podczas odczytywania konfiguracji skrzynek"
 
-#: src/mn-mailbox.gob:309
-msgid "does not exist"
-msgstr "nie istnieje"
+#: ../src/mn-mailboxes.gob:424
+msgid "Unable to save the mailboxes configuration"
+msgstr "Nie można zapisać konfiguracji skrzynek"
 
-#: src/mn-mailbox.gob:341
-msgid "unknown format"
-msgstr "nieznany format"
+#: ../src/mn-mailboxes.gob:469 ../src/mn-vfs.c:233
+#, c-format
+msgid "Unable to remove %s: %s."
+msgstr "Nie można usunąć %s: %s"
 
-#: src/mn-mailbox.gob:407
+#: ../src/mn-mailboxes.gob:477
 #, c-format
-msgid "unable to enable immediate notification for %s: %s"
-msgstr "niezdolny umożliwić natychmiastowę zawiadomienie dla %s: %s"
+msgid "Unable to create %s: %s."
+msgstr "Nie można utworzyć %s: %s"
 
-#: src/mn-mailbox.gob:425
+#: ../src/mn-mailboxes.gob:484
 #, c-format
-msgid ""
-"As a fallback, they will be checked every %i second (this delay is "
-"configurable from the Properties Dialog)."
-msgid_plural ""
-"As a fallback, they will be checked every %i seconds (this delay is "
-"configurable from the Properties Dialog)."
-msgstr[0] ""
-"Pod reżimem awaryjnym, one będą sprawdzanę co każdą %i sekundę (ta zwłoka "
-"może być skonfigurowana w Dialogu Właściowści)."
-msgstr[1] ""
-"Pod reżimem awaryjnym, one będą sprawdzanę co każdę %i sekund (ta zwłoka "
-"może być skonfigurowana w Dialogu Właściowści)."
-msgstr[2] ""
-"Pod reżimem awaryjnym, one będą sprawdzanę co każdę %i sekundy (ta zwłoka "
-"może być skonfigurowana w Dialogu Właściowści)."
+msgid "Unable to open %s for writing: %s."
+msgstr "Nie można otworzyć %s w trybie do zapisu: %s"
 
-#: src/mn-mailbox.gob:436
+#: ../src/mn-mailboxes.gob:491
 #, c-format
-msgid ""
-"As a fallback, they will be checked every %i minute (this delay is "
-"configurable from the Properties Dialog)."
-msgid_plural ""
-"As a fallback, they will be checked every %i minutes (this delay is "
-"configurable from the Properties Dialog)."
-msgstr[0] ""
-"Pod reżimem awaryjnym, one będą sprawdzanę co każdą %i minutę (ta zwłoka "
-"może być skonfigurowana w Dialogu Właściowści)."
-msgstr[1] ""
-"Pod reżimem awaryjnym, one będą sprawdzanę co każdę %i minut (ta zwłoka może "
-"być skonfigurowana w Dialogu Właściowści)."
-msgstr[2] ""
-"Pod reżimem awaryjnym, one będą sprawdzanę co każdę %i minuty (ta zwłoka "
-"może być skonfigurowana w Dialogu Właściowści)."
+msgid "Unable to write the XML document."
+msgstr "Nie można zapisać dokumentu XML."
 
-#: src/mn-mailbox.gob:447
+#: ../src/mn-mailboxes.gob:497
 #, c-format
-msgid ""
-"As a fallback, they will be checked approximately every %i minute (this "
-"delay is configurable from the Properties Dialog)."
-msgid_plural ""
-"As a fallback, they will be checked approximately every %i minutes (this "
-"delay is configurable from the Properties Dialog)."
-msgstr[0] ""
-"Pod reżimem awaryjnym, one będą sprawdzanę co mniej więcej każdą %i minutę "
-"(ta zwłoka może być skonfigurowana w Dialogu Właściowści)."
-msgstr[1] ""
-"Pod reżimem awaryjnym, one będą sprawdzanę co mniej więcej każdę %i minut "
-"(ta zwłoka może być skonfigurowana w Dialogu Właściowści)."
-msgstr[2] ""
-"Pod reżimem awaryjnym, one będą sprawdzanę co mniej więcej każdę %i minuty "
-"(ta zwłoka może być skonfigurowana w Dialogu Właściowści)."
+msgid "Unable to close %s: %s."
+msgstr "Nie można zamknąć %s: %s"
 
-#: src/mn-mailbox.gob:463
-msgid "A monitoring error has occurred"
-msgstr "Wydarzył się błąd nasłuchowy"
+#: ../src/mn-mailboxes.gob:507 ../src/mn-mailboxes.gob:514 ../src/mn-vfs.c:251
+#: ../src/mn-vfs.c:259
+#, c-format
+msgid "Unable to rename %s to %s: %s."
+msgstr "Nie można zmienić nazwy z %s na %s: %s"
 
-#: src/mn-mailbox.gob:464
+#. non fatal
+#: ../src/mn-mailboxes.gob:520 ../src/mn-vfs.c:269
 #, c-format
-msgid ""
-"Mail Notification was unable to enable immediate notification for one or "
-"more mailboxes. %s"
-msgstr ""
-"Zawiadomienie pocztowe było niezdolnę umożliwić natychmiastowę zawiadomienie "
-"jednej albo większej ilość skrzynek pocztowych. %s"
+msgid "unable to delete %s: %s"
+msgstr "Nie można usunąć %s: %s"
 
-#: src/mn-mailboxes.gob:142
-msgid "Whether one or more of the mailboxes has to be polled"
-msgstr "Czy jedna lub więcej szkrzynek pocztowych była sprawdzona czy nie"
+#: ../src/mn-mailboxes.gob:550
+#, c-format
+msgid "%s has %i new message"
+msgid_plural "%s has %i new messages"
+msgstr[0] "%s ma %i nową wiadomość"
+msgstr[1] "%s ma %i nowe wiadomości"
+msgstr[2] "%s ma %i nowych wiadomości"
 
-#: src/mn-mailboxes.gob:272
+#: ../src/mn-mailboxes.gob:576
 #, c-format
-msgid "%s is unsupported: %s"
-msgstr "%s jest nieobsługiwane: %s"
+msgid "%s reported an error: %s"
+msgstr "%s zgłosiło błąd: %s"
 
-#: src/mn-mailboxes.gob:304
+#: ../src/mn-maildir-mailbox-backend.gob:127
 #, c-format
-msgid "%s has new mail"
-msgstr "%s ma nową pocztę"
+msgid "unable to open folder \"%s\": %s"
+msgstr "nie można otworzyć folderu \"%s\": %s"
 
-#: src/mn-mailboxes.gob:304
+#: ../src/mn-maildir-mailbox-backend.gob:219
 #, c-format
-msgid "%s has no new mail"
-msgstr "%s nie ma nowej poczty"
+msgid "unable to close folder \"%s\": %s"
+msgstr "nie można zamknąć folderu \"%s\": %s"
 
-#: src/mn-mailboxes.gob:330
+#: ../src/mn-maildir-mailbox-backend.gob:222
 #, c-format
-msgid "%s reported an error: %s"
-msgstr "%s zgłosiło błąd: %s"
+msgid "error while reading folder \"%s\": %s"
+msgstr "błąd podczas czytania folderu \"%s\": %s"
 
-#: src/mn-maildir-mailbox.gob:119
+#: ../src/mn-maildir-mailbox-backend.gob:253
+#: ../src/mn-mh-mailbox-backend.gob:210
+#: ../src/mn-sylpheed-mailbox-backend.gob:311
 #, c-format
-msgid "unable to open folder \"new\": %s"
-msgstr "niezdolny otworzyć teczkę \"new\": %s"
+msgid "cannot read %i message"
+msgid_plural "cannot read %i messages"
+msgstr[0] "Nie można przeczytać %i wiadomości"
+msgstr[1] "Nie można przeczytać %i wiadomości"
+msgstr[2] "Nie można przeczytać %i wiadomości"
+
+#: ../src/mn-maildir-message.gob:159
+msgid "Delete message?"
+msgstr "Usunąć wiadomość?"
 
-#: src/mn-maildir-mailbox.gob:161
+#: ../src/mn-maildir-message.gob:225
+msgid "The message cannot be moved to the trash. Permanently delete it?"
+msgstr "Wiadomość nie może zostać przesunięta do kosza. Usunąć ją całkowicie?"
+
+#: ../src/mn-maildir-message.gob:250
 #, c-format
-msgid "unable to close folder \"new\": %s"
-msgstr "niezdolny zamknąć teczkę \"new\": %s"
+msgid ""
+"The message could not be moved to the trash (%s). Permanently delete it?"
+msgstr ""
+"Wiadomość nie może zostać przesunięta do kosza (%s). Usunąć ją całkowicie?"
+
+#: ../src/mn-main.c:76
+msgid "yes"
+msgstr "tak"
+
+#: ../src/mn-main.c:76
+msgid "no"
+msgstr "nie"
 
-#: src/mn-maildir-mailbox.gob:164
+#: ../src/mn-main.c:107
 #, c-format
-msgid "error while reading folder \"new\": %s"
-msgstr "błąd podczas czytania teczki \"new\": %s"
+msgid "%s version %s\n"
+msgstr "%s wersja %s\n"
 
-#: src/mn-main.c:99
+#: ../src/mn-main.c:112
 #, c-format
-msgid "Compiled-in mailbox backends: %s\n"
-msgstr "Wkompilowanę wewnętrzne cechy skrzynki pocztowej: %s\n"
+msgid "Mailbox backends:\n"
+msgstr "Backendy skrzynki:\n"
 
-#: src/mn-main.c:116
+#: ../src/mn-main.c:117
 #, c-format
-msgid "Compiled-in features: %s\n"
-msgstr "Wkompilowanę cechy: %s\n"
+msgid "IMAP and POP3 features:\n"
+msgstr "Właściwości IMAP i POP3:\n"
 
-#: src/mn-main.c:175
-msgid "Enable informational output"
-msgstr "Umożliw informacyjny wydruk"
+#: ../src/mn-main.c:204
+#, c-format
+msgid "Unable to contact the running Mail Notification instance: %s."
+msgstr ""
+"Nie można skontaktować się z uruchomionym procesem Zawiadomienia Pocztowego: "
+"%s."
+
+#: ../src/mn-main.c:244
+#, c-format
+msgid "%s option ignored since Mail Notification is not already running"
+msgstr ""
+"Opcja %s jest zignorowana, ponieważ Zawiadomienie Pocztowe nie jest "
+"uruchomione"
 
-#: src/mn-main.c:184
-msgid "List compiled-in features and exit"
-msgstr "Wydrukuj spis wkompilowanych cech i zakończ"
+#: ../src/mn-main.c:347
+msgid "Show version information"
+msgstr "Pokaż informacje o wersji"
 
-#: src/mn-main.c:193
-msgid "Display the mail summary dialog"
-msgstr "Wyświetlij dialog streszczenia poczty"
+#: ../src/mn-main.c:356
+msgid "Enable informational output"
+msgstr "Umożliw informacyjny wydruk"
 
-#: src/mn-main.c:202
+#: ../src/mn-main.c:365
 msgid "Display the properties dialog"
 msgstr "Wyświetlij dialog właściwości"
 
-#: src/mn-main.c:211
+#: ../src/mn-main.c:374
 msgid "Display the about dialog"
 msgstr "Wyświetlij dialog \"O\""
 
-#: src/mn-main.c:220
-msgid "Close the mail summary popup"
-msgstr "Zamknij wyskakujące okienko streszczenia poczty"
+#: ../src/mn-main.c:383
+msgid "Consider new mail as read"
+msgstr "Uznaj nową pocztę za przeczytaną"
 
-#: src/mn-main.c:229
+#: ../src/mn-main.c:392
 msgid "Update the mail status"
 msgstr "Odśwież stan poczty"
 
-#: src/mn-main.c:238
-msgid "Report the mail status"
-msgstr "Zgłoś stan poczty"
+#: ../src/mn-main.c:401
+msgid "Print a XML mail summary"
+msgstr "Wydrukuj podsumowanie XML"
 
-#: src/mn-main.c:247
-msgid "Unset obsolete GConf configuration and exit"
-msgstr "Usuń przestarzałą konfigurację GConf i zakończ"
+#: ../src/mn-main.c:410
+msgid "Unset obsolete GConf configuration"
+msgstr "Usuń przestarzałą konfigurację GConf"
+
+#: ../src/mn-main.c:419
+msgid "Quit Mail Notification"
+msgstr "Zakończ powiadomienie pocztowe"
 
 #.
-#. * We can't use mn_error_dialog() because gtk_init() has not been
-#. * called yet.
+#. * We cannot use mn_fatal_error_dialog() because gtk_init() has
+#. * not been called yet.
 #.
-#: src/mn-main.c:273
+#: ../src/mn-main.c:445
 msgid "multi-threading is not available"
 msgstr "wielowątkowość nie jest dostępna "
 
-#: src/mn-main.c:320
-msgid ""
-"Bonobo could not locate the automation object. Please check your Mail "
-"Notification installation."
-msgstr ""
-"Bonobo nie potrafiło znaleźć obiektu automatyzacyjnego. Proszę sprawdzić "
-"instalację Zawiadomienie pocztowego"
+#: ../src/mn-main.c:486
+msgid "Mail Notification is not running"
+msgstr "Zawiadomienie pocztowe nie jest uruchomione."
 
-#: src/mn-main.c:325
+#: ../src/mn-main.c:498
 msgid "Unable to initialize the GnomeVFS library."
 msgstr "Niezdolny do inicjalizacji biblioteki GnomeVFS."
 
-#: src/mn-main.c:361
+#: ../src/mn-main.c:511
+msgid "An initialization error has occurred in Mail Notification"
+msgstr "Wystąpił błąd w inicjalizacji Zawiadomienia Pocztowego"
+
+#: ../src/mn-main.c:512
+msgid ""
+"Unable to initialize the notification library. Message popups will not be "
+"displayed."
+msgstr ""
+"Nie można zainicjować biblioteki powiadomień. Wyskakujące okienka nie będą "
+"wyświetlane."
+
+#: ../src/mn-main.c:557
+msgid "quitting Mail Notification"
+msgstr "kończę Zawiadomienie Pocztowe"
+
+#: ../src/mn-main.c:576
+msgid "considering new mail as read"
+msgstr "uznaję nową pocztę za przeczytaną"
+
+#: ../src/mn-main.c:581
 msgid "updating the mail status"
 msgstr "odświeżanie stanu poczty"
 
-#: src/mn-main.c:379
+#: ../src/mn-main.c:598
 msgid "Mail Notification is already running"
 msgstr "Zawiadomienie pocztowe jest już uruchomione."
 
-#: src/mn-main.c:386
-msgid ""
-"Bonobo could not locate the GNOME_MailNotification_Automation.server file. "
-"Please check your Mail Notification installation."
-msgstr ""
-"Bonobo nie mogło znaleźć pliku GNOME_MailNotification_Automation.server."
-"Proszę sprawdzić swoją instalację Zawiadomienia Pocztowego."
-
-#: src/mn-main.c:390
-msgid ""
-"Bonobo was unable to register the automation server. Please check your Mail "
-"Notification installation."
-msgstr ""
-"Bonobo nie potrafiło zarejestrować serwera automatyzacyjnego. Proszę "
-"sprawdzić instalację Zawiadomienia Pocztowego"
-
-#: src/mn-mbox-mailbox.gob:221
+#: ../src/mn-message-mime.c:173
 #, c-format
-msgid "error while reading mailbox: %s"
-msgstr "błąd podczas odczytywania skrzynki pocztowej: %s"
+msgid "unable to parse MIME message"
+msgstr "niezdolny do zrobienia rozbioru wiadomości MIME"
 
-#: src/mn-mbox-mailbox.gob:230
-#, c-format
-msgid "unable to open mailbox: %s"
-msgstr "niezdolny otworzyć skrzynkę pocztową: %s"
+#. translators: header capitalization
+#: ../src/mn-message.gob:97
+msgid "Open"
+msgstr "Otwórz"
 
-#: src/mn-message-box.gob:64
-msgid "Unreadable message"
-msgstr "Nieczytalna wiadomość"
+#: ../src/mn-message.gob:98
+msgid "Unable to open message"
+msgstr "Nie można otworzyć wiadomości"
 
-#: src/mn-message-box.gob:69
-msgid "From"
-msgstr "Nadawca"
+#. translators: header capitalization
+#: ../src/mn-message.gob:107
+msgid "Mark as Read"
+msgstr "Oznacz jako przeczytane"
 
-#: src/mn-message-box.gob:70
-msgid "Subject"
-msgstr "Temat wiadomości"
+#: ../src/mn-message.gob:108
+msgid "Unable to mark message as read"
+msgstr "Nie można oznaczyć wiadomości jako przeczytanej"
 
-#: src/mn-message-box.gob:75
-msgid "Sent"
-msgstr "Wysłano"
+#. translators: header capitalization
+#: ../src/mn-message.gob:117
+msgid "Mark as Spam"
+msgstr "Oznacz jako spam"
 
-#: src/mn-message-box.gob:192
-#, c-format
-msgid "about %i second ago"
-msgid_plural "about %i seconds ago"
-msgstr[0] "%i sekundę temu"
-msgstr[1] "%i sekundy temu"
-msgstr[2] "%i sekund temu"
+#: ../src/mn-message.gob:118 ../src/mn-message.gob:128
+msgid "Unable to mark message as spam"
+msgstr "Nie można oznaczyć wiadomości jako spam"
 
-#: src/mn-message-box.gob:196
-#, c-format
-msgid "about %i minute ago"
-msgid_plural "about %i minutes ago"
-msgstr[0] "%i minutę temu"
-msgstr[1] "%i minuty temu"
-msgstr[2] "%i minut temu"
+#. translators: header capitalization
+#: ../src/mn-message.gob:127
+msgid "Delete"
+msgstr ""
 
-#: src/mn-message-box.gob:201
+#: ../src/mn-message.gob:336 ../src/mn-sound-player.gob:133
+#: ../src/mn-sound-player.gob:169 ../src/mn-util.c:1577
 #, c-format
-msgid "about %i hour ago"
-msgid_plural "about %i hours ago"
-msgstr[0] "%i godzinę temu"
-msgstr[1] "%i godziny temu"
-msgstr[2] "%i godzin temu"
+msgid "Unable to execute \"%s\": %s."
+msgstr "Niezdolny do wykonania \"%s\": %s"
 
-#: src/mn-message-box.gob:206
+#: ../src/mn-mh-mailbox-backend.gob:219
 #, c-format
-msgid "about %i day ago"
-msgid_plural "about %i days ago"
-msgstr[0] "%i dzień temu"
-msgstr[1] "%i dni temu"
-msgstr[2] "%i dni temu"
+msgid "error while reading %s: %s"
+msgstr "błąd podczas czytania %s: %s"
 
-#: src/mn-message-box.gob:211
+#: ../src/mn-mh-mailbox-backend.gob:243 ../src/mn-webmail-mailbox.gob:276
 #, c-format
-msgid "%i week ago"
-msgid_plural "%i weeks ago"
-msgstr[0] "%i tydzień temu"
-msgstr[1] "%i tygodni temu"
-msgstr[2] "%i tygodnie temu"
+msgid "unable to open %s: %s"
+msgstr "nie można otworzyć %s: %s"
 
-#: src/mn-message-mime.c:105
-msgid "unable to parse MIME message"
-msgstr "niezdolny do zrobienia rozbioru wiadomości MIME"
-
-#: src/mn-message.gob:101
-msgid "Unknown"
-msgstr "Nieznany"
+#: ../src/mn-pi-mailbox-properties.gob:73
+msgid "_Standard"
+msgstr "_Standard"
 
-#: src/mn-mh-mailbox.gob:184
-#, c-format
-msgid "error while reading .mh_sequences: %s"
-msgstr "błąd podczas czytania .mh_sequences: %s"
+#: ../src/mn-pi-mailbox-properties.gob:74
+msgid "In-_band SSL/TLS"
+msgstr "Wewnętrzne SSL/TLS"
 
-#: src/mn-mh-mailbox.gob:196
-#, c-format
-msgid "unable to open .mh_sequences: %s"
-msgstr "niezdolny do otwarcia .mh_sequences: %s"
+#: ../src/mn-pi-mailbox-properties.gob:75
+msgid "SSL/TLS on s_eparate port"
+msgstr "SSL/TLS na oddzielnym porcie"
 
-#: src/mn-pending-mailbox.gob:35
-msgid "detecting"
-msgstr "odkrywanie"
+#: ../src/mn-pi-mailbox-properties.gob:79
+msgid "_Server:"
+msgstr "_Serwer:"
 
-#: src/mn-pi-mailbox-properties.gob:76
-msgid "_Hostname:"
-msgstr "Nazwa serwera:"
+#. translators: header capitalization
+#: ../src/mn-pi-mailbox-properties.gob:99
+msgid "Connection Type"
+msgstr "Typ połączenia"
 
-#: src/mn-pi-mailbox-properties.gob:94
-msgid "_Details"
-msgstr "_Szczegóły"
+#: ../src/mn-pi-mailbox-properties.gob:146
+msgid "Port:"
+msgstr "Port:"
 
-#: src/mn-pi-mailbox-properties.gob:106
-msgid "sta_ndard"
-msgstr "bez szyfrowania"
+#. translators: header capitalization
+#: ../src/mn-pi-mailbox-properties.gob:173
+msgid "Authentication"
+msgstr "Autoryzacja"
 
-#: src/mn-pi-mailbox-properties.gob:116
-msgid "_in-band SSL/TLS"
-msgstr "wewnątrzpasmowy TLS"
+#: ../src/mn-pi-mailbox-properties.gob:177
+msgid "_Mechanism:"
+msgstr "_Mechanizm:"
 
-#: src/mn-pi-mailbox-properties.gob:126
-msgid "SSL/TLS on sepa_rate port"
-msgstr "SSL/TLS na oddzielnym porcie"
+#: ../src/mn-pi-mailbox-properties.gob:211
+msgid "Connection"
+msgstr "Połączenie"
 
-#: src/mn-pop3-mailbox-properties.gob:86
-msgid "The hostname or IP address of the POP3 server"
-msgstr "Imię lub adres IP serwera POP3"
+#: ../src/mn-pi-mailbox.gob:147
+msgid "SSL/TLS support has not been compiled in"
+msgstr "Protokół SSL/TLS nie jest obsługiwany"
 
-#: src/mn-pop3-mailbox-properties.gob:87
-msgid "Your username on the POP3 server"
-msgstr "Twoję imię użytkownika na serwerze POP3"
+#: ../src/mn-pi-mailbox.gob:305
+msgid "missing certificate"
+msgstr "brak certyfikatu"
 
-#: src/mn-pop3-mailbox-properties.gob:88
+#: ../src/mn-pi-mailbox.gob:339
+#, c-format
 msgid ""
-"Your password on the POP3 server (if left blank, you will be prompted for "
-"the password when needed)"
+"Mail Notification was unable to trust \"%s\" (%s). It is possible that "
+"someone is intercepting your communication to obtain your confidential "
+"information.\n"
+"\n"
+"You should only connect to the server if you are certain you are connected "
+"to \"%s\". If you choose to connect to the server, this message will not be "
+"shown again."
 msgstr ""
-"Twoje hasło na serwerze POP3 (jeśli pozostawionę pustę, to będziesz zapytany "
-"o hasło wtedy kiedy będzie potrzebnę)"
+"Zawiadomienie pocztowe nie mogło zaufać \"%s\" (%s). Jest możliwe że ktoś "
+"przechwyta twoje komunikacje żeby uzyskać twoją konfidencjalną informację.\n"
+"\n"
+"Powinieneś się tylko łączyć z serwerem jeśli jesteś pewny że jesteś "
+"połączony z \"%s\". Jeśli się połączysz z tym serwerem, ta wiadomość nie "
+"będzie pokazana powtórnie."
+
+#: ../src/mn-pi-mailbox.gob:353
+#, c-format
+msgid "Certificate fingerprint: %s."
+msgstr "Odcisk palca certyfikatu: %s"
 
-#: src/mn-pop3-mailbox-properties.gob:89 src/mn-pop3-mailbox-properties.gob:90
-msgid "The port number of the POP3 server"
-msgstr "Numer portu serweru POP3"
+#: ../src/mn-pi-mailbox.gob:360
+msgid "Connect to untrusted server?"
+msgstr "Połączyć się z niezaufanym serwerem?"
 
-#: src/mn-pop3-mailbox.gob:273
+#: ../src/mn-pop3-mailbox.gob:359
 msgid "invalid arguments for the LOGIN-DELAY capability"
 msgstr "nieważne argumenty do zdolności LOGIN-DELAY"
 
-#: src/mn-pop3-mailbox.gob:590
-msgid "unknown error"
-msgstr "nieznany błąd"
+#.
+#. * Some servers violate RFC 2449 by not supporting a
+#. * second argument to the AUTH command. Support these
+#. * servers nevertheless, by retrying without the SASL
+#. * initial client response.
+#.
+#: ../src/mn-pop3-mailbox.gob:500
+msgid ""
+"SASL authentication with initial client response failed, retrying without "
+"initial client response"
+msgstr ""
+"Autentykacja SASL z pierwszą odpowiedzią klienta zawiodła, próbuję jeszcze "
+"raz bez pierwszej odpowiedzi."
 
-#: src/mn-pop3-mailbox.gob:729
+#: ../src/mn-pop3-mailbox.gob:920
 #, c-format
 msgid "honouring LOGIN-DELAY, sleeping for %i second"
 msgid_plural "honouring LOGIN-DELAY, sleeping for %i seconds"
@@ -1314,39 +1412,61 @@ msgstr[0] "honorujemy LOGIN-DELAY, śpimy przez %i sekundę"
 msgstr[1] "honorujemy LOGIN-DELAY, śpimy przez %i sekund"
 msgstr[2] "honorujemy LOGIN-DELAY, śpimy przez %i sekundy"
 
-#: src/mn-pop3-mailbox.gob:893
+#: ../src/mn-pop3-mailbox.gob:1092
 msgid "server does not support APOP authentication"
 msgstr "serwer nie popiera potwierdzenia tożsamości APOP"
 
-#: src/mn-pop3-mailbox.gob:922
+#: ../src/mn-pop3-mailbox.gob:1148
 msgid "falling back to APOP authentication"
 msgstr "wycofanię do potwierdzenia tożsamości APOP"
 
-#: src/mn-pop3-mailbox.gob:927
+#: ../src/mn-pop3-mailbox.gob:1153
 msgid "falling back to USER/PASS authentication"
 msgstr "wycofanię do potwierdzenia tożsamości USER/PASS"
 
-#: src/mn-properties.c:193
-msgid "top left"
-msgstr "lewy górny róg ekranu"
+#: ../src/mn-popup.gob:45 ../src/mn-standard-message-view.gob:39
+msgid "Mailbox:"
+msgstr "Skrzynka pocztowa:"
+
+#: ../src/mn-popup.gob:46 ../src/mn-standard-message-view.gob:40
+msgid "From:"
+msgstr "Nadawca:"
+
+#: ../src/mn-popup.gob:47 ../src/mn-standard-message-view.gob:41
+msgid "Subject:"
+msgstr "Temat wiadomości:"
 
-#: src/mn-properties.c:194
-msgid "top right"
-msgstr "prawy górny róg ekranu"
+#: ../src/mn-popup.gob:96
+#, c-format
+msgid "configuration key %s: there is no action named \"%s\""
+msgstr "klucz konfiguracyjny %s: nie ma akcji o nazwie \"%s\""
 
-#: src/mn-properties.c:195
-msgid "bottom left"
-msgstr "lewy dolny róg ekranu"
+#: ../src/mn-popup.gob:176
+#, c-format
+msgid "unable to show popup: %s"
+msgstr "nie można pokazać okienka popup: %s"
 
-#: src/mn-properties.c:196
-msgid "bottom right"
-msgstr "prawy dolny róg ekranu"
+#: ../src/mn-popup.gob:194
+#, c-format
+msgid "unable to close popup: %s"
+msgstr "nie można zamknąć okienka popup: %s"
+
+#. we set the summary here because libnotify requires it
+#. translators: header capitalization
+#: ../src/mn-popup.gob:205
+msgid "New Message"
+msgstr "Nowa wiadomość"
 
-#: src/mn-properties.c:287
+#. translators: header capitalization
+#: ../src/mn-properties-dialog.gob:114 ../ui/properties-dialog.glade.h:18
+msgid "Mail Notification Properties"
+msgstr "Właściwości Zawiadomienia Pocztowego"
+
+#: ../src/mn-properties-dialog.gob:232
 msgid "No mailbox selected."
 msgstr "Żadna skrzynka pocztowa nie została wybrana."
 
-#: src/mn-properties.c:292
+#: ../src/mn-properties-dialog.gob:237
 #, c-format
 msgid "%i mailbox selected."
 msgid_plural "%i mailboxes selected."
@@ -1354,588 +1474,1232 @@ msgstr[0] "%i skrzynka pocztowa wybrana"
 msgstr[1] "%i skrzynki pocztowe wybrane"
 msgstr[2] "%i wybranych skrzynek pocztowych"
 
-#: src/mn-shell.gob:93
-msgid "You have new mail."
-msgstr "Masz wiadomość!"
+#: ../src/mn-server.gob:136
+#, c-format
+msgid "Unable to register the Mail Notification D-Bus server: %s."
+msgstr "Nie można zarejestrować serwera D-Bus: %s"
+
+#: ../src/mn-shell.gob:290
+#, c-format
+msgid "received %s signal, exiting"
+msgstr "otrzymano sygnał %s, kończenie"
+
+#: ../src/mn-shell.gob:430
+msgid "No mail reader is configured"
+msgstr "Brak skonfigurowanego czytnika poczty"
+
+#: ../src/mn-shell.gob:431
+msgid ""
+"You can configure a mail reader by choosing <b>System → Preferences → "
+"Preferred Applications</b>."
+msgstr ""
+"Możesz skonfigurować czytnik poczty w menu <b> System → Preferencje → "
+"Preferowane Aplikacje</b>"
+
+#: ../src/mn-shell.gob:443 ../src/mn-shell.gob:449 ../src/mn-shell.gob:794
+msgid "Unable to open the latest message"
+msgstr "Nie można otworzyć ostatniej wiadomości"
+
+#: ../src/mn-shell.gob:444
+#, c-format
+msgid "Messages of mailbox \"%s\" cannot be opened."
+msgstr "Wiadomości ze skrzynki \"%s\" nie mogą być otwarte."
+
+#: ../src/mn-shell.gob:450 ../src/mn-shell.gob:714
+msgid "You have no new mail."
+msgstr "Brak nowych wiadomości."
+
+#: ../src/mn-shell.gob:605
+#, c-format
+msgid "%s (%i)"
+msgstr "%s (%i)"
 
-#: src/mn-shell.gob:360
+#. translators: header capitalization
+#: ../src/mn-shell.gob:610
 msgid "Mailboxes Having New Mail"
 msgstr "Skrzynki pocztowe z nową pocztą"
 
-#: src/mn-shell.gob:362
+#. translators: header capitalization
+#: ../src/mn-shell.gob:629
 msgid "Errors"
 msgstr "Błędy"
 
-#: src/mn-shell.gob:364
-msgid "Unsupported Mailboxes"
-msgstr "Nieskonfigurowane skrzynki pocztowe"
-
-#: src/mn-shell.gob:381 ui/summary-dialog.glade.h:1
+#. translators: header capitalization
+#: ../src/mn-shell.gob:649
 msgid "Mail Summary"
 msgstr "Podsumowanie wiadomości"
 
-#: src/mn-soup.c:140
+#: ../src/mn-shell.gob:689
 #, c-format
-msgid "unable to parse proxy URI \"%s\""
-msgstr "niezdolny zrobić rozbiór pośredniczego URI \"%s\""
+msgid "<span style=\"italic\">%i message is not displayed</span>"
+msgid_plural "<span style=\"italic\">%i messages are not displayed</span>"
+msgstr[0] "<span style=\"italic\">%i wiadomość nie jest pokazana</span>"
+msgstr[1] "<span style=\"italic\">%i wiadomości nie są pokazane</span>"
+msgstr[2] "<span style=\"italic\">%i wiadomości nie jest pokazanych</span>"
+
+#: ../src/mn-sound-file-chooser-dialog.gob:48
+msgid "Select a File"
+msgstr "Wybierz plik"
+
+#: ../src/mn-sound-file-chooser-dialog.gob:58
+msgid "All files"
+msgstr "Wszystkie pliki"
 
-#: src/mn-ssl.c:79
+#: ../src/mn-sound-file-chooser-dialog.gob:63
+msgid "Audio files"
+msgstr "Pliki dźwiękowe"
+
+#: ../src/mn-sound-player.gob:120
+msgid "Unable to play sound"
+msgstr "Nie można odtworzyć dźwięku"
+
+#: ../src/mn-sound-player.gob:122 ../src/mn-util.c:1576
+msgid "A command error has occurred in Mail Notification"
+msgstr "Błąd rozkazowy występił w Zawiadomieniu Pocztowym"
+
+#: ../src/mn-ssl.c:191
 msgid "unknown SSL/TLS error"
 msgstr "nieznany błąd SSL/TLS"
 
-#: src/mn-stock.c:28
-msgid "Select _All"
-msgstr "Wybierz _Wszystkie"
-
-#: src/mn-stock.c:29
-msgid "_Mail Summary"
-msgstr "_Streszczenie poczty"
+#: ../src/mn-standard-message-view.gob:45
+msgid "Sent:"
+msgstr "Wysłano:"
 
-#: src/mn-sylpheed-mailbox.gob:119
+#: ../src/mn-sylpheed-mailbox-backend.gob:229
 #, c-format
 msgid "unable to open folder: %s"
 msgstr "niezdolny otworzyć teczkę: %s"
 
-#: src/mn-sylpheed-mailbox.gob:165
+#: ../src/mn-sylpheed-mailbox-backend.gob:317
 #, c-format
 msgid "unable to close folder: %s"
 msgstr "niezdolny zamknąć teczkę: %s"
 
-#: src/mn-sylpheed-mailbox.gob:168
+#: ../src/mn-sylpheed-mailbox-backend.gob:320
 #, c-format
 msgid "error while reading folder: %s"
 msgstr "błąd podczas czytania teczki: %s"
 
-#: src/mn-system-mailbox-properties.gob:34 src/mn-uri.gob:411
-msgid "System Mailbox"
-msgstr "Lokalna skrzynka"
+#: ../src/mn-sylpheed-mailbox-backend.gob:368
+#, c-format
+msgid "unable to set encoding: %s"
+msgstr "nie można ustawić kodowania: %s"
+
+#: ../src/mn-sylpheed-mailbox-backend.gob:443
+#, c-format
+msgid "unexpected end of file"
+msgstr "nieoczekiwany koniec pliku"
+
+#: ../src/mn-sylpheed-mailbox-backend.gob:483
+#, c-format
+msgid "incompatible file version \"%i\""
+msgstr "niekompatybilna wersja pliku \"%i\""
+
+#: ../src/mn-sylpheed-message.gob:69
+#, c-format
+msgid "Unable to read %s: %s."
+msgstr "Nie można  przeczytać %s: %s"
+
+#: ../src/mn-system-vfs-mailbox-properties.gob:38
+#: ../src/mn-system-vfs-mailbox-properties.gob:46
+#: ../src/mn-system-vfs-mailbox.gob:44
+msgid "System mailbox"
+msgstr "Skrzynka systemowa"
 
-#: src/mn-system-mailbox-properties.gob:57
+#: ../src/mn-system-vfs-mailbox-properties.gob:73
 #, c-format
-msgid "Your system mailbox (<span weight=\"bold\">%s</span>) will be used."
+msgid "Your system mailbox is <span weight=\"bold\">%s</span>."
 msgstr ""
-"Skrzynka pocztowa twojego systemu (<span weight=\"bold\">%s</span>) zostanie "
-"użyta."
+"Lokalizacja Twojej systemowej skrzynki pocztowej:<span weight=\"bold\">%s</"
+"span>."
 
-#: src/mn-system-mailbox-properties.gob:64
+#: ../src/mn-system-vfs-mailbox-properties.gob:80
 msgid ""
-"The location of your system mailbox could not be detected. Please set the "
-"MAIL environment variable."
+"The location of your system mailbox could not be detected. Check the MAIL "
+"environment variable."
 msgstr ""
-"Umieszczenie skrzynki pocztowej twojego systemu nie mogło być odkrytę. "
-"Proszę ustawić zmienną środowiskową MAIL."
+"Umieszczenie skrzynki pocztowej twojego systemu nie zostało wykryte. Proszę "
+"ustawić zmienną środowiskową MAIL."
 
-#: src/mn-unsupported-mailbox.gob:33
-msgid "The reason why the mailbox is unsupported"
-msgstr "Powód z powodu którego skrzynka pocztowa nie jest popierana"
+#: ../src/mn-system-vfs-mailbox.gob:71
+msgid "system mailbox not found"
+msgstr "skrzynka systemowa nie znaleziona"
 
-#: src/mn-unsupported-mailbox.gob:40
-msgid "unsupported"
-msgstr "nieobsługiwany"
+#: ../src/mn-test-mailbox.gob:38
+msgid "Test mailbox"
+msgstr "Skrzynka testowa"
 
-#: src/mn-util.c:233
+#: ../src/mn-test-mailbox.gob:57
 #, c-format
-msgid "error loading image: %s"
-msgstr "błąd w ładowaniu obrazka: %s"
+msgid "Test message #%i"
+msgstr "Wiadomość testowa nr. %i"
 
-#: src/mn-util.c:271
-#, c-format
-msgid "widget \"%s\" not found in interface \"%s\""
-msgstr "element \"%s\" nie mógł byc znaleziony w interfejsie \"%s\""
+#. translators: header capitalization
+#: ../src/mn-test-mailbox.gob:63
+msgid "Mail Notification Properties Dialog"
+msgstr "Okno preferencji powiadamiania o nowej poczcie"
+
+#: ../src/mn-util.c:525 ../src/mn-util.c:548 ../src/mn-util.c:568
+#: ../src/mn-util.c:590
+msgid "A drag and drop error has occurred"
+msgstr "Błąd podczas przeciągania i upuszczenia"
 
-#: src/mn-util.c:385
-msgid "received an invalid URI list"
-msgstr "otrzymano nieważną listę URIów"
+#: ../src/mn-util.c:526
+msgid "An invalid location list has been received."
+msgstr "Otrzymano błędną lokację listy."
 
-#: src/mn-util.c:421
-msgid "received an invalid Mozilla URL"
-msgstr "otrzymano nieważny Mozillowy URL"
+#: ../src/mn-util.c:569
+msgid "An invalid Mozilla location has been received."
+msgstr "Otrzymano błędną lokację Mozilli."
 
-#: src/mn-util.c:514
+#: ../src/mn-util.c:680
 msgid "Unable to display help"
 msgstr "Niezdolny do wyświetlenia pomocy"
 
-#: src/mn-util.c:528
-#, c-format
-msgid "Unable to create a thread: %s."
-msgstr "Niezdolny do stworzenia wątku: %s."
+#: ../src/mn-util.c:692
+msgid "Unable to open link"
+msgstr "Nie można otworzyć linka"
 
-#: src/mn-util.c:705
-msgid "_Do not show this message again"
-msgstr "_Nie pokazuj tej wiadomości ponownie"
+#: ../src/mn-util.c:883
+#, c-format
+msgid ""
+"The following location is invalid:\n"
+"\n"
+"%s"
+msgid_plural ""
+"The following locations are invalid:\n"
+"\n"
+"%s"
+msgstr[0] ""
+"Następujące położenie jest nieprawidłowe:\n"
+"\n"
+"%s"
+msgstr[1] ""
+"Następujące położenia są nieprawidłowe:\n"
+"\n"
+"%s"
+msgstr[2] ""
+"Następujące położenia są nieprawidłowe:\n"
+"\n"
+"%s"
 
-#: src/mn-util.c:789
+#: ../src/mn-util.c:899
 msgid "A fatal error has occurred in Mail Notification"
 msgstr "Fatalny błąd zdarzył się w Zawiadomieniu Pocztowym"
 
-#: src/mn-util.c:804
+#: ../src/mn-util.c:979
+#, c-format
+msgid "%i second ago"
+msgid_plural "%i seconds ago"
+msgstr[0] "%i sekundę temu"
+msgstr[1] "%i sekundy temu"
+msgstr[2] "%i sekund temu"
+
+#: ../src/mn-util.c:983
 #, c-format
-msgid "unable to get current time: %s"
-msgstr "niezdolny otrzymać aktualny czas: %s"
+msgid "about %i minute ago"
+msgid_plural "about %i minutes ago"
+msgstr[0] "około %i minutę temu"
+msgstr[1] "około %i minuty temu"
+msgstr[2] "około %i minut temu"
 
-#: src/mn-util.c:906
+#: ../src/mn-util.c:988
 #, c-format
-msgid "invalid signal specification \"%s\""
-msgstr "nieważna specyfikacja sygnału  \"%s\""
+msgid "about %i hour ago"
+msgid_plural "about %i hours ago"
+msgstr[0] "około %i godzinę temu"
+msgstr[1] "około %i godziny temu"
+msgstr[2] "około %i godzin temu"
 
-#: src/mn-util.c:945
-msgid "A command error has occurred in Mail Notification"
-msgstr "Błąd rozkazowy występił w Zawiadomieniu Pocztowym"
+#: ../src/mn-util.c:993
+#, c-format
+msgid "about %i day ago"
+msgid_plural "about %i days ago"
+msgstr[0] "około %i dzień temu"
+msgstr[1] "około %i dni temu"
+msgstr[2] "około %i dni temu"
 
-#: src/mn-util.c:946
+#: ../src/mn-util.c:998
 #, c-format
-msgid "Unable to execute \"%s\": %s."
-msgstr "Niezdolny do wykonania \"%s\": %s"
+msgid "about %i week ago"
+msgid_plural "about %i weeks ago"
+msgstr[0] "około %i dzień temu"
+msgstr[1] "około %i dni temu"
+msgstr[2] "około %i dni temu"
+
+#: ../src/mn-util.c:1016
+#, c-format
+msgid "%i second"
+msgid_plural "%i seconds"
+msgstr[0] "%i sekunda"
+msgstr[1] "%i sekundy"
+msgstr[2] "%i sekund"
 
-#: ui/authentication.glade.h:1
-msgid "*"
-msgstr "*"
+#: ../src/mn-util.c:1020
+#, c-format
+msgid "%i minute"
+msgid_plural "%i minutes"
+msgstr[0] "%i minuta"
+msgstr[1] "%i minuty"
+msgstr[2] "%i minut"
+
+#: ../src/mn-util.c:1025
+#, c-format
+msgid "%i hour"
+msgid_plural "%i hours"
+msgstr[0] "%i godzina"
+msgstr[1] "%i godziny"
+msgstr[2] "%i godzin"
+
+#: ../src/mn-util.c:1030
+msgid "1 day"
+msgstr "1 dzień"
+
+#: ../src/mn-util.c:1506
+#, c-format
+msgid "unterminated substitution"
+msgstr "niezakończony substytut"
+
+#: ../src/mn-util.c:1545
+#, c-format
+msgid "unknown substitution \"%s\""
+msgstr "nieznana podmiana \"%s\""
+
+#: ../src/mn-util.c:1548
+#, c-format
+msgid "empty substitution"
+msgstr "pusta podmiana"
+
+#: ../src/mn-vfs-mailbox.gob:236
+#, c-format
+msgid "unable to monitor %s (%s), poll mode activated"
+msgstr "nie można monitorować %s (%s), tryb poll włączony"
+
+#: ../src/mn-vfs-mailbox.gob:426
+msgid "unknown mailbox format"
+msgstr "nieznany format skrzynki"
+
+#: ../src/mn-vfs-mailbox.gob:426
+msgid "does not exist"
+msgstr "nie istnieje"
+
+#: ../src/mn-vfs.c:241
+#, c-format
+msgid "Unable to write %s: %s."
+msgstr "Nie można zapisać %s: %s"
+
+#: ../src/mn-webmail-mailbox.gob:84
+#, c-format
+msgid "unable to create a temporary file: %s"
+msgstr "nie można utworzyć pliku tymczasowego: %s."
+
+#: ../src/mn-webmail-mailbox.gob:91
+#, c-format
+msgid "unable to change the permissions of the temporary file: %s"
+msgstr "nie można zmienić uprawnień pliku tymczasowego: %s"
 
-#: ui/authentication.glade.h:2
-msgid "_Authenticate"
-msgstr "_Potwierdź tożsamości"
+#: ../src/mn-webmail-mailbox.gob:135
+#, c-format
+msgid "unable to set encoding of %s: %s"
+msgstr "nie mogę ustawić kodowania %s: %s"
 
-#: ui/mailbox-properties.glade.h:1
-msgid "_Mailbox type:"
-msgstr "_Typ połączenia:"
+#: ../src/mn-webmail-mailbox.gob:192
+msgid "configuration:"
+msgstr "konfiguracja:"
 
-#: ui/properties.glade.h:1
-msgid "    "
-msgstr "    "
+#: ../src/mn-webmail-mailbox.gob:220
+#, c-format
+msgid "running %s"
+msgstr "uruchamian %s"
 
-#: ui/properties.glade.h:2
-msgid "<span weight=\"bold\">Commands</span>"
-msgstr "<span weight=\"bold\">Polecenia</span>"
+#: ../src/mn-webmail-mailbox.gob:224
+#, c-format
+msgid "cannot execute \"%s\": %s"
+msgstr "nie można uruchomić \"%s\": %s"
 
-#: ui/properties.glade.h:3
-msgid "<span weight=\"bold\">Double-click Action</span>"
-msgstr "<span weight=\"bold\">Podwójne kliknięcie</span>"
+#: ../src/mn-webmail-mailbox.gob:229
+msgid "standard output:"
+msgstr "standardowe wyjście:"
 
-#: ui/properties.glade.h:4
-msgid "<span weight=\"bold\">Fonts</span>"
-msgstr "<span weight=\"bold\">Czcionki</span>"
+#: ../src/mn-webmail-mailbox.gob:230
+msgid "standard error output:"
+msgstr "standardowe wyjście błędów:"
 
-#: ui/properties.glade.h:5
+#. translators: %s is a program name, as in "unknown fetchyahoo failure"
+#: ../src/mn-webmail-mailbox.gob:248
+#, c-format
+msgid "unknown %s failure"
+msgstr "nieznany błąd %s"
+
+#: ../src/mn-xml.c:51
+#, c-format
+msgid ""
+"property \"%s\": unable to transform string \"%s\" into a value of type \"%s"
+"\""
+msgstr ""
+"właściwość \"%s\": nie można przekonwertować tekstu \"%s\" w wartość typu \"%"
+"s\""
+
+#: ../src/mn-yahoo-mailbox.gob:71
+#, c-format
+msgid "unable to change the permissions of %s: %s"
+msgstr "nie można zmienić uprawnień %s: %s"
+
+#: ../src/mn-yahoo-mailbox.gob:82
+#, c-format
+msgid "unable to create %s: %s"
+msgstr "nie można utworzyć %s: %s"
+
+#: ../src/mn-yahoo-mailbox.gob:229
+msgid "delay between mail checks too small"
+msgstr "opóźnienie sprawdzania poczty za małe"
+
+#: ../ui/mailbox-properties-dialog.glade.h:1
+msgid "<span weight=\"bold\">Delay Between Mail Checks</span>"
+msgstr "<span weight=\"bold\">Opóźnienie sprawdzania skrzynki</span>"
+
+#. translators: header capitalization
+#: ../ui/mailbox-properties-dialog.glade.h:2 ../ui/properties-dialog.glade.h:6
 msgid "<span weight=\"bold\">General</span>"
 msgstr "<span weight=\"bold\">Ogólne</span>"
 
-#: ui/properties.glade.h:6
+#: ../ui/mailbox-properties-dialog.glade.h:3
+msgid "<span weight=\"bold\">Mailbox Name</span>"
+msgstr "<span weight=\"bold\">Nazwa skrzynki pocztowej</span>"
+
+#: ../ui/mailbox-properties-dialog.glade.h:5
+msgid "Details"
+msgstr "Szczegóły"
+
+#. translators: header capitalization
+#: ../ui/mailbox-properties-dialog.glade.h:6
+#: ../ui/properties-dialog.glade.h:15
+msgid "General"
+msgstr "Ogólne"
+
+#: ../ui/mailbox-properties-dialog.glade.h:7
+msgid "Mailbox _type:"
+msgstr "_Typ skrzynki pocztowej:"
+
+#: ../ui/mailbox-properties-dialog.glade.h:8
+msgid "O_ther:"
+msgstr "_Inne:"
+
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:2
+msgid "<span weight=\"bold\">Click Action</span>"
+msgstr "<span weight=\"bold\">Akcja po kliknięciu</span>"
+
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:4
+msgid "<span weight=\"bold\">Expiration</span>"
+msgstr "<span weight=\"bold\">Przedawnienie</span>"
+
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:8
 msgid "<span weight=\"bold\">Mailbox List</span>"
 msgstr "<span weight=\"bold\">Skrzynki pocztowe</span>"
- 
-#: ui/properties.glade.h:7
+
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:10
 msgid "<span weight=\"bold\">Position</span>"
 msgstr "<span weight=\"bold\">Pozycja</span>"
 
-#: ui/properties.glade.h:8
-msgid "Dis_play mail summary in tooltip"
-msgstr "_Wyświetlanie streszczenia poczty na obszarze powiadamiania"
+#: ../ui/properties-dialog.glade.h:11
+msgid "A_fter:"
+msgstr "P_o określonym czasie:"
 
-#: ui/properties.glade.h:9
-msgid "General"
-msgstr "Ogólne"
+#: ../ui/properties-dialog.glade.h:12
+msgid "Co_nsider new mail as read"
+msgstr "Uznaj nową pocztę za przeczytaną"
 
-#: ui/properties.glade.h:10
-msgid "Hori_zontal offset:"
-msgstr "Poziome przesunięcie:"
+#: ../ui/properties-dialog.glade.h:13
+msgid "De_sktop default"
+msgstr "_Domyślne ustawienie systemowe"
 
-#: ui/properties.glade.h:11
-msgid "Mail Notification Properties"
-msgstr "Właściwości Zawiadomienia Pocztowego"
+#: ../ui/properties-dialog.glade.h:16
+msgid "In the p_opup stack"
+msgstr "Okna ułożone na stosie"
 
-#: ui/properties.glade.h:12
-msgid "Mail Summary Popup"
-msgstr "Streszczenie poczty"
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:20
+msgid "Message Popups"
+msgstr "Okienka wiadomości"
 
-#: ui/properties.glade.h:13
-msgid "Mailboxes"
-msgstr "Skrzynki pocztowe"
+#: ../ui/properties-dialog.glade.h:21
+msgid "Play a _sound when new mail arrives:"
+msgstr "Odtwórz dźwięk po nadejściu nowej poczty:"
 
-#: ui/properties.glade.h:14
-msgid "Only display _recent mail"
-msgstr "Wyświetlanie tylko nieprzeczytanych listów"
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:23
+msgid "Status Icon"
+msgstr "Ikona w tacce systemowej"
 
-#: ui/properties.glade.h:15
-msgid "P_osition:"
-msgstr "P_ozycja:"
+#: ../ui/properties-dialog.glade.h:24
+msgid "_Attached to the status icon"
+msgstr "_Podłączone do ikony w tacce systemowej"
 
-#: ui/properties.glade.h:16
-msgid "The amount of time to wait before closing the mail summary popup"
-msgstr ""
-"Ilość czasu do czekania przed zamknięciem wyskakującego okienka streszczenia "
-"poczty"
+#: ../ui/properties-dialog.glade.h:25
+msgid "_Display test messages"
+msgstr "Pokaż wiadomość _testową"
 
-#: ui/properties.glade.h:17
-msgid "The amount of time to wait between mail checks"
-msgstr "Ilość czasu pomiędzy sprawdzaniem poczty"
+#: ../ui/properties-dialog.glade.h:26
+msgid "_Enable message popups"
+msgstr "Włącz wyskakujące okna wiadomości"
 
-#: ui/properties.glade.h:18
-msgid "The command to run to launch the mail reader"
-msgstr "Rozkaz do wydania który uruchamia czytnika poczty."
+#: ../ui/properties-dialog.glade.h:27
+msgid "_Launch the mail reader"
+msgstr "U_ruchom program pocztowy"
 
-#: ui/properties.glade.h:19
-msgid "The command to run when all mail is read"
-msgstr "Rozkaz do wykonania po przeczytaniu całej poczty"
+#: ../ui/properties-dialog.glade.h:28
+msgid "_Open the latest message"
+msgstr "_Otwórz ostatnią wiadomość"
 
-#: ui/properties.glade.h:20
-msgid "The command to run when new mail arrives"
-msgstr "Rozkaz do wykonania po nadejściu nowej poczty"
+#: ../ui/properties-dialog.glade.h:29
+msgid "_Update the mail status"
+msgstr "O_dśwież stan poczty"
 
-#: ui/properties.glade.h:21
-msgid ""
-"The number of pixels to leave between the left or right side of the screen "
-"and the mail summary popup"
-msgstr ""
-"Ilość pikselów do pozostawienia pomiędzy lewą lub prawą stroną ekranu i "
-"wyskakującym okienkiem streszczenia poczty."
+#: ../ui/properties-dialog.glade.h:30
+msgid "message popups tab|_Never"
+msgstr "_Nigdy"
 
-#: ui/properties.glade.h:22
-msgid ""
-"The number of pixels to leave between the top or bottom side of the screen "
-"and the mail summary popup"
-msgstr ""
-"Ilość pikselów do pozostawienia pomiędzy górną lub dolną stroną ekranu i "
-"wyskakującym okienkiem streszczenia poczty."
+#~ msgid "Mail Notification automation"
+#~ msgstr "Automatyzacja Zawiadomienia Pocztowego"
 
-#: ui/properties.glade.h:23
-msgid "When _all mail is read:"
-msgstr "Po przeczytaniu całej poczty:"
+#~ msgid "Mail Notification automation factory"
+#~ msgstr "Fabryka automatyzacji Zawiadomienia Pocztowego"
 
-#: ui/properties.glade.h:24
-msgid "When _new mail arrives:"
-msgstr "Po nadejściu nowej poczty:"
+#~ msgid "Automatically close the mail summary popup"
+#~ msgstr "Automatycznie zamknij wyskakujące okienko streszczenia poczty"
 
-#: ui/properties.glade.h:25
-msgid "Whether the status icon should blink on errors or not"
-msgstr "Migaj przy wystąpieniu błędów"
+#~ msgid "Delay between mail checks (minutes part)."
+#~ msgstr "Zwłoka pomiędzy sprawdzaniem poczty (minuty)."
 
-#: ui/properties.glade.h:26
-msgid "Whether to automatically close the mail summary popup or not"
-msgstr ""
-"Zamknij automatycznie streszczenie poczty po upływie zadanego czasu"
+#~ msgid "Delay between mail checks (seconds part)."
+#~ msgstr "Zwłoka pomiędzy sprawdzaniem poczty (sekundy)."
 
-#: ui/properties.glade.h:27
-msgid "Whether to display the mail summary in the status icon tooltip or not"
-msgstr "Wyświetl streszczenie poczty w obszarze powiadamiania"
+#~ msgid "Display mail summary in tooltip"
+#~ msgstr "Wyświetlanie streszczenia poczty w obszarze powiadamiania"
 
-#: ui/properties.glade.h:28
-msgid "Whether to display the mail summary popup when new mail arrives or not"
-msgstr ""
-"Wyświetl streszczenie poczty po nadejściu nowych wiadomości"
+#~ msgid "Do not show the immediate notification error dialog"
+#~ msgstr "Nie pokazuj dialogu błędowego natychmiastowego zawiadomienia"
 
-#: ui/properties.glade.h:29
-msgid "Whether to hide previously displayed mail or not"
-msgstr "Ukrywaj przeczytane listy"
+#~ msgid "Enable mail summary popup"
+#~ msgstr "Umożliwij wyskakujące okienko streszczenia poczty"
 
-#: ui/properties.glade.h:30
-msgid "Whether to run a command when all mail is read or not"
-msgstr "Uruchom polecenie, gdy cała poczta zostanie przeczytana"
+#~ msgid "Has already been run"
+#~ msgstr "Polecenie już było wykonane"
 
-#: ui/properties.glade.h:31
-msgid "Whether to run a command when new mail arrives or not"
-msgstr "Uruchom polecenie, gdy nadejdzie nowa poczta"
+#~ msgid "Height of mail summary dialog"
+#~ msgstr "Wysokość dialogu streszenia poczty"
 
-#: ui/properties.glade.h:32
-msgid "Whether to set a mail reader or not"
-msgstr "Ustaw czytnik poczty"
+#~ msgid "Mail summary popup contents font"
+#~ msgstr "Czcionka zawartości wyskakującego okienka streszczenia poczty"
 
-#: ui/properties.glade.h:33
-msgid ""
-"Whether to start Mail Notification when you log into your GNOME session or "
-"not"
-msgstr "Uruchom zawiadomienie pocztowe w trakcie startu środowiska graficznego"
+#~ msgid "Mail summary popup horizontal offset"
+#~ msgstr "Poziomę przesunięcie wyskakującego okienka streszczenia poczty"
 
-#: ui/properties.glade.h:34
-msgid ""
-"Whether to use a custom font for the contents of the mail summary popup or "
-"not"
-msgstr ""
-"Ustaw czcionkę dla tytułu streszczenia poczty"
+#~ msgid "Mail summary popup title font"
+#~ msgstr "Czcionka tytułu wyskakującego okienka streszczenia poczty"
 
-#: ui/properties.glade.h:35
-msgid ""
-"Whether to use a custom font for the title of the mail summary popup or not"
-msgstr ""
-"Czy użyć niestandardową czcionkę do tytułu wyskakującego okienka "
-"streszczenia poczty czy nie"
+#~ msgid "Mail summary popup vertical offset"
+#~ msgstr "Pionowę przesunięcie wyskakującego okienka streszczenia poczty"
 
-#: ui/properties.glade.h:36
-msgid "_Automatically close after:"
-msgstr "_Automatyczne zamknięcie okienka po:"
+#~ msgid "Mailbox list"
+#~ msgstr "Lista skrzynek pocztowych"
 
-#: ui/properties.glade.h:37
-msgid "_Blink on errors"
-msgstr "_Miganie przy błędach"
+#~ msgid "Minutes between mail checks"
+#~ msgstr "Ilość minut pomiędzy sprawdzaniem poczty"
 
-#: ui/properties.glade.h:38
-msgid "_Contents font:"
-msgstr "_Wybór czcionki treści:"
+#~ msgid "Minutes to wait before closing the mail summary popup"
+#~ msgstr ""
+#~ "Ile minut czekać przed zamknięciem wyskakującego okienka streszczenia "
+#~ "poczty"
 
-#: ui/properties.glade.h:39
-msgid "_Delay between mail checks:"
-msgstr "_Sprawdzanie poczty co:"
+#~ msgid "Only display recent mail in mail summary popup"
+#~ msgstr ""
+#~ "Tylko wyświetlaj niedawną pocztę w wyskakującym okienku streszczenia "
+#~ "poczty"
 
-#: ui/properties.glade.h:40
-msgid "_Display the mail summary dialog"
-msgstr "_Wyświetl streszczenie poczty"
+#~ msgid "Seconds between mail checks"
+#~ msgstr "Sekundy pomiędzy sprawdzaniem poczty"
+
+#~ msgid "Set a mail reader"
+#~ msgstr "Ustaw czytnika poczty"
+
+#~ msgid ""
+#~ "The amount of time to wait before closing the mail summary popup (minutes "
+#~ "part)."
+#~ msgstr ""
+#~ "Ilość czasu do czekania przed zamknięciem wyskakującego okienka "
+#~ "streszczenia poczty (minuty)."
+
+#~ msgid ""
+#~ "The amount of time to wait before closing the mail summary popup (seconds "
+#~ "part)."
+#~ msgstr ""
+#~ "Ilość czasu do czekania przed zamknięciem wyskakującego okienka "
+#~ "streszczenia poczty (sekundy)."
+
+#~ msgid "The command to run to launch the mail reader."
+#~ msgstr "Rozkaz do wykonania żeby uruchomić czytnika poczty."
+
+#~ msgid "The custom font to use for the contents of the mail summary popup."
+#~ msgstr ""
+#~ "Niestandardowa czcionka użyta dla zawartości wyskakującego okienka "
+#~ "streszczenia poczty."
+
+#~ msgid "The custom font to use for the title of the mail summary popup."
+#~ msgstr ""
+#~ "Niestandardowa czcionka użyta dla tytułu wyskakującego okienka "
+#~ "streszczenia poczty."
+
+#~ msgid "The height of the mail summary dialog in pixels."
+#~ msgstr "Wysokość dialogu streszczenia poczty w pikselach."
+
+#~ msgid "The list of mailboxes to monitor."
+#~ msgstr "Lista monitorowanych skrzynek pocztowych."
+
+#~ msgid ""
+#~ "The number of pixels to leave between the left or right side of the "
+#~ "screen and the mail summary popup."
+#~ msgstr ""
+#~ "Ilość pikselów do pozostawienia pomiędzy lewą lub prawą stroną ekranu i "
+#~ "wyskakującym okienkiem streszczenia poczty."
+
+#~ msgid ""
+#~ "The number of pixels to leave between the top or bottom side of the "
+#~ "screen and the mail summary popup."
+#~ msgstr ""
+#~ "Ilość pikselów do pozostawienia pomiędzy górną lub dolną stroną ekranu i "
+#~ "wyskakującym okienkiem streszczenia poczty."
+
+#~ msgid "The width of the mail summary dialog in pixels."
+#~ msgstr "Szerokość dialogu streszczenia poczty w pikselach."
+
+#~ msgid "Use a custom font for the contents of the mail summary popup"
+#~ msgstr ""
+#~ "Użyj niestandardową czcionkę dla zawartości wyskakującego okienka "
+#~ "streszczenia poczty"
+
+#~ msgid "Use a custom font for the title of the mail summary popup"
+#~ msgstr ""
+#~ "Użyj niestandardową czcionkę dla tytułu wyskakującego okienka "
+#~ "streszczenia poczty"
+
+#~ msgid "Whether Mail Notification has already been run or not."
+#~ msgstr "Czy Zawiadomienie pocztowe było już uruchomione czy nie."
+
+#~ msgid "Whether to automatically close the mail summary popup or not."
+#~ msgstr ""
+#~ "Automatycznie zamyka okienko ze streszczeniem poczty po upływie zadanego "
+#~ "czasu"
+
+#~ msgid ""
+#~ "Whether to display the mail summary popup when new mail arrives or not."
+#~ msgstr "Wyświetl streszczenie poczty po nadejściu nowych listów"
+
+#~ msgid ""
+#~ "Whether to hide previously displayed mail in the mail summary popup or "
+#~ "not."
+#~ msgstr ""
+#~ "Czy schować poprzednio wyświetloną pocztę w wyskakującym okienku "
+#~ "streszczenia poczty czy nie."
+
+#~ msgid ""
+#~ "Whether to prevent the immediate notification error dialog from being "
+#~ "displayed or not."
+#~ msgstr ""
+#~ "Czy zapobiegać wyświetleniu dialogu błędowego natychmiastowego "
+#~ "zawiadomieniaczy nie."
+
+#~ msgid ""
+#~ "Whether to use a custom font for the contents of the mail summary popup "
+#~ "or not."
+#~ msgstr ""
+#~ "Czy użyć niestandardową czcionkę dla zawartości wyskakującego okienka "
+#~ "streszczenia poczty czy nie."
+
+#~ msgid ""
+#~ "Whether to use a custom font for the title of the mail summary popup or "
+#~ "not."
+#~ msgstr ""
+#~ "Czy użyć niestandardową czcionkę dla tytułu wyskakującego okienka "
+#~ "streszczenia poczty czy nie."
+
+#~ msgid "New Mail"
+#~ msgstr "Nowa Poczta"
+
+#~ msgid "Jean-Yves Lefort <jylefort@brutele.be>"
+#~ msgstr "Tomasz Sarota-Raczek <tomasz.sarota.raczek@gmail.com>"
+
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"larger\">Mail Notification requires a "
+#~ "password</span>\n"
+#~ "\n"
+#~ "%s"
+#~ msgstr ""
+#~ "<span weight=\"bold\" size=\"larger\">Zawiadomienie pocztowe wymaga "
+#~ "hasła</span>\n"
+#~ "\n"
+#~ "%s"
+
+#~ msgid "The URI of the mailbox"
+#~ msgstr "URI skrzynki pocztowej"
+
+#~ msgid "Whether the image is blinking or not"
+#~ msgstr "Czy obraz miga czy nie"
+
+#~ msgid "Co_nnect"
+#~ msgstr "Po_łącz się."
+
+#~ msgid ""
+#~ "the server sent a SASL challenge, but there was a pending initial SASL "
+#~ "client response"
+#~ msgstr ""
+#~ "serwer wysłał wyzwanie SASL, ale już była początkowa odpowiedź SASL od "
+#~ "klienta."
+
+#~ msgid ""
+#~ "the server did not send a SASL challenge, but there was no pending "
+#~ "initial SASL client response"
+#~ msgstr ""
+#~ "serwer nie wysłał wyzwania SASL, ale nie było początkowej odpowiedź SASL "
+#~ "od klienta."
 
-#: ui/properties.glade.h:41
-msgid "_Enable mail summary popup"
-msgstr "_Streszczenie poczty"
+#~ msgid "Your Gmail username"
+#~ msgstr "Twoję Gmail imię użytkownika"
 
-#: ui/properties.glade.h:42
-msgid "_Launch the mail reader"
-msgstr "U_ruchom program pocztowy"
+#~ msgid ""
+#~ "Your Gmail password (if left blank, you will be prompted for the password "
+#~ "when needed)"
+#~ msgstr ""
+#~ "Twoję Gmail hasło (jeśli pozostawione pustę, to będziesz zapytany o hasło "
+#~ "wtedy kiedy będzie potrzebnę)"
 
-#: ui/properties.glade.h:43
-msgid "_Mail reader:"
-msgstr "C_zytnik poczty:"
+#~ msgid "libsoup has not been compiled with SSL/TLS support"
+#~ msgstr "libsoup nie było kompilowanę z poparciem SSL/TLS"
 
-#: ui/properties.glade.h:44
-msgid "_Start Mail Notification on GNOME login"
-msgstr "_Uruchomienie zawiadomienia pocztowego podczas logowania"
+#~ msgid "unable to parse URI \"%s\""
+#~ msgstr "niezdolny wykonać rozbiór URI \"%s\""
 
-#: ui/properties.glade.h:45
-msgid "_Title font:"
-msgstr "_Wybór czcionki tytułu:"
+#~ msgid "unable to transfer data: %s"
+#~ msgstr "niezdolny do przesłania danych: %s"
 
-#: ui/properties.glade.h:46
-msgid "_Vertical offset:"
-msgstr "_Pionowę przesunięcie"
+#~ msgid "logging in"
+#~ msgstr "logowanie"
 
-#: ui/properties.glade.h:47
-msgid "minutes"
-msgstr "minut"
+#~ msgid "login failed"
+#~ msgstr "nieudanę logowanie"
 
-#: ui/properties.glade.h:48
-msgid "pixels"
-msgstr "piksele"
+#~ msgid "searching for unread mail"
+#~ msgstr "szukam nieprzeczytanej poczty"
 
-#: ui/properties.glade.h:49
-msgid "seconds"
-msgstr "sekund"
+#~ msgid "unable to parse Gmail data"
+#~ msgstr "niezdolny wykonać rozbioru danych Gmail"
 
-#: ui/summary-popup.glade.h:1
-msgid "<span size=\"larger\" weight=\"bold\">Mail Summary</span>"
-msgstr "<span size=\"larger\" weight=\"bold\">Zawiadomienie pocztowe</span>"
+#~ msgid "in_box"
+#~ msgstr "_skrzynka odbiorcza"
 
-#: ui/welcome.glade.h:1
-msgid ""
-"<span weight=\"bold\" size=\"larger\">First startup</span>\n"
-"\n"
-"Mail Notification has been loaded successfully.\n"
-"\n"
-"Since this is the first time you run Mail Notification, you might want to "
-"configure it.\n"
-"\n"
-"Note: this message will not be shown anymore. To configure Mail Notification "
-"again, choose <span weight=\"bold\">Applications</span> → <span weight=\"bold"
-"\">Desktop Preferences</span> → <span weight=\"bold\">Mail Notification</"
-"span> (or on some systems <span weight=\"bold\">Applications → Preferences → "
-"More Preferences → Mail Notification</span>)."
-msgstr ""
-"<span weight=\"bold\" size=\"larger\">Premier démarrage</span>\n"
-"\n"
-"Zawiadomienie pocztowe było pomyślnie załadowane.\n"
-"\n"
-"Ponieważ uruchamiasz Zawiadomienia Pocztowego poraz pierwszy raz, może byś "
-"chciał je skonfigurować.\n"
-"\n"
-"Uwaga: ta wiadomość nie będzie więcej pokazywana. Jeśli byś ponownie chciał "
-"skonfigurować Zawiadomienie pocztowe, wybierz <span weight=\"bold"
-"\">Aplikacje</span> → <span weight=\"bold\">Preferencje Desktopowe</span> → "
-"<span weight=\"bold\">Zawiadomienie pocztowe</span> (lub na pewnych "
-"systemach <span weight=\"bold\">Aplikacje</span> → <span weight=\"bold"
-"\">Preferencje</span> → <span weight=\"bold\">Więcej Preferencji</span> → "
-"<span weight=\"bold\">Zawiadomienie pocztowe</span>)."
-
-#: ui/welcome.glade.h:8
-msgid "_Configure Mail Notification"
-msgstr "_Konfiguracja Zawiadomienia pocztowego"
-
-#: ui/welcome.glade.h:9
-msgid "_Skip configuration"
-msgstr "_Pomiń konfigurację"
+#~ msgid "oth_er:"
+#~ msgstr "innę:"
 
-# These messages are not translated in any PO file
+#~ msgid "U_se idle mode if possible"
+#~ msgstr "Użyj bezczynny tryb jeśli to jest możliwę"
 
-msgid "_Display seen mail"
-msgstr "_Pokazuj widzianą pocztę"
+#~ msgid "The hostname or IP address of the IMAP server"
+#~ msgstr "Nazwa lub adres IP serweru IMAP"
 
-msgid "_Always display"
-msgstr "Z_awsze pokazuj ikonę w tacce systemowej"
+#~ msgid "Your username on the IMAP server"
+#~ msgstr "Twoje imię użytkownika na serwerze IMAP"
 
-msgid "_Test messages"
-msgstr "Wiadomość _testowa"
+#~ msgid ""
+#~ "Your password on the IMAP server (if left blank, you will be prompted for "
+#~ "the password when needed)"
+#~ msgstr ""
+#~ "Twoję hasło na serwerze IMAP (jeśli pozostawione pustę, to będziesz "
+#~ "zapytany o hasło wtedy kiedy będzie potrzebnę)"
+
+#~ msgid "The port number of the IMAP server"
+#~ msgstr "Numer portu na serwerze IMAP"
+
+#~ msgid "The mailbox name"
+#~ msgstr "Imię skrzynki pocztowej"
+
+#~ msgid "If possible, whether to use idle mode or not"
+#~ msgstr "Jeśli możliwę, czy użyć bezczynny tryb czy nie"
+
+#~ msgid "server did not send search results"
+#~ msgstr "serwer nie wysłał wyników poszukiwania"
+
+#~ msgid "server did not send all the messages we requested"
+#~ msgstr "serwer nie wysłał wszystkich wiadomości o które prosiliśmy"
+
+#~ msgid "server did not send status"
+#~ msgstr "serwer nie wysłał stanu"
+
+#~ msgid "_Launch Mail Reader"
+#~ msgstr "_Uruchom program pocztowy"
+
+#~ msgid "Connection type:"
+#~ msgstr "Konfiguracja serwera:"
+
+#~ msgid "_Authentication mechanism:"
+#~ msgstr "Uwierzytelnianie:"
+
+#~ msgid "The marked up text to show in the type combo box"
+#~ msgstr "Tekst oznaczony do pokazania się w okienku typu combo"
+
+#~ msgid "Size group"
+#~ msgstr "Grupa rozmiaru"
+
+#~ msgid "A GtkSizeGroup for aligning control labels"
+#~ msgstr "GtkSizeGroup dla wyrównania etykiet kontroli"
+
+#~ msgid "Complete"
+#~ msgstr "Skończonę"
+
+#~ msgid "Whether the properties are completely filled or not"
+#~ msgstr "Czy właściwości są całkowicię wypełnione czy nie"
+
+#~ msgid "Format"
+#~ msgstr "Format"
 
-msgid "Status Icon"
-msgstr "Ikona w tacce systemowej"
+#~ msgid "The mailbox is already in the list."
+#~ msgstr "Skrzynka pocztowa już jest w spisie."
 
-msgid "When all mail has _been read:"
-msgstr "Kiedy wszystkie wiadomości zostały przeczytane:"
+#~ msgid "The mailbox URI"
+#~ msgstr "URI skrzynki pocztowej"
+
+#~ msgid "The mailbox human-readable name"
+#~ msgstr "Ludzko-czytelne imię skrzynki pocztowej"
+
+#~ msgid "Whether the mailbox has to be polled or not"
+#~ msgstr "Czy skrzynka pocztowa była sprawdzona czy nie"
 
-msgid "<span weight=\"bold\">Tooltip Mail Summary</span>"
-msgstr "<span weight=\"bold\">Podsumowanie wiadomości</span>"
+#~ msgid "Whether the mailbox has new mail or not"
+#~ msgstr "Czy skrzynka pocztowa ma nową pocztę czy nie"
+
+#~ msgid "The list of new and unread MNMessage objects"
+#~ msgstr "Spis przeczytanych i nie przeczytanych obiektów MNMessage"
+
+#~ msgid "The mailbox error, if any"
+#~ msgstr "Błąd skrzynki pocztowej, jeżeli wszelki"
+
+#~ msgid "unable to enable immediate notification for %s: %s"
+#~ msgstr "niezdolny umożliwić natychmiastowę zawiadomienie dla %s: %s"
+
+#~ msgid ""
+#~ "As a fallback, they will be checked every %i second (this delay is "
+#~ "configurable from the Properties Dialog)."
+#~ msgid_plural ""
+#~ "As a fallback, they will be checked every %i seconds (this delay is "
+#~ "configurable from the Properties Dialog)."
+#~ msgstr[0] ""
+#~ "Pod reżimem awaryjnym, one będą sprawdzanę co każdą %i sekundę (ta zwłoka "
+#~ "może być skonfigurowana w Dialogu Właściowści)."
+#~ msgstr[1] ""
+#~ "Pod reżimem awaryjnym, one będą sprawdzanę co każdę %i sekund (ta zwłoka "
+#~ "może być skonfigurowana w Dialogu Właściowści)."
+#~ msgstr[2] ""
+#~ "Pod reżimem awaryjnym, one będą sprawdzanę co każdę %i sekundy (ta zwłoka "
+#~ "może być skonfigurowana w Dialogu Właściowści)."
+
+#~ msgid ""
+#~ "As a fallback, they will be checked every %i minute (this delay is "
+#~ "configurable from the Properties Dialog)."
+#~ msgid_plural ""
+#~ "As a fallback, they will be checked every %i minutes (this delay is "
+#~ "configurable from the Properties Dialog)."
+#~ msgstr[0] ""
+#~ "Pod reżimem awaryjnym, one będą sprawdzanę co każdą %i minutę (ta zwłoka "
+#~ "może być skonfigurowana w Dialogu Właściowści)."
+#~ msgstr[1] ""
+#~ "Pod reżimem awaryjnym, one będą sprawdzanę co każdę %i minut (ta zwłoka "
+#~ "może być skonfigurowana w Dialogu Właściowści)."
+#~ msgstr[2] ""
+#~ "Pod reżimem awaryjnym, one będą sprawdzanę co każdę %i minuty (ta zwłoka "
+#~ "może być skonfigurowana w Dialogu Właściowści)."
+
+#~ msgid ""
+#~ "As a fallback, they will be checked approximately every %i minute (this "
+#~ "delay is configurable from the Properties Dialog)."
+#~ msgid_plural ""
+#~ "As a fallback, they will be checked approximately every %i minutes (this "
+#~ "delay is configurable from the Properties Dialog)."
+#~ msgstr[0] ""
+#~ "Pod reżimem awaryjnym, one będą sprawdzanę co mniej więcej każdą %i "
+#~ "minutę (ta zwłoka może być skonfigurowana w Dialogu Właściowści)."
+#~ msgstr[1] ""
+#~ "Pod reżimem awaryjnym, one będą sprawdzanę co mniej więcej każdę %i minut "
+#~ "(ta zwłoka może być skonfigurowana w Dialogu Właściowści)."
+#~ msgstr[2] ""
+#~ "Pod reżimem awaryjnym, one będą sprawdzanę co mniej więcej każdę %i "
+#~ "minuty (ta zwłoka może być skonfigurowana w Dialogu Właściowści)."
+
+#~ msgid ""
+#~ "Mail Notification was unable to enable immediate notification for one or "
+#~ "more mailboxes. %s"
+#~ msgstr ""
+#~ "Zawiadomienie pocztowe było niezdolnę umożliwić natychmiastowę "
+#~ "zawiadomienie jednej albo większej ilość skrzynek pocztowych. %s"
+
+#~ msgid "Whether one or more of the mailboxes has to be polled"
+#~ msgstr "Czy jedna lub więcej szkrzynek pocztowych była sprawdzona czy nie"
+
+#~ msgid "%s is unsupported: %s"
+#~ msgstr "%s jest nieobsługiwane: %s"
+
+#~ msgid "%s has no new mail"
+#~ msgstr "%s nie ma nowej poczty"
+
+#~ msgid "Compiled-in mailbox backends: %s\n"
+#~ msgstr "Wkompilowanę wewnętrzne cechy skrzynki pocztowej: %s\n"
+
+#~ msgid "Compiled-in features: %s\n"
+#~ msgstr "Wkompilowanę cechy: %s\n"
+
+#~ msgid "List compiled-in features and exit"
+#~ msgstr "Wydrukuj spis wkompilowanych cech i zakończ"
+
+#~ msgid "Display the mail summary dialog"
+#~ msgstr "Wyświetlij dialog streszczenia poczty"
+
+#~ msgid "Report the mail status"
+#~ msgstr "Zgłoś stan poczty"
+
+#~ msgid ""
+#~ "Bonobo could not locate the GNOME_MailNotification_Automation.server "
+#~ "file. Please check your Mail Notification installation."
+#~ msgstr ""
+#~ "Bonobo nie mogło znaleźć pliku GNOME_MailNotification_Automation.server."
+#~ "Proszę sprawdzić swoją instalację Zawiadomienia Pocztowego."
+
+#~ msgid ""
+#~ "Bonobo was unable to register the automation server. Please check your "
+#~ "Mail Notification installation."
+#~ msgstr ""
+#~ "Bonobo nie potrafiło zarejestrować serwera automatyzacyjnego. Proszę "
+#~ "sprawdzić instalację Zawiadomienia Pocztowego"
+
+#~ msgid "error while reading mailbox: %s"
+#~ msgstr "błąd podczas odczytywania skrzynki pocztowej: %s"
+
+#~ msgid "%i week ago"
+#~ msgid_plural "%i weeks ago"
+#~ msgstr[0] "%i tydzień temu"
+#~ msgstr[1] "%i tygodni temu"
+#~ msgstr[2] "%i tygodnie temu"
+
+#~ msgid "Unknown"
+#~ msgstr "Nieznany"
+
+#~ msgid "error while reading .mh_sequences: %s"
+#~ msgstr "błąd podczas czytania .mh_sequences: %s"
+
+#~ msgid "unable to open .mh_sequences: %s"
+#~ msgstr "niezdolny do otwarcia .mh_sequences: %s"
 
-msgid "icon tooltip's mail summary layout|_Standard"
-msgstr "_Standardowe"
+#~ msgid "detecting"
+#~ msgstr "odkrywanie"
 
-msgid "icon tooltip's mail summary layout|Co_mpact"
-msgstr "Ko_mpaktowe"
+#~ msgid "_Hostname:"
+#~ msgstr "Nazwa serwera:"
 
-msgid "_None"
-msgstr "Br_ak"
+#~ msgid "_in-band SSL/TLS"
+#~ msgstr "wewnątrzpasmowy TLS"
 
-msgid "Message Popups"
-msgstr "Okienka wiadomości"
+#~ msgid "SSL/TLS on sepa_rate port"
+#~ msgstr "SSL/TLS na oddzielnym porcie"
 
-msgid "<span weight=\"bold\">Click Action</span>"
-msgstr "<span weight=\"bold\">Akcja po kliknięciu</span>"
+#~ msgid "The hostname or IP address of the POP3 server"
+#~ msgstr "Imię lub adres IP serwera POP3"
 
-msgid "_Display this dialog"
-msgstr "Pokaż to okno _dialogowe"
+#~ msgid "Your username on the POP3 server"
+#~ msgstr "Twoję imię użytkownika na serwerze POP3"
 
-msgid "_Open the latest message"
-msgstr "_Otwórz ostatnią wiadomość"
+#~ msgid ""
+#~ "Your password on the POP3 server (if left blank, you will be prompted for "
+#~ "the password when needed)"
+#~ msgstr ""
+#~ "Twoje hasło na serwerze POP3 (jeśli pozostawionę pustę, to będziesz "
+#~ "zapytany o hasło wtedy kiedy będzie potrzebnę)"
 
-msgid "_Update the mail status"
-msgstr "O_dśwież stan poczty"
+#~ msgid "The port number of the POP3 server"
+#~ msgstr "Numer portu serweru POP3"
 
-msgid "_Enable message popups"
-msgstr "Włącz wyskakujące okna wiadomości"
+#~ msgid "unknown error"
+#~ msgstr "nieznany błąd"
 
-msgid "_Attached to the status icon"
-msgstr "_Podłączone do ikony w tacce systemowej"
+#~ msgid "top left"
+#~ msgstr "lewy górny róg ekranu"
 
-msgid "In the p_opup stack"
-msgstr "Okna ułożone na stosie"
+#~ msgid "top right"
+#~ msgstr "prawy górny róg ekranu"
 
-msgid "<span weight=\"bold\">Expiration</span>"
-msgstr "<span weight=\"bold\">Przedawnienie</span>"
+#~ msgid "bottom left"
+#~ msgstr "lewy dolny róg ekranu"
 
-msgid "_Desktop default"
-msgstr "_Domyślne ustawienia systemowe"
+#~ msgid "bottom right"
+#~ msgstr "prawy dolny róg ekranu"
 
-msgid "_Never"
-msgstr "_Nigdy"
+#~ msgid "You have new mail."
+#~ msgstr "Masz wiadomość!"
 
-msgid "A_fter:"
-msgstr "P_o określonym czasie:"
+#~ msgid "Unsupported Mailboxes"
+#~ msgstr "Nieskonfigurowane skrzynki pocztowe"
 
-msgid "New Message"
-msgstr "Nowa wiadomość"
+#~ msgid "unable to parse proxy URI \"%s\""
+#~ msgstr "niezdolny zrobić rozbiór pośredniczego URI \"%s\""
 
-msgid "Test mailbox"
-msgstr "Skrzynka testowa"
+#~ msgid "Select _All"
+#~ msgstr "Wybierz _Wszystkie"
 
-msgid "From:"
-msgstr "Nadawca:"
+#~ msgid "_Mail Summary"
+#~ msgstr "_Streszczenie poczty"
 
-msgid "Subject:"
-msgstr "Temat wiadomości:"
+#~ msgid "System Mailbox"
+#~ msgstr "Lokalna skrzynka"
 
-#, c-format
-msgid "Test message #%i"
-msgstr "Wiadomość testowa nr. %i"
+#~ msgid "Your system mailbox (<span weight=\"bold\">%s</span>) will be used."
+#~ msgstr ""
+#~ "Skrzynka pocztowa twojego systemu (<span weight=\"bold\">%s</span>) "
+#~ "zostanie użyta."
 
-msgid "Mail Notification Properties Dialog"
-msgstr "Okno preferencji powiadamiania o nowej poczcie"
+#~ msgid "The reason why the mailbox is unsupported"
+#~ msgstr "Powód z powodu którego skrzynka pocztowa nie jest popierana"
 
-msgid "Mailbox _type:"
-msgstr "_Typ skrzynki pocztowej:"
+#~ msgid "unsupported"
+#~ msgstr "nieobsługiwany"
 
-msgid "Mailbox _name:"
-msgstr "_Nazwa skrzynki pocztowej:"
+#~ msgid "error loading image: %s"
+#~ msgstr "błąd w ładowaniu obrazka: %s"
 
-msgid "_Use Default"
-msgstr "_Użyj domyślnej"
+#~ msgid "widget \"%s\" not found in interface \"%s\""
+#~ msgstr "element \"%s\" nie mógł byc znaleziony w interfejsie \"%s\""
 
-msgid "Autodetect"
-msgstr "Wykryj automatycznie"
+#~ msgid "received an invalid Mozilla URL"
+#~ msgstr "otrzymano nieważny Mozillowy URL"
 
-msgid "System mailbox"
-msgstr "Skrzynka systemowa"
+#~ msgid "_Do not show this message again"
+#~ msgstr "_Nie pokazuj tej wiadomości ponownie"
 
-msgid "Us_e Default"
-msgstr "_Domyślnie"
+#~ msgid "unable to get current time: %s"
+#~ msgstr "niezdolny otrzymać aktualny czas: %s"
 
-msgid "<span weight=\"bold\">Location</span>"
-msgstr "<span weight=\"bold\">Lokalizacja</span>"
+#~ msgid "*"
+#~ msgstr "*"
 
-msgid "Account"
-msgstr "Konto pocztowe"
+#~ msgid "_Authenticate"
+#~ msgstr "_Potwierdź tożsamości"
 
-msgid "_Server:"
-msgstr "_Serwer:"
+#~ msgid "_Mailbox type:"
+#~ msgstr "_Typ połączenia:"
 
-msgid "IMAP Mailbox"
-msgstr "Skrzynka IMAP"
+#~ msgid "    "
+#~ msgstr "    "
 
-msgid "In_box"
-msgstr "Ode_brane"
+#~ msgid "<span weight=\"bold\">Commands</span>"
+#~ msgstr "<span weight=\"bold\">Polecenia</span>"
 
-msgid "_Other:"
-msgstr "_Inna:"
+#~ msgid "<span weight=\"bold\">Double-click Action</span>"
+#~ msgstr "<span weight=\"bold\">Podwójne kliknięcie</span>"
 
-msgid "Connection"
-msgstr "Połączenie"
+#~ msgid "<span weight=\"bold\">Fonts</span>"
+#~ msgstr "<span weight=\"bold\">Czcionki</span>"
 
-msgid "Connection Type"
-msgstr "Typ połączenia"
+#~ msgid "Dis_play mail summary in tooltip"
+#~ msgstr "_Wyświetlanie streszczenia poczty na obszarze powiadamiania"
 
-msgid "In-_band SSL/TLS"
-msgstr "Wewnętrzne SSL/TLS"
+#~ msgid "Hori_zontal offset:"
+#~ msgstr "Poziome przesunięcie:"
 
-msgid "SSL/TLS on s_eparate port"
-msgstr "SSL/TLS na oddzielnym porcie"
+#~ msgid "Mail Summary Popup"
+#~ msgstr "Streszczenie poczty"
 
-msgid "Authentication"
-msgstr "Autoryzacja"
+#~ msgid "Mailboxes"
+#~ msgstr "Skrzynki pocztowe"
 
-msgid "_Mechanism:"
-msgstr "_Mechanizm:"
+#~ msgid "Only display _recent mail"
+#~ msgstr "Wyświetlanie tylko nieprzeczytanych listów"
 
-msgid "Use the IDLE Extension"
-msgstr "Użyj rozszerzenia IDLE"
+#~ msgid "P_osition:"
+#~ msgstr "P_ozycja:"
 
-msgid "A_utodetect"
-msgstr "Wykryj a_utomatycznie"
+#~ msgid "The amount of time to wait before closing the mail summary popup"
+#~ msgstr ""
+#~ "Ilość czasu do czekania przed zamknięciem wyskakującego okienka "
+#~ "streszczenia poczty"
 
-msgid "Al_ways"
-msgstr "_Zawsze"
+#~ msgid "The amount of time to wait between mail checks"
+#~ msgstr "Ilość czasu pomiędzy sprawdzaniem poczty"
 
-msgid "Location"
-msgstr "Lokalizacja"
+#~ msgid "The command to run to launch the mail reader"
+#~ msgstr "Rozkaz do wydania który uruchamia czytnika poczty."
 
-msgid "Your system mailbox is <span weight=\"bold\">%s</span>."
-msgstr "Lokalizacja Twojej systemowej skrzynki pocztowej:<span weight=\"bold\">%s</span>." 
+#~ msgid "The command to run when all mail is read"
+#~ msgstr "Rozkaz do wykonania po przeczytaniu całej poczty"
 
-msgid "Mail Notification can not contact Evolution. Make sure that Evolution is running and that the Evolution Jean-Yves Lefort's Mail Notification plugin is installed and loaded. Fedora ships the plugin in a separate package called mail-notification-evolution-plugin; you might need to install it manually."
+#~ msgid "The command to run when new mail arrives"
+#~ msgstr "Rozkaz do wykonania po nadejściu nowej poczty"
 
-msgstr "Aplikacja powiadamiania o nowej poczcie nie może skontaktować się z Evolution. Upewnij się, że Evolution jest uruchomione i że wtyczka Jean-Yves Lefort's Mail Notification jest zainstalowana i załadowana. Fedora udostępnia tą wtyczkę w oddzielnej paczce: mail-notification-evolution-plugin; może zajść konieczność ręcznego zainstalowania tej paczki."
+#~ msgid ""
+#~ "The number of pixels to leave between the left or right side of the "
+#~ "screen and the mail summary popup"
+#~ msgstr ""
+#~ "Ilość pikselów do pozostawienia pomiędzy lewą lub prawą stroną ekranu i "
+#~ "wyskakującym okienkiem streszczenia poczty."
 
-#, c-format
-msgid "%s mailbox"
-msgstr "Skrzynka %s"
+#~ msgid ""
+#~ "The number of pixels to leave between the top or bottom side of the "
+#~ "screen and the mail summary popup"
+#~ msgstr ""
+#~ "Ilość pikselów do pozostawienia pomiędzy górną lub dolną stroną ekranu i "
+#~ "wyskakującym okienkiem streszczenia poczty."
 
-msgid "You have no new mail."
-msgstr "Brak nowych wiadomości."
+#~ msgid "When _all mail is read:"
+#~ msgstr "Po przeczytaniu całej poczty:"
 
-msgid "_Mail Reader"
-msgstr "Otwórz program pocztowy"
+#~ msgid "When _new mail arrives:"
+#~ msgstr "Po nadejściu nowej poczty:"
 
-msgid "_Open Latest Message"
-msgstr "_Otwórz ostatnią wiadomość"
+#~ msgid "Whether the status icon should blink on errors or not"
+#~ msgstr "Migaj przy wystąpieniu błędów"
 
-msgid "Sent:"
-msgstr "Wysłano:"
+#~ msgid "Whether to automatically close the mail summary popup or not"
+#~ msgstr "Zamknij automatycznie streszczenie poczty po upływie zadanego czasu"
+
+#~ msgid ""
+#~ "Whether to display the mail summary in the status icon tooltip or not"
+#~ msgstr "Wyświetl streszczenie poczty w obszarze powiadamiania"
+
+#~ msgid ""
+#~ "Whether to display the mail summary popup when new mail arrives or not"
+#~ msgstr "Wyświetl streszczenie poczty po nadejściu nowych wiadomości"
+
+#~ msgid "Whether to hide previously displayed mail or not"
+#~ msgstr "Ukrywaj przeczytane listy"
+
+#~ msgid "Whether to run a command when all mail is read or not"
+#~ msgstr "Uruchom polecenie, gdy cała poczta zostanie przeczytana"
+
+#~ msgid "Whether to run a command when new mail arrives or not"
+#~ msgstr "Uruchom polecenie, gdy nadejdzie nowa poczta"
+
+#~ msgid "Whether to set a mail reader or not"
+#~ msgstr "Ustaw czytnik poczty"
+
+#~ msgid ""
+#~ "Whether to start Mail Notification when you log into your GNOME session "
+#~ "or not"
+#~ msgstr ""
+#~ "Uruchom zawiadomienie pocztowe w trakcie startu środowiska graficznego"
+
+#~ msgid ""
+#~ "Whether to use a custom font for the contents of the mail summary popup "
+#~ "or not"
+#~ msgstr "Ustaw czcionkę dla tytułu streszczenia poczty"
+
+#~ msgid ""
+#~ "Whether to use a custom font for the title of the mail summary popup or "
+#~ "not"
+#~ msgstr ""
+#~ "Czy użyć niestandardową czcionkę do tytułu wyskakującego okienka "
+#~ "streszczenia poczty czy nie"
+
+#~ msgid "_Automatically close after:"
+#~ msgstr "_Automatyczne zamknięcie okienka po:"
 
-msgid "about"
-msgstr "około"
+#~ msgid "_Blink on errors"
+#~ msgstr "_Miganie przy błędach"
 
-msgid "day"
-msgstr "dzień/dni"
+#~ msgid "_Contents font:"
+#~ msgstr "_Wybór czcionki treści:"
 
-msgid "ago"
-msgstr "temu"
+#~ msgid "_Display the mail summary dialog"
+#~ msgstr "_Wyświetl streszczenie poczty"
+
+#~ msgid "_Enable mail summary popup"
+#~ msgstr "_Streszczenie poczty"
+
+#~ msgid "_Mail reader:"
+#~ msgstr "C_zytnik poczty:"
+
+#~ msgid "_Start Mail Notification on GNOME login"
+#~ msgstr "_Uruchomienie zawiadomienia pocztowego podczas logowania"
+
+#~ msgid "_Title font:"
+#~ msgstr "_Wybór czcionki tytułu:"
+
+#~ msgid "_Vertical offset:"
+#~ msgstr "_Pionowę przesunięcie"
+
+#~ msgid "pixels"
+#~ msgstr "piksele"
+
+#~ msgid "<span size=\"larger\" weight=\"bold\">Mail Summary</span>"
+#~ msgstr "<span size=\"larger\" weight=\"bold\">Zawiadomienie pocztowe</span>"
+
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"larger\">First startup</span>\n"
+#~ "\n"
+#~ "Mail Notification has been loaded successfully.\n"
+#~ "\n"
+#~ "Since this is the first time you run Mail Notification, you might want to "
+#~ "configure it.\n"
+#~ "\n"
+#~ "Note: this message will not be shown anymore. To configure Mail "
+#~ "Notification again, choose <span weight=\"bold\">Applications</span> → "
+#~ "<span weight=\"bold\">Desktop Preferences</span> → <span weight=\"bold"
+#~ "\">Mail Notification</span> (or on some systems <span weight=\"bold"
+#~ "\">Applications → Preferences → More Preferences → Mail Notification</"
+#~ "span>)."
+#~ msgstr ""
+#~ "<span weight=\"bold\" size=\"larger\">Premier démarrage</span>\n"
+#~ "\n"
+#~ "Zawiadomienie pocztowe było pomyślnie załadowane.\n"
+#~ "\n"
+#~ "Ponieważ uruchamiasz Zawiadomienia Pocztowego poraz pierwszy raz, może "
+#~ "byś chciał je skonfigurować.\n"
+#~ "\n"
+#~ "Uwaga: ta wiadomość nie będzie więcej pokazywana. Jeśli byś ponownie "
+#~ "chciał skonfigurować Zawiadomienie pocztowe, wybierz <span weight=\"bold"
+#~ "\">Aplikacje</span> → <span weight=\"bold\">Preferencje Desktopowe</span> "
+#~ "→ <span weight=\"bold\">Zawiadomienie pocztowe</span> (lub na pewnych "
+#~ "systemach <span weight=\"bold\">Aplikacje</span> → <span weight=\"bold"
+#~ "\">Preferencje</span> → <span weight=\"bold\">Więcej Preferencji</span> → "
+#~ "<span weight=\"bold\">Zawiadomienie pocztowe</span>)."
+
+#~ msgid "_Configure Mail Notification"
+#~ msgstr "_Konfiguracja Zawiadomienia pocztowego"
+
+#~ msgid "When all mail has _been read:"
+#~ msgstr "Kiedy wszystkie wiadomości zostały przeczytane:"
+
+#~ msgid "<span weight=\"bold\">Tooltip Mail Summary</span>"
+#~ msgstr "<span weight=\"bold\">Podsumowanie wiadomości</span>"
+
+#~ msgid "icon tooltip's mail summary layout|_Standard"
+#~ msgstr "_Standardowe"
+
+#~ msgid "icon tooltip's mail summary layout|Co_mpact"
+#~ msgstr "Ko_mpaktowe"
+
+#~ msgid "_Display this dialog"
+#~ msgstr "Pokaż to okno _dialogowe"
+
+#~ msgid "_Never"
+#~ msgstr "_Nigdy"
+
+#~ msgid "Us_e Default"
+#~ msgstr "_Domyślnie"
+
+#~ msgid "<span weight=\"bold\">Location</span>"
+#~ msgstr "<span weight=\"bold\">Lokalizacja</span>"
+
+#~ msgid "about"
+#~ msgstr "około"
+
+#~ msgid "ago"
+#~ msgstr "temu"
 
diff --git a/src/mn-conf.c b/src/mn-conf.c
@@ -221,7 +221,8 @@ check_schemas (void)
     MN_CONF_POPUPS_ACTIONS,
     MN_CONF_POPUPS_LIMIT,
     MN_CONF_FALLBACK_CHARSETS,
-    MN_CONF_POPUPS_EXPIRATION_DELAY
+    MN_CONF_POPUPS_EXPIRATION_DELAY,
+    MN_CONF_MESSAGES_CONSIDERED_AS_READ
   };
   int i;
   GConfClient *client;
@@ -480,6 +481,54 @@ mn_conf_set_string_list (const char *key, GSList *list)
   handle_error(&err);
 }
 
+GHashTable *
+mn_conf_get_string_hash_set (const char *key)
+{
+  GSList *list;
+  GSList *l;
+  GHashTable *set;
+
+  g_return_val_if_fail(key != NULL, NULL);
+
+  list = mn_conf_get_string_list(key);
+
+  set = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL);
+
+  MN_LIST_FOREACH(l, list)
+    {
+      const char *str = l->data;
+
+      g_hash_table_replace(set, g_strdup(str), GINT_TO_POINTER(TRUE));
+    }
+
+  mn_g_slist_free_deep(list);
+
+  return set;
+}
+
+static void
+set_string_hash_set_cb (const char *str,
+			gpointer value,
+			GSList **list)
+{
+  *list = g_slist_prepend(*list, (gpointer) str);
+}
+
+void
+mn_conf_set_string_hash_set (const char *key, GHashTable *set)
+{
+  GSList *list = NULL;
+
+  g_return_if_fail(key != NULL);
+  g_return_if_fail(set != NULL);
+
+  g_hash_table_foreach(set, (GHFunc) set_string_hash_set_cb, &list);
+
+  mn_conf_set_string_list(key, list);
+
+  g_slist_free(list);
+}
+
 void
 mn_conf_suggest_sync (void)
 {
diff --git a/src/mn-conf.h b/src/mn-conf.h
@@ -96,6 +96,8 @@
   MN_CONF_POPUPS_NAMESPACE "/limit"
 #define MN_CONF_FALLBACK_CHARSETS \
   MN_CONF_NAMESPACE "/fallback-charsets"
+#define MN_CONF_MESSAGES_CONSIDERED_AS_READ \
+  MN_CONF_NAMESPACE "/messages-considered-as-read"
 
 /* obsolete keys */
 #define MN_CONF_OBSOLETE_MAILBOXES \
@@ -150,6 +152,10 @@ GSList		*mn_conf_get_string_list	(const char	*key);
 void		mn_conf_set_string_list		(const char	*key,
 						 GSList		*list);
 
+GHashTable	*mn_conf_get_string_hash_set	(const char	*key);
+void		mn_conf_set_string_hash_set	(const char	*key,
+						 GHashTable	*set);
+
 void		mn_conf_suggest_sync	(void);
 
 void		mn_conf_recursive_unset	(const char	*key,
diff --git a/src/mn-evolution-server.gob b/src/mn-evolution-server.gob
@@ -215,9 +215,9 @@ class MN:Evolution:Server
 
   private gboolean
     get_unseen_messages (self,
-			      const char *folder_uri (check null),
-			      GPtrArray **ret (check null),
-			      GError **err)
+			 const char *folder_uri (check null),
+			 GPtrArray **ret (check null),
+			 GError **err)
   {
     CamelFolder *folder;
 
diff --git a/src/mn-imap-mailbox.gob b/src/mn-imap-mailbox.gob
@@ -779,9 +779,13 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
 		  int n = atoi(strings[i]);
 		  MessageInfo *info;
 
-		  info = self_session_ensure_message_info(priv, n);
-
-		  info->flags |= MN_MESSAGE_NEW;
+		  info = self_session_get_message_info(priv, n);
+		  if (info)
+		    info->flags |= MN_MESSAGE_NEW;
+		  /*
+		   * Otherwise the message is recent but not unseen,
+		   * and we must ignore it (fixes #230425).
+		   */
 		}
 
 	    g_strfreev(strings);
diff --git a/src/mn-mailbox.gob b/src/mn-mailbox.gob
@@ -82,6 +82,7 @@ typedef enum
 #include "mn-message.h"
 #include "mn-conf.h"
 #include "mn-locked-callback.h"
+#include "mn-shell.h"
 
 struct _MNMailboxConfiguration
 {
@@ -94,9 +95,19 @@ GType mn_mailbox_types[MN_MAILBOX_MAX_TYPES + 1];
 
 typedef struct
 {
+  MNMailbox	*self;
+  GHashTable	*messages;
+  GHashTable	*messages_considered_as_read;
+  gboolean	display_seen_mail;
+} FilterMessagesInfo;
+
+typedef struct
+{
   GHashTable	*other;
   gboolean	changed;
 } CompareMessagesInfo;
+
+static unsigned int cleanup_messages_considered_as_read_idle_id = 0;
 %}
 
 class MN:Mailbox (abstract)
@@ -162,6 +173,20 @@ class MN:Mailbox (abstract)
     self_set_active(self, FALSE);
 
     mn_source_clear(&selfp->check_timeout_id);
+
+    /*
+     * Do not queue a cleanup of the messages-considered-as-read GConf
+     * setting: it should not be done if the mailbox is only being
+     * replaced (eg. from mn_mailbox_properties_dialog_apply()).
+     *
+     * If however the mailbox is being permanently removed, its
+     * messages considered as read will be cleaned up the next time
+     * another mailbox is checked, which is good enough.
+     *
+     * Note that we could queue a cleanup from here by adding and
+     * testing a "gboolean replacing" signal parameter, but it is not
+     * worth the effort.
+     */
   }
 
   public char *runtime_name destroywith g_free;
@@ -242,35 +267,22 @@ class MN:Mailbox (abstract)
       selfp->check_timeout_id = gdk_threads_add_timeout(self->runtime_check_delay * 1000, self_check_timeout_cb, self);
   }
 
-  /* all unread (unseen and seen) messages */
-  private GSList *all_messages destroywith mn_g_object_slist_free;
+  /* whether set_messages() has ever been called */
+  private gboolean all_messages_set;
 
-  /* all_messages, indexed by mid
-   *
-   * These messages are not necessarily present in all_messages (a
-   * seen or considered as read message might not be added to
-   * all_messages), so the hash table holds a reference to each
-   * message.
-   */
-  private GHashTable *all_messages_mid_hash_table = {g_hash_table_new_full(g_str_hash, g_str_equal, NULL, (GDestroyNotify) g_object_unref)} destroywith g_hash_table_destroy;
-
-  /*
-   * These messages are not necessarily present in all_messages (they
-   * might have been marked as read previously), so the hash table
-   * holds a reference to each message.
-   */
-  private GHashTable *all_messages_considered_as_read = {g_hash_table_new_full(g_str_hash, g_str_equal, NULL, (GDestroyNotify) g_object_unref)} destroywith g_hash_table_destroy;
+  /* all unread (unseen and seen) messages, indexed by id */
+  private GHashTable *all_messages = {g_hash_table_new_full(g_str_hash, g_str_equal, NULL, (GDestroyNotify) g_object_unref)} destroywith g_hash_table_destroy;
 
-  /* all_messages after applying the "seen messages" filter */
-  public GPtrArray *messages = {g_ptr_array_new()} destroywith mn_g_object_ptr_array_free;
+  /* all_messages, indexed by mid (message references held by all_message) */
+  private GHashTable *all_messages_by_mid = {g_hash_table_new(g_str_hash, g_str_equal)} destroywith g_hash_table_destroy;
 
-  /* self->messages, indexed by id */
-  private GHashTable *messages_hash_table = {g_hash_table_new(g_str_hash, g_str_equal)} destroywith g_hash_table_destroy;
+  /* all_messages after applying the "seen messages" filter, indexed by id */
+  public GHashTable *messages = {g_hash_table_new_full(g_str_hash, g_str_equal, NULL, (GDestroyNotify) g_object_unref)} destroywith g_hash_table_destroy;
 
   /* for performance */
   public time_t timestamp; /* timestamp of most recent message in self->messages */
 
-  property POINTER messages (type = GPtrArray *)
+  property POINTER messages (type = GHashTable *)
     get
     {
       g_value_set_pointer(VAL, self->messages);
@@ -279,8 +291,29 @@ class MN:Mailbox (abstract)
   protected void
     set_messages (self, GSList *messages)
   {
-    mn_g_object_slist_free(selfp->all_messages);
-    selfp->all_messages = mn_g_object_slist_copy(messages);
+    GSList *l;
+
+    selfp->all_messages_set = TRUE;
+
+    g_hash_table_remove_all(selfp->all_messages);
+    g_hash_table_remove_all(selfp->all_messages_by_mid);
+
+    MN_LIST_FOREACH(l, messages)
+      {
+	MNMessage *message = l->data;
+
+	g_hash_table_replace(selfp->all_messages, message->id, g_object_ref(message));
+
+	if (message->mid)
+	  /* do not ref message, it is owned by all_messages */
+	  g_hash_table_replace(selfp->all_messages_by_mid, message->mid, message);
+      }
+
+    /*
+     * Some messages might be gone, queue a cleanup of the
+     * considered-as-read GConf setting.
+     */
+    self_queue_cleanup_messages_considered_as_read();
 
     self_filter_messages(self);
   }
@@ -289,70 +322,40 @@ class MN:Mailbox (abstract)
    * filter_messages:
    * @self: the mailbox to act upon
    *
-   * Filters @self->all_messages with the "seen mail" filter and
-   * @selfp->all_messages_considered_as_read, and stores the resulting
-   * list in @self->messages. Additionally, if @self->messages has
-   * changed, emits the "messages-changed" signal.
+   * Filters @self->all_messages with the "seen mail" filter and the
+   * considered-as-read GConf list, and stores the resulting set in
+   * @self->messages. Additionally, if @self->messages has changed,
+   * emits the "messages-changed" signal.
    **/
   private void
     filter_messages (self)
   {
-    GPtrArray *messages;
-    GHashTable *all_messages_hash_table;
-    GHashTable *messages_hash_table;
-    gboolean display_seen_mail;
-    GSList *l;
+    FilterMessagesInfo info;
     gboolean changed = FALSE;
     gboolean has_new = FALSE;
 
     /* filter messages */
 
-    messages = g_ptr_array_new();
     self->timestamp = 0;
 
-    all_messages_hash_table = g_hash_table_new(g_str_hash, g_str_equal);
-    messages_hash_table = g_hash_table_new(g_str_hash, g_str_equal);
-
-    display_seen_mail = mn_conf_get_bool(MN_CONF_DISPLAY_SEEN_MAIL);
-
-    MN_LIST_FOREACH(l, selfp->all_messages)
-      {
-	MNMessage *message = l->data;
-
-	g_hash_table_replace(all_messages_hash_table, message->id, message);
-
-	if (message->mid)
-	  g_hash_table_replace(selfp->all_messages_mid_hash_table, message->mid, g_object_ref(message));
-
-	if ((display_seen_mail || (message->flags & MN_MESSAGE_NEW) != 0)
-	    && ! g_hash_table_lookup(selfp->all_messages_considered_as_read, message->id))
-	  {
-	    if (message->sent_time > self->timestamp)
-	      self->timestamp = message->sent_time;
-
-	    g_ptr_array_add(messages, g_object_ref(message));
-	    g_hash_table_replace(messages_hash_table, message->id, message);
-	  }
-      }
+    info.self = self;
+    info.messages = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, (GDestroyNotify) g_object_unref);
+    info.messages_considered_as_read = mn_conf_get_string_hash_set(MN_CONF_MESSAGES_CONSIDERED_AS_READ);
+    info.display_seen_mail = mn_conf_get_bool(MN_CONF_DISPLAY_SEEN_MAIL);
 
-    /* remove stale messages */
-    g_hash_table_foreach_remove(selfp->all_messages_mid_hash_table, (GHRFunc) self_remove_stale_messages_cb, all_messages_hash_table);
-    g_hash_table_foreach_remove(selfp->all_messages_considered_as_read, (GHRFunc) self_remove_stale_messages_cb, all_messages_hash_table);
+    g_hash_table_foreach(selfp->all_messages, (GHFunc) self_filter_messages_cb, &info);
 
-    g_hash_table_destroy(all_messages_hash_table);
+    g_hash_table_destroy(info.messages_considered_as_read);
 
     /* detect changes */
 
-    if (self_compare_messages(selfp->messages_hash_table, messages_hash_table))
+    if (self_compare_messages(self->messages, info.messages))
       changed = TRUE;
-    if (self_compare_messages(messages_hash_table, selfp->messages_hash_table))
+    if (self_compare_messages(info.messages, self->messages))
       changed = has_new = TRUE;
 
-    mn_g_object_ptr_array_free(self->messages);
-    self->messages = messages;
-
-    g_hash_table_destroy(selfp->messages_hash_table);
-    selfp->messages_hash_table = messages_hash_table;
+    g_hash_table_destroy(self->messages);
+    self->messages = info.messages;
 
     g_object_notify(G_OBJECT(self), "messages");
 
@@ -360,12 +363,23 @@ class MN:Mailbox (abstract)
       self_messages_changed(self, has_new);
   }
 
-  private gboolean
-    remove_stale_messages_cb (gpointer key,
-			      MNMessage *message,
-			      GHashTable *messages)
+  private void
+    filter_messages_cb (const char *id,
+			MNMessage *message,
+			FilterMessagesInfo *info)
   {
-    return g_hash_table_lookup(messages, message->id) == NULL;
+    Self *self = info->self;
+
+    if (! info->display_seen_mail && (message->flags & MN_MESSAGE_NEW) == 0)
+      return;
+
+    if (g_hash_table_lookup(info->messages_considered_as_read, message->id))
+      return;
+
+    if (message->sent_time > self->timestamp)
+      self->timestamp = message->sent_time;
+
+    g_hash_table_replace(info->messages, message->id, g_object_ref(message));
   }
 
   /**
@@ -399,6 +413,80 @@ class MN:Mailbox (abstract)
       info->changed = TRUE;
   }
 
+  private void
+    queue_cleanup_messages_considered_as_read (void)
+  {
+    if (! cleanup_messages_considered_as_read_idle_id)
+      cleanup_messages_considered_as_read_idle_id = gdk_threads_add_idle(self_cleanup_messages_considered_as_read_cb, NULL);
+  }
+
+  private gboolean
+    cleanup_messages_considered_as_read_cb (gpointer data)
+  {
+    self_cleanup_messages_considered_as_read();
+
+    cleanup_messages_considered_as_read_idle_id = 0;
+    return FALSE;		/* remove source */
+  }
+
+  /*
+   * Remove messages which no longer exist from the considered-as-read
+   * GConf list.
+   *
+   * The primary goal is to ensure that a message which has been
+   * opened or marked as read (these functions implicitly add the
+   * message to the considered-as-read list) and then marked back as
+   * unread in the mail reader will reappear in MN.
+   *
+   * The secondary goal is to ensure that the considered-as-list will
+   * not grow forever.
+   */
+  private void
+    cleanup_messages_considered_as_read (void)
+  {
+    GList *l;
+    GHashTable *set;
+
+    /*
+     * If there is a mailbox which has not been successfully checked
+     * yet, abort. Otherwise, the messages of that mailbox could be
+     * mistakenly cleaned up.
+     */
+    MN_LIST_FOREACH(l, mn_shell->mailboxes->list)
+      {
+	MNMailbox *mailbox = l->data;
+
+	if (! mailbox->_priv->all_messages_set)
+	  return;
+      }
+
+    set = mn_conf_get_string_hash_set(MN_CONF_MESSAGES_CONSIDERED_AS_READ);
+
+    if (g_hash_table_foreach_remove(set, (GHRFunc) self_cleanup_messages_considered_as_read_remove_cb, NULL))
+      /* one or more messages were removed, reflect the changes */
+      mn_conf_set_string_hash_set(MN_CONF_MESSAGES_CONSIDERED_AS_READ, set);
+
+    g_hash_table_destroy(set);
+  }
+
+  private gboolean
+    cleanup_messages_considered_as_read_remove_cb (const char *id,
+						   gpointer value,
+						   gpointer user_data)
+  {
+    GList *l;
+
+    MN_LIST_FOREACH(l, mn_shell->mailboxes->list)
+      {
+	MNMailbox *mailbox = l->data;
+
+	if (g_hash_table_lookup(mailbox->_priv->all_messages, id))
+	  return FALSE;		/* message still exists, do not remove it */
+      }
+
+    return TRUE;		/* message no longer exists, remove it */
+  }
+
   /**
    * messages-changed:
    * @self: the object which received the signal
@@ -507,7 +595,10 @@ class MN:Mailbox (abstract)
 
   init (self)
   {
-    mn_g_object_gconf_notification_add_gdk_locked(self, MN_CONF_DISPLAY_SEEN_MAIL, self_notify_display_seen_messages_cb, self);
+    mn_g_object_gconf_notifications_add_gdk_locked(self,
+						   MN_CONF_DISPLAY_SEEN_MAIL, self_notify_display_seen_messages_cb, self,
+						   MN_CONF_MESSAGES_CONSIDERED_AS_READ, self_notify_messages_considered_as_read_cb, self,
+						   NULL);
   }
 
   finalize (self)
@@ -532,6 +623,17 @@ class MN:Mailbox (abstract)
     self_filter_messages(self);
   }
 
+  private void
+    notify_messages_considered_as_read_cb (GConfClient *client,
+					   unsigned int cnxn_id,
+					   GConfEntry *entry,
+					   gpointer user_data)
+  {
+    Self *self = user_data;
+
+    self_filter_messages(self);
+  }
+
   [G_GNUC_NULL_TERMINATED]
   public MNMailbox *
     new (const char *type (check null), ...)
@@ -1072,66 +1174,7 @@ class MN:Mailbox (abstract)
   protected MNMessage *
     get_message_from_mid (self, const char *mid (check null))
   {
-    return g_hash_table_lookup(selfp->all_messages_mid_hash_table, mid);
-  }
-
-  private void
-    consider_as_read_real (self, MN:Message *message (check null type))
-  {
-    g_hash_table_replace(selfp->all_messages_considered_as_read, message->id, g_object_ref(message));
-  }
-
-  /*
-   * This function serves two purposes:
-   *
-   *   - there can be a slight (or large if polling is in effect)
-   *     delay between marking a message as read and having the next
-   *     mail check catch the change. This function is used to conceal
-   *     the delay from the user.
-   *   - this function is called on each new message when the user
-   *     chooses the "Consider new mail as read" action
-   */
-  public void
-    consider_as_read (MN:Message *message (check null type))
-  {
-    Self *self;
-
-    self = message->mailbox;
-    g_assert(self != NULL);
-
-    self_consider_as_read_real(self, message);
-
-    self_filter_messages(self);
-  }
-
-  /*
-   * Atomically considers a list of messages as read (updates the
-   * mailbox message list only once rather than for each message).
-   * Each message in the list must belong to the same mailbox.
-   */
-  public void
-    consider_as_read_list (GSList *messages)
-  {
-    Self *self = NULL;
-    GSList *l;
-
-    MN_LIST_FOREACH(l, messages)
-      {
-	MNMessage *message = l->data;
-
-	if (self)
-	  g_assert(self == message->mailbox);
-	else
-	  {
-	    self = message->mailbox;
-	    g_assert(self != NULL);
-	  }
-
-	self_consider_as_read_real(self, message);
-      }
-
-    if (self)			/* non empty list */
-      self_filter_messages(self);
+    return g_hash_table_lookup(selfp->all_messages_by_mid, mid);
   }
 
   public char *
diff --git a/src/mn-mailboxes.gob b/src/mn-mailboxes.gob
@@ -145,20 +145,22 @@ class MN:Mailboxes
     MN_LIST_FOREACH(l, self->list)
       {
 	MNMailbox *mailbox = l->data;
-	int i;
 
-	MN_ARRAY_FOREACH(i, mailbox->messages)
-	  {
-	    MNMessage *message = g_ptr_array_index(mailbox->messages, i);
-
-	    g_ptr_array_add(self->messages, g_object_ref(message));
-	    g_hash_table_insert(self->messages_hash_table, message->id, message);
-	  }
+	g_hash_table_foreach(mailbox->messages, (GHFunc) self_messages_changed_cb, self);
       }
 
     g_ptr_array_sort(self->messages, (GCompareFunc) self_messages_sort_cb);
   }
 
+  private void
+    messages_changed_cb (const char *id,
+			 MNMessage *message,
+			 Self *self)
+  {
+    g_ptr_array_add(self->messages, g_object_ref(message));
+    g_hash_table_insert(self->messages_hash_table, message->id, message);
+  }
+
   private int
     messages_sort_cb (MNMessage **a, MNMessage **b)
   {
@@ -546,9 +548,12 @@ class MN:Mailboxes
 				gpointer user_data)
   {
     Self *self = user_data;
+    int num_messages;
+
+    num_messages = g_hash_table_size(mailbox->messages);
 
-    mn_info(ngettext("%s has %i new message", "%s has %i new messages", mailbox->messages->len),
-	    mailbox->runtime_name, mailbox->messages->len);
+    mn_info(ngettext("%s has %i new message", "%s has %i new messages", num_messages),
+	    mailbox->runtime_name, num_messages);
 
     self_messages_changed(self, has_new);
   }
diff --git a/src/mn-maildir-mailbox-backend.gob b/src/mn-maildir-mailbox-backend.gob
@@ -135,7 +135,7 @@ class MN:Maildir:Mailbox:Backend from MN:VFS:Mailbox:Backend
 	{
 	  char *mid;
 	  MNMessageFlags flags = 0;
-	  MNVFSMessage *message;
+	  MNVFSMessage *message = NULL;
 
 	  if (mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id))
 	    {
@@ -163,13 +163,25 @@ class MN:Maildir:Mailbox:Backend from MN:VFS:Mailbox:Backend
 	      mid = g_strndup(file_info->name, info - file_info->name);
 	    }
 
+	  /*
+	   * Hold the GDK lock while using
+	   * mn_mailbox_get_message_from_mid(), since for
+	   * MNReentrantMailbox, mail checks can run concurrently, so
+	   * another check could be modifying the MID hash table.
+	   */
+	  GDK_THREADS_ENTER();
+
 	  message = MN_VFS_MESSAGE(mn_mailbox_get_message_from_mid(MN_MAILBOX(backend->mailbox), mid));
 	  if (message)
 	    message = mn_vfs_message_new_from_message(message,
 						      uri,
 						      file_info->name,
 						      flags);
-	  else
+
+	  gdk_flush();
+	  GDK_THREADS_LEAVE();
+
+	  if (! message)
 	    {
 	      GError *tmp_err = NULL;
 
diff --git a/src/mn-message.gob b/src/mn-message.gob
@@ -78,6 +78,7 @@ typedef GError *(*MNMessageActionPerformCallback) (MNMessage *message, gpointer 
 #include <glib/gi18n.h>
 #include <gnome.h>
 #include <libgnomevfs/gnome-vfs.h>
+#include "mn-conf.h"
 #include "mn-util.h"
 
 typedef struct
@@ -456,7 +457,7 @@ class MN:Message
     open_done (self, GError *err)
   {
     if (! err)
-      mn_mailbox_consider_as_read(self);
+      self_consider_as_read(self); /* [1] */
   }
 
   virtual private gboolean
@@ -472,7 +473,7 @@ class MN:Message
     mark_as_read_done (self, GError *err)
   {
     if (! err)
-      mn_mailbox_consider_as_read(self);
+      self_consider_as_read(self); /* [1] */
   }
 
   virtual private gboolean
@@ -488,7 +489,7 @@ class MN:Message
     mark_as_spam_done (self, GError *err)
   {
     if (! err)
-      mn_mailbox_consider_as_read(self);
+      self_consider_as_read(self); /* [1] */
   }
 
   virtual private gboolean
@@ -504,7 +505,65 @@ class MN:Message
     delete_done (self, GError *err)
   {
     if (! err)
-      mn_mailbox_consider_as_read(self);
+      self_consider_as_read(self); /* [1] */
+  }
+
+  public void
+    consider_as_read (self)
+  {
+    GSList *list;
+    GSList *l;
+    gboolean exists = FALSE;
+
+    list = mn_conf_get_string_list(MN_CONF_MESSAGES_CONSIDERED_AS_READ);
+
+    MN_LIST_FOREACH(l, list)
+      {
+	const char *id = l->data;
+
+	if (! strcmp(id, self->id))
+	  {
+	    exists = TRUE;
+	    break;
+	  }
+      }
+
+    if (! exists)
+      {
+	list = g_slist_prepend(list, g_strdup(self->id));
+
+	mn_conf_set_string_list(MN_CONF_MESSAGES_CONSIDERED_AS_READ, list);
+      }
+
+    mn_g_slist_free_deep(list);
+  }
+
+  /*
+   * Atomically considers a list of messages as read, setting the
+   * GConf list only once rather than for each message.
+   */
+  public void
+    consider_as_read_list (GList *messages)
+  {
+    GHashTable *set;
+    unsigned int old_size;
+    GList *l;
+
+    set = mn_conf_get_string_hash_set(MN_CONF_MESSAGES_CONSIDERED_AS_READ);
+
+    old_size = g_hash_table_size(set);
+
+    MN_LIST_FOREACH(l, messages)
+      {
+	MNMessage *message = l->data;
+
+	g_hash_table_replace(set, g_strdup(message->id), GINT_TO_POINTER(TRUE));
+      }
+
+    if (g_hash_table_size(set) != old_size)
+      mn_conf_set_string_hash_set(MN_CONF_MESSAGES_CONSIDERED_AS_READ, set);
+
+    g_hash_table_destroy(set);
   }
 
   public MNMessage *
@@ -545,3 +604,12 @@ class MN:Message
     return node;
   }
 }
+
+/*
+ * [1]: there can be a slight (or large if polling is in effect) delay
+ * between executing an action which should cause a message to
+ * disappear from MN (open it, mark it as read, etc) and having the
+ * next mail check catch the change. By adding the message to the
+ * considered-as-read GConf list, this delay is concealed from the
+ * user.
+ */
diff --git a/src/mn-shell.gob b/src/mn-shell.gob
@@ -532,7 +532,7 @@ class MN:Shell
       {
 	MNMailbox *mailbox = l->data;
 
-	if (mailbox->messages->len != 0)
+	if (g_hash_table_size(mailbox->messages) != 0)
 	  has_new = TRUE;
 	if (mailbox->error)
 	  blink = TRUE;
@@ -582,7 +582,7 @@ class MN:Shell
           {
 	    MNMailbox *mailbox = la->data;
 
-	    if (mailbox->messages->len != 0)
+	    if (g_hash_table_size(mailbox->messages) != 0)
 	      new_mailboxes = g_slist_insert_sorted(new_mailboxes, mailbox, (GCompareFunc) self_new_mailboxes_compare_cb);
 
 	    if (mailbox->error)
@@ -597,12 +597,14 @@ class MN:Shell
 	      {
 		MNMailbox *mailbox = lb->data;
 
-		g_assert(mailbox->messages->len != 0);
+		g_assert(g_hash_table_size(mailbox->messages) != 0);
 
 		if (*string->str)
 		  g_string_append_c(string, '\n');
 
-		g_string_append_printf(string, _("%s (%i)"), mailbox->runtime_name, mailbox->messages->len);
+		g_string_append_printf(string, _("%s (%i)"),
+				       mailbox->runtime_name,
+				       (int) g_hash_table_size(mailbox->messages));
 	      }
 	    g_slist_free(new_mailboxes);
 
@@ -725,7 +727,7 @@ class MN:Shell
       return cmp;
 
     /* sort by number of messages (descending order) */
-    cmp = b->messages->len - a->messages->len;
+    cmp = (int) g_hash_table_size(b->messages) - g_hash_table_size(a->messages);
     if (cmp != 0)
       return cmp;
 
@@ -811,11 +813,11 @@ class MN:Shell
     MN_LIST_FOREACH(l, self->mailboxes->list)
       {
 	MNMailbox *mailbox = l->data;
-	GSList *list;
+	GList *list;
 
-	list = mn_g_ptr_array_to_slist(mailbox->messages);
-	mn_mailbox_consider_as_read_list(list);
-	g_slist_free(list);
+	list = g_hash_table_get_values(mailbox->messages);
+	mn_message_consider_as_read_list(list);
+	g_list_free(list);
       }
   }