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