diff --git a/Lib/mailbox.py b/Lib/mailbox.py
index 7e0689c..380f288 100755
--- a/Lib/mailbox.py
+++ b/Lib/mailbox.py
@@ -237,6 +237,7 @@
             else:
                 raise NoSuchMailboxError(self._path)
         self._toc = {}
+        self._last_read = None          # Records last time we read cur/new
 
     def add(self, message):
         """Add message and return assigned key."""
@@ -461,16 +462,35 @@
 
     def _refresh(self):
         """Update table of contents mapping."""
+        new_mtime = os.path.getmtime(os.path.join(self._path, 'new'))
+        cur_mtime = os.path.getmtime(os.path.join(self._path, 'cur'))
+
+        if (self._last_read is not None and
+            new_mtime <= self._last_read and cur_mtime <= self._last_read):
+            return
+
         self._toc = {}
-        for subdir in ('new', 'cur'):
-            subdir_path = os.path.join(self._path, subdir)
-            for entry in os.listdir(subdir_path):
-                p = os.path.join(subdir_path, entry)
+        def update_dir (subdir):
+            path = os.path.join(self._path, subdir)
+            for entry in os.listdir(path):
+                p = os.path.join(path, entry)
                 if os.path.isdir(p):
                     continue
                 uniq = entry.split(self.colon)[0]
                 self._toc[uniq] = os.path.join(subdir, entry)
 
+        update_dir('new')
+        update_dir('cur')
+
+        # We record the current time - 1sec so that, if _refresh() is called
+        # again in the same second, we will always re-read the mailbox
+        # just in case it's been modified.  (os.path.mtime() only has
+        # 1sec resolution.)  This results in a few unnecessary re-reads
+        # when _refresh() is called multiple times in the same second,
+        # but once the clock ticks over, we will only re-read as needed.
+        now = int(time.time() - 1)
+        self._last_read = time.time() - 1
+
     def _lookup(self, key):
         """Use TOC to return subpath for given key, or raise a KeyError."""
         try:
