Changeset View
Changeset View
Standalone View
Standalone View
wallace/modules.py
Show All 36 Lines | |||||
from email.utils import parsedate_tz | from email.utils import parsedate_tz | ||||
import smtplib | import smtplib | ||||
import pykolab | import pykolab | ||||
from pykolab import constants | from pykolab import constants | ||||
from pykolab.translate import _ | from pykolab.translate import _ | ||||
log = pykolab.getLogger('pykolab.wallace') | log = pykolab.getLogger('pykolab.wallace/modules') | ||||
extra_log_params = {'qid': '-'} | |||||
log = pykolab.logger.LoggerAdapter(log, extra_log_params) | |||||
conf = pykolab.getConf() | conf = pykolab.getConf() | ||||
modules = {} | modules = {} | ||||
def __init__(): | def __init__(): | ||||
# We only want the base path | # We only want the base path | ||||
modules_base_path = os.path.dirname(__file__) | modules_base_path = os.path.dirname(__file__) | ||||
▲ Show 20 Lines • Show All 145 Lines • ▼ Show 20 Lines | while not success and attempt <= 5: | ||||
log.error("smtplib quit() error - %r" % errmsg) | log.error("smtplib quit() error - %r" % errmsg) | ||||
time.sleep(10) | time.sleep(10) | ||||
attempt += 1 | attempt += 1 | ||||
return success | return success | ||||
def cb_action_HOLD(module, filepath): | def cb_action_HOLD(module, filepath): | ||||
global extra_log_params | |||||
extra_log_params['qid'] = os.path.basename(filepath) | |||||
log.info(_("Holding message in queue for manual review (%s by %s)") % (filepath, module)) | log.info(_("Holding message in queue for manual review (%s by %s)") % (filepath, module)) | ||||
def cb_action_DEFER(module, filepath): | def cb_action_DEFER(module, filepath): | ||||
global extra_log_params | |||||
extra_log_params['qid'] = os.path.basename(filepath) | |||||
log.info(_("Deferring message in %s (by module %s)") % (filepath, module)) | log.info(_("Deferring message in %s (by module %s)") % (filepath, module)) | ||||
# parse message headers | # parse message headers | ||||
message = Parser().parse(open(filepath, 'r'), True) | message = Parser().parse(open(filepath, 'r'), True) | ||||
internal_time = parsedate_tz(message.__getitem__('Date')) | internal_time = parsedate_tz(message.__getitem__('Date')) | ||||
internal_time = time.mktime(internal_time[:9]) + internal_time[9] | internal_time = time.mktime(internal_time[:9]) + internal_time[9] | ||||
Show All 27 Lines | def cb_action_DEFER(module, filepath): | ||||
#print("file:", filepath, "fileage:", fileage, "now:", now, "delta(seconds):", delta.seconds) | #print("file:", filepath, "fileage:", fileage, "now:", now, "delta(seconds):", delta.seconds) | ||||
#if delta.seconds > 1800: | #if delta.seconds > 1800: | ||||
## TODO: Send NDR back to user | ## TODO: Send NDR back to user | ||||
#log.debug(_("Message in file %s older then 1800 seconds, deleting") % (filepath), level=8) | #log.debug(_("Message in file %s older then 1800 seconds, deleting") % (filepath), level=8) | ||||
#os.unlink(filepath) | #os.unlink(filepath) | ||||
def cb_action_REJECT(module, filepath): | def cb_action_REJECT(module, filepath): | ||||
global extra_log_params | |||||
extra_log_params['qid'] = os.path.basename(filepath) | |||||
log.info(_("Rejecting message in %s (by module %s)") % (filepath, module)) | log.info(_("Rejecting message in %s (by module %s)") % (filepath, module)) | ||||
log.debug(_("Rejecting message in: %r") %(filepath), level=8) | log.debug(_("Rejecting message in: %r") %(filepath), level=8) | ||||
# parse message headers | # parse message headers | ||||
message = Parser().parse(open(filepath, 'r'), True) | message = Parser().parse(open(filepath, 'r'), True) | ||||
envelope_sender = getaddresses(message.get_all('From', [])) | envelope_sender = getaddresses(message.get_all('From', [])) | ||||
▲ Show 20 Lines • Show All 70 Lines • ▼ Show 20 Lines | """) % ( | ||||
log.debug(_("Rejection message was sent successfully: %r") % result) | log.debug(_("Rejection message was sent successfully: %r") % result) | ||||
if result: | if result: | ||||
os.unlink(filepath) | os.unlink(filepath) | ||||
else: | else: | ||||
log.debug(_("Message %r was not removed from spool") % filepath) | log.debug(_("Message %r was not removed from spool") % filepath) | ||||
def cb_action_ACCEPT(module, filepath): | def cb_action_ACCEPT(module, filepath): | ||||
global extra_log_params | |||||
extra_log_params['qid'] = os.path.basename(filepath) | |||||
log.info(_("Accepting message in %s (by module %s)") % (filepath, module)) | log.info(_("Accepting message in %s (by module %s)") % (filepath, module)) | ||||
log.debug(_("Accepting message in: %r") %(filepath), level=8) | log.debug(_("Accepting message in: %r") %(filepath), level=8) | ||||
# parse message headers | # parse message headers | ||||
message = Parser().parse(open(filepath, 'r'), True) | message = Parser().parse(open(filepath, 'r'), True) | ||||
messageid = message['message-id'] if 'message-id' in message else None | messageid = message['message-id'] if 'message-id' in message else None | ||||
▲ Show 20 Lines • Show All 91 Lines • Show Last 20 Lines |