Пример #1
0
 def __init__(self, *args, **kwargs):
     self.username = None
     self.password = None
     self.authenticator = kwargs.pop('authenticator', None)
     self.authenticated = False
     self.authenticating = False
     BaseSMTPChannel.__init__(self, *args, **kwargs)
Пример #2
0
 def __init__(self, *args, **kwargs):
     self.username = None
     self.password = None
     self.authenticator = kwargs.pop('authenticator', None)
     self.authenticated = False
     self.authenticating = False
     BaseSMTPChannel.__init__(self, *args, **kwargs)
Пример #3
0
 def push(self, msg):
     # catch "220 $FQDN $VERSION" from SMTPChannel.__init__()
     try:
         new_fqdn = MailSink.addr2fqdn[self._SMTPChannel__addr]
         if msg == '220 %s %s' % (self._SMTPChannel__fqdn, __version__):
             msg = '220 %s %s' % (new_fqdn, __version__)
     except KeyError:
         pass
     try:
         SMTPChannel.push(self, msg)
     except IndexError:
         # push sometimes fails with
         #
         # <type 'exceptions.IndexError'>:deque index out of range [/usr/lib/python2.7/asyncore.py|read|83]
         # [/usr/lib/python2.7/asyncore.py|handle_read_event|449]
         # [/usr/lib/python2.7/asynchat.py|handle_read|165]
         # [/usr/lib/python2.7/smtpd.py|found_terminator|163]
         # [/usr/lib/python2.7/smtpd.py|smtp_RCPT|251]
         # [/usr/lib/pymodules/python2.7/univention/testing/mail.py|push|74]
         # [/usr/lib/python2.7/smtpd.py|push|136]
         # [/usr/lib/python2.7/asynchat.py|push|193]
         # [/usr/lib/python2.7/asynchat.py|initiate_send|251]
         #
         # https://github.com/myano/jenni/issues/159 says "This is an inherent issue with multi-threading",
         # so just for testing, wait a moment and try angain
         time.sleep(3)
         SMTPChannel.push(self, msg)
Пример #4
0
 def smtp_HELO(self, arg):
     # change FQDN
     try:
         self._SMTPChannel__fqdn = MailSink.addr2fqdn[self._SMTPChannel__addr]
     except KeyError:
         pass
     SMTPChannel.smtp_HELO(self, arg)
Пример #5
0
        # start background process to run periodic jobs in active modules
        self.heartbeat = multiprocessing.Process(target=modules_heartbeat, args=[self.modules])
        self.heartbeat.daemon = True
        self.heartbeat.start()

        try:
            while 1:
                while self.current_connections >= self.max_connections:
                    time.sleep(0.5)

                pair = s.accept()
                log.info(_("Accepted connection"))
                if not pair == None:
                    self.current_connections += 1
                    connection, address = pair
                    channel = SMTPChannel(self, connection, address)
                    asyncore.loop()

        except Exception, errmsg:
            traceback.print_exc()
            s.shutdown(1)
            s.close()

        # shut down hearbeat process
        self.heartbeat.terminate()

    def data_header(self, mailfrom, rcpttos):
        COMMASPACE = ', '
        return "X-Kolab-From: " + mailfrom + "\r\n" + \
                "X-Kolab-To: " + COMMASPACE.join(rcpttos) + "\r\n"
Пример #6
0
 def collect_incoming_data(self, data):
     SMTPChannel.collect_incoming_data(self, data)
     self.datalen += len(data)
     self.datalen += 1
Пример #7
0
 def smtp_DATA(self, arg):
     SMTPChannel.smtp_DATA(self, arg)
Пример #8
0
 def smtp_RCPT(self, arg):
     SMTPChannel.smtp_RCPT(self, arg)
Пример #9
0
 def smtp_MAIL(self, arg):
     SMTPChannel.smtp_MAIL(self, arg)
Пример #10
0
 def __init__(self, server, conn, addr, smtpid):
     SMTPChannel.__init__(self, server, conn, addr)
     self.smtpid = smtpid
     self.datalen = 0
Пример #11
0
 def __init__(self, server, conn, addr, fqdn=None):
     MailSink.addr2fqdn[addr] = fqdn
     SMTPChannel.__init__(self, server, conn, addr)