Branch 'pykolab-0.5' - 4 commits - configure.ac wallace/__init__.py wallace/module_resources.py wallace/modules.py

Jeroen van Meeuwen vanmeeuwen at kolabsys.com
Tue Dec 25 11:58:14 CET 2012


 configure.ac                |    4 ++--
 wallace/__init__.py         |    9 +++++++++
 wallace/module_resources.py |   23 ++++++++++-------------
 wallace/modules.py          |   29 +++++++++++++++++++----------
 4 files changed, 40 insertions(+), 25 deletions(-)

New commits:
commit 0751de3ff518aaac94bc96f17ee90b4fa2b42604
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date:   Tue Dec 25 11:57:27 2012 +0100

    Set version to 0.5.10

diff --git a/configure.ac b/configure.ac
index d54fc4a..645f3f6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,5 +1,5 @@
-AC_INIT([pykolab], 0.5.9)
-AC_SUBST([RELEASE], 3)
+AC_INIT([pykolab], 0.5.10)
+AC_SUBST([RELEASE], 1)
 
 AC_CONFIG_SRCDIR(pykolab/constants.py.in)
 


commit 94059e70dcbc7b78bf5b3d217227d11db06b924a
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date:   Mon Dec 24 17:14:42 2012 +0100

    Use the original SMTP communication exchange for recipients and senders (#1469)

diff --git a/wallace/modules.py b/wallace/modules.py
index 8a843e3..a20d80e 100644
--- a/wallace/modules.py
+++ b/wallace/modules.py
@@ -17,11 +17,12 @@
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 #
 
+import json
 import os
 import sys
 import time
 
-from email import message_from_file
+from email import message_from_string
 from email.message import Message
 from email.mime.base import MIMEBase
 from email.mime.message import MIMEMessage
@@ -119,7 +120,8 @@ def cb_action_HOLD(module, filepath):
 
 def cb_action_DEFER(module, filepath):
     log.info(_("Deferring message in %s (by module %s)") % (filepath, module))
-    message = message_from_file(open(filepath, 'r'))
+    message = json.load(open(filepath, 'r'))
+    message = message_from_string(message['data'])
 
     internal_time = parsedate_tz(message.__getitem__('Date'))
     internal_time = time.mktime(internal_time[:9]) + internal_time[9]
@@ -161,11 +163,14 @@ def cb_action_DEFER(module, filepath):
 def cb_action_REJECT(module, filepath):
     log.info(_("Rejecting message in %s (by module %s)") % (filepath, module))
 
-    message = message_from_file(open(filepath, 'r'))
+    _message = json.load(open(filepath, 'r'))
+    message = message_from_string(_message['data'])
+
     envelope_sender = getaddresses(message.get_all('From', []))
 
     recipients = getaddresses(message.get_all('To', [])) + \
-            getaddresses(message.get_all('Cc', []))
+            getaddresses(message.get_all('Cc', [])) + \
+            _message['to']
 
     _recipients = []
 
@@ -246,11 +251,11 @@ X-Wallace-Result: REJECT
 
 def cb_action_ACCEPT(module, filepath):
     log.info(_("Accepting message in %s (by module %s)") % (filepath, module))
-    message = message_from_file(open(filepath, 'r'))
-    envelope_sender = getaddresses(message.get_all('From', []))
+    _message = json.load(open(filepath, 'r'))
 
-    recipients = getaddresses(message.get_all('To', [])) + \
-            getaddresses(message.get_all('Cc', []))
+    message = message_from_string("%s" %(str(_message['data'])))
+    sender = _message['from']
+    recipients = _message['to']
 
     smtp = smtplib.SMTP("localhost", 10027)
 
@@ -259,21 +264,25 @@ def cb_action_ACCEPT(module, filepath):
 
     try:
         smtp.sendmail(
-                formataddr(envelope_sender[0]),
-                [formataddr(recipient) for recipient in recipients],
+                sender,
+                recipients,
                 message.as_string()
             )
 
     except smtplib.SMTPDataError, errmsg:
+        log.error("SMTP Data Error, %r" % (errmsg))
         # DEFER
         pass
     except smtplib.SMTPHeloError, errmsg:
+        log.error("SMTP HELO Error, %r" % (errmsg))
         # DEFER
         pass
     except smtplib.SMTPRecipientsRefused, errmsg:
+        log.error("SMTP Recipient(s) Refused, %r" % (errmsg))
         # DEFER
         pass
     except smtplib.SMTPSenderRefused, errmsg:
+        log.error("SMTP Sender Refused, %r" % (errmsg))
         # DEFER
         pass
     finally:


commit 7368cb82c46b8636a89646879fed86c7bc9adf7c
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date:   Mon Dec 24 17:13:43 2012 +0100

    Adjust the resources module to match the new format in which files are written to the spool (#1469)

diff --git a/wallace/module_resources.py b/wallace/module_resources.py
index 8bd3e1f..5a66dda 100644
--- a/wallace/module_resources.py
+++ b/wallace/module_resources.py
@@ -28,7 +28,6 @@ import time
 from urlparse import urlparse
 import urllib
 
-from email import message_from_file
 from email import message_from_string
 from email.utils import formataddr
 from email.utils import getaddresses
@@ -121,10 +120,15 @@ def execute(*args, **kw):
                 os.path.basename(filepath)
             )
 
-        os.rename(filepath, new_filepath)
-        filepath = new_filepath
+        if not filepath == new_filepath:
+            log.debug("Renaming %r to %r" % (filepath, new_filepath))
+            os.rename(filepath, new_filepath)
+            filepath = new_filepath
 
-    message = message_from_file(open(filepath, 'r'))
+    _message = json.load(open(filepath, 'r'))
+    log.debug("Loaded message %r" % (_message), level=9)
+    message = message_from_string(_message['data'])
+    recipients = _message['to']
 
     any_itips = False
     any_resources = False
@@ -158,15 +162,8 @@ def execute(*args, **kw):
             possibly_any_resources = False
 
     if possibly_any_resources:
-        recipients = {
-                "To": getaddresses(message.get_all('To', [])),
-                "Cc": getaddresses(message.get_all('Cc', []))
-                # TODO: Are those all recipient addresses?
-            }
-        log.debug("Recipients: %r" % recipients)
-
-        for recipient in recipients['Cc'] + recipients['To']:
-            if not len(resource_record_from_email_address(recipient[1])) == 0:
+        for recipient in recipients:
+            if not len(resource_record_from_email_address(recipient)) == 0:
                 any_resources = True
 
     if any_resources:


commit cfebb760d664f1f6013d679d2c311fb069c49061
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date:   Mon Dec 24 17:11:54 2012 +0100

    Write out messages received to the spool as a JSON object that preserves the SMTP communication exchange (#1469)

diff --git a/wallace/__init__.py b/wallace/__init__.py
index 3f9a78a..b22430d 100644
--- a/wallace/__init__.py
+++ b/wallace/__init__.py
@@ -21,6 +21,7 @@ import asyncore
 import binascii
 from distutils import version
 import grp
+import json
 import multiprocessing
 import os
 import pwd
@@ -241,6 +242,14 @@ class WallaceDaemon(object):
         """
         inheaders = 1
 
+        data = json.dumps(
+                {
+                        'from': mailfrom,
+                        'to': rcpttos,
+                        'data': data
+                   }
+            )
+
         (fp, filename) = tempfile.mkstemp(dir="/var/spool/pykolab/wallace/")
         os.write(fp, data)
         os.close(fp)





More information about the commits mailing list