<DKIM> maxage causes loss of local email

Janna Martl janna.martl109 at gmail.com
Fri Mar 6 07:52:28 UTC 2015


Oops, corrected:

On Thu, Mar 05, 2015 at 10:30:23PM -0500, Janna Martl wrote:
>--- /usr/lib/python2.7/site-packages/offlineimap/folder/Maildir.py	2015-03-05 22:13:10.390450915 -0500
>+++ Maildir.py	2015-03-05 22:13:53.882540931 -0500
>@@ -22,6 +22,7 @@
> import tempfile
> from .Base import BaseFolder
> from threading import Lock
>+from offlineimap import emailutil
>
> try:
>     from hashlib import md5
>@@ -235,16 +236,25 @@
>         filepath = os.path.join(self.getfullname(), filename)
>         return os.path.getmtime(filepath)
>
>-    def new_message_filename(self, uid, flags=set()):
>+    def new_message_filename(self, uid, flags=set(), rtime=None):
>         """Creates a new unique Maildir filename
>
>         :param uid: The UID`None`, or a set of maildir flags
>         :param flags: A set of maildir flags
>         :returns: String containing unique message filename"""
>-        timeval, timeseq = _gettimeseq()
>-        return '%d_%d.%d.%s,U=%d,FMD5=%s%s2,%s' % \
>-            (timeval, timeseq, os.getpid(), socket.gethostname(),
>-             uid, self._foldermd5, self.infosep, ''.join(sorted(flags)))
>+        if rtime is None:
>+            timeval, timeseq = _gettimeseq()
>+        else:
>+            timeval, timeseq = rtime, 0
>+        filename = '%d_%d.%d.%s,U=%d,FMD5=%s%s2,%s' % \
>+                (timeval, timeseq, os.getpid(), socket.gethostname(),
>+                 uid, self._foldermd5, self.infosep, ''.join(sorted(flags)))
>+        while os.path.exists(os.path.join(self.getfullname(), "cur", filename)) or os.path.exists(os.path.join(self.getfullname(), "new", filename)):
>+            timeseq += 1
>+            filename = '%d_%d.%d.%s,U=%d,FMD5=%s%s2,%s' % \
>+                    (timeval, timeseq, os.getpid(), socket.gethostname(),
>+                     uid, self._foldermd5, self.infosep, ''.join(sorted(flags)))
>+        return filename
>
>
>     def save_to_tmp_file(self, filename, content):
>@@ -314,7 +324,9 @@
>         # Otherwise, save the message in tmp/ and then call savemessageflags()
>         # to give it a permanent home.
>         tmpdir = os.path.join(self.getfullname(), 'tmp')
>-        messagename = self.new_message_filename(uid, flags)
>+        if rtime is None:
>+            rtime = emailutil.get_message_date(content)
>+        messagename = self.new_message_filename(uid, flags, rtime=rtime)
>         tmpname = self.save_to_tmp_file(messagename, content)
>         if rtime != None:
>             os.utime(os.path.join(self.getfullname(), tmpname), (rtime, rtime))
>@@ -382,8 +394,10 @@
>         oldfilename = self.messagelist[uid]['filename']
>         dir_prefix, filename = os.path.split(oldfilename)
>         flags = self.getmessageflags(uid)
>+        content = self.getmessage(uid)
>+        rtime = emailutil.get_message_date(content)
>         newfilename = os.path.join(dir_prefix,
>-          self.new_message_filename(new_uid, flags))
>+          self.new_message_filename(new_uid, flags, rtime=rtime))
>         os.rename(os.path.join(self.getfullname(), oldfilename),
>                   os.path.join(self.getfullname(), newfilename))
>         self.messagelist[new_uid] = self.messagelist[uid]




More information about the OfflineIMAP-project mailing list