Package: archivemail
Version: 0.7.0-1
Followup-For: Bug #272666

Hi,
here comes another one.

Attached is a patch, that will make archivemail aware of the Received
header field.



-- System Information:
Debian Release: 4.0
  APT prefers stable
  APT policy: (990, 'stable'), (500, 'unstable'), (500, 'testing')
Architecture: i386 (i686)
Shell:  /bin/sh linked to /bin/bash
Kernel: Linux 2.6.18-4-686
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8)

Versions of packages archivemail depends on:
ii  python                        2.4.4-2    An interactive high-level object-o

archivemail recommends no packages.

-- no debconf information

-- 
Der Affekt gehört immer zur Sinnlichkeit, durch was für einen 
Gegenstand er auch erregt werden möge.
                -- Immanuel Kant
--- /usr/bin/archivemail	2007-07-26 21:45:11.000000000 +0200
+++ archivemail_rec	2007-07-31 03:10:30.000000000 +0200
@@ -183,6 +183,7 @@
     mangle_from          = 1
     quiet                = 0
     read_buffer_size     = 8192
+    received_date        = 0
     script_name          = os.path.basename(sys.argv[0])
     min_size             = None
     verbose              = 0
@@ -201,18 +202,20 @@
         """
         try:
             opts, args = getopt.getopt(args, '?D:S:Vd:hno:F:P:qs:uv', 
-                             ["date=", "days=", "delete", "dry-run", "help",
-                             "include-flagged", "no-compress", "output-dir=",
-                             "filter-append=", "pwfile=", "dont-mangle",
-			     "archive-name=",
-                             "preserve-unread", "quiet", "size=", "suffix=",
-                             "verbose", "version", "warn-duplicate"])
+			     ["date=", "days=", "delete", "dry-run", "help",
+			     "include-flagged", "no-compress", "output-dir=",
+			     "filter-append=", "pwfile=", "dont-mangle",
+			     "archive-name=", "preserve-unread", "quiet",
+			     "received-date", "size=", "suffix=", "verbose",
+			     "version", "warn-duplicate"])
         except getopt.error, msg:
             user_error(msg)
 
         archive_by = None 
 
         for o, a in opts:
+	    if o == '--received-date':
+		self.received_date = 1
             if o == '--delete':
                 self.delete_old_mail = 1
             if o == '--include-flagged':
@@ -660,6 +663,8 @@
       --delete          delete rather than archive old mail (use with caution!)
       --include-flagged messages flagged important can also be archived
       --no-compress     do not compress archives with gzip
+      --received-date   use first Received Header in E-Mail Message for date 
+			matching
       --warn-duplicate  warn about duplicate Message-IDs in the same mailbox
   -v, --verbose         report lots of extra debugging information
   -q, --quiet           quiet mode - print no statistics (suitable for crontab)
@@ -760,9 +765,18 @@
     assert(message != None)
     # try to guess the delivery date from various headers
     # get more desparate as we go through the array
-    for header in ('Delivery-date', 'Date', 'Resent-Date'):
+    Datearray = ['Delivery-date', 'Date', 'Resent-Date']
+    if options.received_date:
+	Datearray.insert(0, 'Received')
+    for header in Datearray:
         try:
-            date = message.getdate(header)
+	    if header == 'Received':
+		# getrawheader, because we need first matching header!
+		date = re.split(";", message.getrawheader('Received'))[1].strip()
+		date = rfc822.parsedate(date)
+	    else:
+		date = message.getdate(header)
             if date:
                 time_message = time.mktime(date)
                 vprint("using valid time found from '%s' header" % header)

Reply via email to