Ejemplo n.º 1
0
def _render(template_text, message):
    template = jinja2.Template(template_text)
    headers = {
        name.lower().replace('-', '_'): i18n.get_header_value(message, name)
        for name in message.keys()
    }
    date = parsedate_to_datetime(i18n.get_header_value(message, 'date'))
    headers['date'] = date
    return template.render(message=message, **headers)
Ejemplo n.º 2
0
 def _get_dest_mailbox(self, message_id, message):
     header_value = i18n.get_header_value(message, self._header)
     match = self._dest_mailbox_regex.search(header_value)
     if not match:
         raise ValueError('Could not determine destination mailbox from '
                          '{!r} header {!r} with regex {!r}'.format(
                              self._header, header_value,
                              self._dest_mailbox_regex))
     self._log.debug(
         '%s %r header %r matched regex %r with %r',
         message_id,
         self._header,
         header_value,
         self._dest_mailbox_regex.pattern,
         match.groups(),
     )
     self._log.debug(
         '%s using group %s',
         message_id,
         self._dest_mailbox_regex_group,
     )
     return '{}{}'.format(
         self._dest_mailbox_base,
         match.groups()[self._dest_mailbox_regex_group],
     )
Ejemplo n.º 3
0
 def report(self, conn, src_mailbox, message_id, message):
     self._log.info(
         '%s (%s) to %s',
         message_id,
         i18n.get_header_value(message, 'subject'),
         self._get_dest_mailbox(message_id, message),
     )
Ejemplo n.º 4
0
 def check(self, message):
     date = parsedate_to_datetime(i18n.get_header_value(message, 'date'))
     if self._age:
         time_limit = datetime.now() - timedelta(days=self._age)
         if date <= time_limit:
             return True
         else:
             return 0
Ejemplo n.º 5
0
    def check(self, message):
        date = parsedate_to_datetime(i18n.get_header_value(message, 'date'))

        # RFC2822 dates ending with '-0000' create timezone naive datetimes
        # so we need to manually set their timezone so we can compare them
        # with TZ aware datetimes.
        if date.tzinfo is None:
            date = date.replace(tzinfo=timezone.utc)

        if self._age:
            time_limit = datetime.now(timezone.utc) - timedelta(days=self._age)
            if date <= time_limit:
                return True
            else:
                return 0
Ejemplo n.º 6
0
 def check(self, message):
     header_value = i18n.get_header_value(message, self._header_name)
     return self._check_rule(header_value)
Ejemplo n.º 7
0
 def report(self, conn, mailbox_name, message_id, message):
     self._log.info('%s (%s)', message_id,
                    i18n.get_header_value(message, 'subject'))