Beispiel #1
0
    def get_message(self, msg, smtp, header, nmesg):
        msg_list = []
        iter = 0
        total = 0
        first = 1

        # Some alias to optimize the loop
        readline = self.objpop.file.readline
        #takefrom = general.takefrom

        (optv, optquiet, optsmtp, stderr_write,
        msg_size, server_bytes_left, optsyslog, optnotlog, optcolors) = self.optimize(msg)


        self.objpop._shortcmd('RETR %d' % msg['number'])
        while 1:
            iter += 1
            #if ((iter % 200) == 0) and optsmtp:
                #smtp.smtpobj.noop()
            buffer = readline()
            if buffer[-2:] == '\r\n':
                if buffer[-3:] == '.\r\n': pass
                else:
                    buffer = buffer[:-2] + '\n'

            if first:
                #fromm = takefrom(buffer)
                try:
                    rfcObj = rfc822.Message(StringIO.StringIO(buffer))
                    fromm = rfcObj.getheader('Return-Path').replace("<","").replace(">","")
                except AttributeError: # Return-Path is not the first line,well...
                    fromm = 'Unknown'
                first = 0
                if not optsyslog:
                    print general.colorize(_("From: %s") % fromm, general.YELLOW)
                #end if not optsyslog
            #end if first
            if not optv:
                lenb = len(buffer)
                total += lenb
                self.totalserv += lenb
                # De aquí para abajo podría ir en el padre pero se pierde mucho rendimiento (quiero
                # macros en Python YA!)
                if not optsyslog and not optquiet:
                    stderr_write('\r')
                    if iter % 5 == 0:
                        strtmp = general.colorize(_("Downloaded: "),general.YELLOW)
                        strtmp2 = general.colorize("%3.0f%%" % (total / ( (msg_size + 0.001) * 1.0) * 100.0), general.WHITE)
                        stderr_write(strtmp + strtmp2)

                    #end if iter % 5 == 0
                #end if not optsyslog and not optquiet
            #end if not optv

            if buffer == '.\r\n':
                return ''.join(msg_list), fromm, ''
            else:
                msg_list.append(buffer)
Beispiel #2
0
        def get_messages(self, logAgent, indice_log, is_retry, smtp):
            nmesg = len(self.lmsg)
            general.cursor_off()
            header = ''
            fromwho = ''

            if self.delivery == 'mta':
                    deliver = self.deliver_smtp
            elif self.delivery == 'mbox':
                    deliver = self.deliver_mbox
            elif self.delivery == 'maildir':
                    deliver = self.deliver_maildir
            elif self.delivery == 'pipe':
                    deliver = self.deliver_pipe
            elif self.delivery == 'global':
                    if self.config.optsmtp:
                                deliver = self.deliver_smtp
                    elif self.config.optmbox:
                                deliver = self.deliver_mbox
                    elif self.config.optmaildir:
                                deliver = self.deliver_maildir
                    elif self.config.optsendmail:
                                deliver = self.deliver_pipe

            num_trans = 0
            retcode = 'pass'
            for msg in self.lmsg[:]:
                    must_deliver = True
                    num_trans += 1
                    (size, unit) = general.compute(msg['size'])

                    if not self.config.optsyslog:
                                aprint('-'* 21, general.GREEN)
                    if self.config.optexpresion:
                                (retcode, header, fromwho) = self.look_message(msg,logAgent,indice_log,nmesg - num_trans,smtp)
                                if retcode == 'delete': #Deleted
                                    if self.config.optsmtp:
                                            smtp.smtpobj.noop()
                                    continue
                    # end if self.config.optexpresion

                    aprint(_("Downloading message %d (%.2f %s), Left: %d") % (msg['orignumber'], size, unit, nmesg - num_trans),general.VIOLET)
                    
                    (msgbody, fromm, tmpheader) = self.get_message(msg, smtp, header, nmesg)
                    if fromm != '' and fromwho == '':
                                fromwho = fromm

                    if tmpheader != '':
                                header = tmpheader

                    if not self.config.optsyslog and not self.config.optquiet:
                                sys.stderr.write(general.colorize(_("\rDownloaded: "),general.YELLOW))
                                sys.stderr.write(general.colorize("100%\n",general.WHITE))


                    # If self.config.optexpression we've already looked for the IMAP
                    # DONTDELETETHISMESSAGE messages in the look_header method
                    if not self.config.optexpresion:
                        if msg['orignumber'] == 1:
                            resultWUIMAP = re_wuimap.search(msgbody)
                            resultWUIMAP2 = re_wuimap.search(header)
                            if (resultWUIMAP is not None) or (resultWUIMAP2 is not None):
                                aprint(_("Ignoring message %d: DONTDELETETHISMESSAGE type message") % (msg['orignumber']), general.RED)
                                retcode = 'wuimap'

                    if retcode == 'wuimap': must_deliver = False

                    try:
                                if retcode == 'postergate': #Message delayed
                                    animailBoxPath = self.config.homedir + '/.animail/animailDelayed'
                                    if not os.path.exists(animailBoxPath):
                                            os.mkdir(animailBoxPath, 0700)
                                    (foo,emailaddress) = rfc822.parseaddr(fromwho)
                                    tmpbox = open(animailBoxPath + '/' + emailaddress, 'a+')
                                    self.write_mbox(tmpbox, header, msgbody, fromm)
                                else:
                                    if retcode != 'wuimap': must_deliver = True
                                    if (self.config.lpostfilters != []) and (retcode != 'wuimap'):
                                        msgstr = self.create_msgstr(header,msgbody)
                                        tmpfile = open(tempfile.mktemp(), 'w+')
                                        os.chmod(tmpfile.name, 600)
                                        tmpfile.write(msgstr)

                                        for pfilter in self.config.lpostfilters:
                                            output = ''
                                            aprint(_("Executing postfilter %s on message...") % pfilter.filtername, general.YELLOW)
                                            (pretcode, output) = pfilter.filter_mail(msgstr,tmpfile.name)
                                            if pretcode == 1:
                                                must_deliver = False
                                                if not self.config.optnotlog: logAgent.append_filtered(indice_log,_("%s (Postfiltered by'%s')")%(fromm,pfilter.filtername),msg['size'])
                                                if pfilter.savepostfilteredmails != 0:
                                                    pfilter.log_filtered_mail(msgstr,fromm, output)
                                        tmpfile.close()
                                        os.unlink(tmpfile.name)
                                    if must_deliver:
                                        deliver(header, msgbody, fromm, smtp)

                                if self.optdelete and retcode != 'wuimap':
                                    aprint(_("Deleting message"), general.YELLOW)
                                    self.delmesg(msg)
                    except SMTPException, x:
                                print
                                print _("The local SMTP rejected this message so it won't be deleted from the mail server:"), str(x)
                                smtp.quit()
                                smtp.connect()
                                if not self.config.optnotlog:
                                    logAgent.incident(indice_log, str(x))
                    except socket.error, x:
                                print
                                print _("Socket error sending to the local SMTP, it won't be deleted from the mail server:"), str(x)
                                try:
                                    smtp.quit()
                                    smtp.connect()
                                except AttributeError: pass
                                if not self.config.optnotlog:
                                    logAgent.incident(indice_log, str(x))
                                continue
Beispiel #3
0
    def get_message(self, msg, smtp, header, nmesg):
        #Some alias to optimize the loop
        readline = self.objimap._get_line

        (optv, optquiet, optsmtp, stderr_write, msg_size, server_bytes_left,\
        optsyslog, optnotlog, optcolors) = self.optimize(msg)

        #if optsmtp:
            #smtp_noop = smtp.smtpobj.noop

        total = 0
        msg_list = []
        fromm = self.takefrom(msg['number'])
        if not optsyslog: print colorize(_("From: %s") % fromm, YELLOW)
        strg = '999 FETCH ' + str(msg['number']) + ' BODY[TEXT]\n'

        if self.ssl: self.objimap.ssl.write(strg)
        else: self.objimap.sock.send(strg)

        linea = readline()
        tokens = linea.split('{')
        try:
            msg_size = int(tokens[len(tokens) - 1].split('}')[0])
        except ValueError:
            msg_size = 0
        iter = 0
        first = True

        #This condition is just another kludge, but works and is easier (and more realiable) than
        #the bytes-counting alternative, if you know of some server giving a different fetch
        #completed message please tell me
        lowline = linea.lower()
        while (lowline[0:22] != '999 ok fetch completed') and (lowline[0:16] != '999 ok completed'):
            iter += 1
            #if ((iter % 200) == 0) and optsmtp:
                    #smtp_noop()
            if first:
                    self.server_bytes_left -= len(header)
                    first = False
            #end if first
            linea = readline() + '\n'
            msg_list.append(linea)

            lenb = len(linea) - 1
            total += lenb
            self.totalserv += lenb

            if not optv:
                    self.totalserv += len(linea)
                    # De aquí para abajo podría ir en el padre, pero sería caro en rendimiento
                    # (para cuando macros para Python?)
                    if not optsyslog and not optquiet:
                        stderr_write('\r')
                        if iter % 5 == 0:
                            strtmp = colorize(_("Downloaded: "), YELLOW)
                            strtmp2 = colorize("%3.0f%%" % (total / ( (msg_size + 0.001) * 1.0) * 100.0), WHITE)
                            stderr_write(strtmp + strtmp2)
            lowline = linea.lower()
        #end while
        if not self.config.optexpresion: header = self.get_header(msg, 0)
        else: header = '' #Already given in look_messages
        return ''.join(msg_list[:-2]), fromm, header
Beispiel #4
0
            def show(self):
                    str = ''
                    tmpstr = colorize(_("\n####### Operation summary #######\n\n"), VIOLET)
                    str = ''.join(tmpstr)
                    #FIXME: This should be on local time format (including weekday names)
                    date = time.strftime( ('%a %b %d %H:%M:%S %Y\n'), time.localtime(time.time()))
                    str = ''.join( (str, colorize(date, GREEN)) )
                    for serv in self.lserv.values():
                            tmpstr = colorize(_("\n--- Server: "), CYAN)
                            tmpstr2 = colorize("%s\n\n" % serv['name'], RED)
                            str = ''.join( (str, tmpstr, tmpstr2) )

                            tmpstr = colorize(_("* Total messages: "), CYAN)
                            tmpstr2 = colorize("%s\n" % serv['numtotal'], GREEN)
                            str = ''.join( (str, tmpstr, tmpstr2) )

                            tmpstr = colorize(_("* Total volume on server: "), CYAN)
                            tmpstr2 = colorize("%.2f %s\n" % (compute(serv['tamtotal'])), GREEN)
                            str = ''.join( (str, tmpstr, tmpstr2) )

                            tmpstr = colorize(_("* Filtered messages: "), CYAN)
                            tmpstr2 = colorize("%d\n" % serv['numfilt'], GREEN)
                            str = ''.join( (str, tmpstr, tmpstr2) )
                            if serv['numfilt'] > 0:
                                    tmpstr = colorize(_("\tTotal filtered volume: "), CYAN)
                                    tmpstr2 = colorize("%.2f %s\n" % compute(serv['filtered_vol']), RED)
                                    str = ''.join( (str, tmpstr, tmpstr2) )

                            tmpstr = colorize(_("* Downloaded messages: "), CYAN)
                            tmpstr2 = colorize("%d\n" % serv['numdesc'], GREEN)
                            str = ''.join( (str, tmpstr, tmpstr2) )
                            if serv['numdesc'] > 0:
                                    tmpstr = colorize(_("\tDownloaded Volume: "), CYAN)
                                    tmpstr2 = colorize("%.2f %s\n" % compute(serv['downloaded_vol']), GREEN)
                                    str = ''.join( (str, tmpstr, tmpstr2) )

                            tmpstr = colorize(_("* Postergated messages: "), CYAN)
                            tmpstr2 = colorize("%d\n" % serv['numpost'], GREEN)
                            str = ''.join( (str, tmpstr, tmpstr2) )
                            if serv['numpost'] > 0:
                                    tmpstr = colorize(_("\tPostergated Volume: "), CYAN)
                                    tmpstr2 = colorize("%.2f %s\n" % compute(serv['post_vol']),GREEN)
                                    str = ''.join( (str,tmpstr,tmpstr2) )

                            if serv['numfilt'] > 0:
                                    tmpstr = colorize(_("\n* Patterns of filtered messages:\n"), CYAN)
                                    str = ''.join( (str, tmpstr) )
                                    for pattern in serv['dfilt'].keys():
                                        str = ''.join( (str, colorize("\t%d" % serv['dfilt'][pattern][NUMBER],RED)) )
                                        str = ''.join( (str, colorize(" %s " % pattern, RED)))
                                        str = ''.join( (str, colorize("\t\t%.2f %s\n" % compute(serv['dfilt'][pattern][VOLUME]), RED)) )

                            if serv['numdesc'] > 0:
                                    tmpstr = colorize(_("* Origin of downloaded messages:\n"), CYAN)
                                    str = ''.join( (str, tmpstr) )
                                    for origin in serv['ddesc'].keys():
                                        str = ''.join( (str, colorize("\t%d" % serv['ddesc'][origin][NUMBER], GREEN)))
                                        str = ''.join( (str, colorize(" %s " % origin, GREEN)))
                                        str = ''.join( (str, colorize("%.2f %s\n" % compute(serv['ddesc'][origin][VOLUME]), GREEN)))

                            if serv['numpost'] > 0:
                                    tmpstr = colorize(_("* Origin of postergated messages:\n"),CYAN)
                                    str = ''.join( (str, tmpstr) )
                                    for origin in serv['dpost'].keys():
                                        str = ''.join( (str,colorize("\t%d" % serv['dpost'][origin][NUMBER], GREEN)))
                                        str = ''.join( (str, colorize(" %s " % origin, GREEN)))
                                        str = ''.join( (str, colorize("%.2f %s\n" % compute(serv['dpost'][origin][VOLUME]),GREEN)))

                            if serv['incidents'] != []:
                                    tmpstr = colorize(_("* Incidents:\n"), CYAN)
                                    str = ''.join( (str, tmpstr) )
                                    for inc in serv['incidents']:
                                        str = ''.join( (str, colorize("\t-%s\n" % inc, RED)) )
                    print str
Beispiel #5
0
        def get_messages(self, logAgent, indice_log, is_retry, smtp):
            nmesg = len(self.lmsg)
            general.cursor_off()
            header = ''
            fromwho = ''

            if self.delivery == 'mta':
                    deliver = self.deliver_smtp
            elif self.delivery == 'mbox':
                    deliver = self.deliver_mbox
            elif self.delivery == 'maildir':
                    deliver = self.deliver_maildir
            elif self.delivery == 'pipe':
                    deliver = self.deliver_pipe
            elif self.delivery == 'global':
                    if self.config.optsmtp:
                                deliver = self.deliver_smtp
                    elif self.config.optmbox:
                                deliver = self.deliver_mbox
                    elif self.config.optmaildir:
                                deliver = self.deliver_maildir
                    elif self.config.optsendmail:
                                deliver = self.deliver_pipe

            num_trans = 0
            retcode = 'pass'
            for msg in self.lmsg[:]:
                    must_deliver = True
                    num_trans += 1
                    (size, unit) = general.compute(msg['size'])

                    if not self.config.optsyslog:
                                aprint('-'* 21, general.GREEN)
                    if self.config.optexpresion:
                                (retcode, header, fromwho) = self.look_message(msg,logAgent,indice_log,nmesg - num_trans,smtp)
                                if retcode == 'delete': #Deleted
                                    if self.config.optsmtp:
                                            smtp.smtpobj.noop()
                                    continue
                    # end if self.config.optexpresion

                    aprint(_("Downloading message %d (%.2f %s), Left: %d (%s)") % (msg['orignumber'], size, unit, nmesg - num_trans, self.alias),general.VIOLET)
                    
                    (msgbody, fromm, tmpheader) = self.get_message(msg, smtp, header, nmesg)
                    if fromm != '' and fromwho == '':
                                fromwho = fromm

                    if tmpheader != '':
                                header = tmpheader

                    if not self.config.optsyslog and not self.config.optquiet:
                                sys.stderr.write(general.colorize(_("\rDownloaded: "),general.YELLOW))
                                sys.stderr.write(general.colorize("100%\n",general.WHITE))


                    # If self.config.optexpression we've already looked for the IMAP
                    # DONTDELETETHISMESSAGE messages in the look_header method
                    if not self.config.optexpresion:
                        if msg['orignumber'] == 1:
                            resultWUIMAP = re_wuimap.search(msgbody)
                            resultWUIMAP2 = re_wuimap.search(header)
                            if (resultWUIMAP is not None) or (resultWUIMAP2 is not None):
                                aprint(_("Ignoring message %d: DONTDELETETHISMESSAGE type message") % (msg['orignumber']), general.RED)
                                retcode = 'wuimap'

                    if retcode == 'wuimap': must_deliver = False

                    try:
                                if retcode == 'postergate': #Message delayed
                                    animailBoxPath = self.config.homedir + '/.animail/animailDelayed'
                                    if not os.path.exists(animailBoxPath):
                                            os.mkdir(animailBoxPath, 0700)
                                    (foo,emailaddress) = rfc822.parseaddr(fromwho)
                                    tmpbox = open(animailBoxPath + '/' + emailaddress, 'a+')
                                    self.write_mbox(tmpbox, header, msgbody, fromm)
                                else:
                                    if retcode != 'wuimap': must_deliver = True
                                    if (self.config.lpostfilters != []) and (retcode != 'wuimap'):
                                        #FIXME SESSION: En realidad sólo sería necesario pasarle al
                                        #postfiltro el msgstr; después este, en su método
                                        #filter_mail ya se encargaría de crear el archivo temporal,
                                        #y sólo de ser necesario (si el filtro tiene opciones y
                                        #si estas opciones contienen un %M).

                                        #el create_msgstr también podría ir en el postfiltro pero
                                        #depende de la subclase de mailserver (pop3 o imap4). Eso
                                        #habría que arreglarlo definitivamente para que en la clase
                                        #base no se depende del tipo, quizás añadiendo un método a
                                        #las clases derivadas header_and_body o algo así.
                                        
                                        msgstr = self.create_msgstr(header,msgbody)
                                        tmpfile = open(tempfile.mktemp(), 'w+')
                                        os.chmod(tmpfile.name, 0600)
                                        tmpfile.write(msgstr)

                                        # Number of filters that have matched this message:
                                        npositives = 0
                                        # Have we copied this email to the spambox yet?
                                        alreadycopied = 0
                                        for pfilter in self.config.lpostfilters:
                                            output = ''
                                            aprint(_("Executing postfilter %s on message...") % pfilter.filtername, general.YELLOW)
                                            (pretcode, output) = pfilter.filter_mail(msgstr,tmpfile.name)
                                            if pretcode == 1:
                                                # Matched!
                                                npositives += 1

                                                if self.config.allpostfilters and ( npositives != len( self.config.lpostfilters) ):
                                                        # allpostfilters needs all the postfilters to match a 
                                                        # message for having it filtered:
                                                        continue

                                                must_deliver = False
                                                if not self.config.optnotlog: logAgent.append_filtered(indice_log,_("%s (Postfiltered by'%s')")%(fromm,pfilter.filtername),msg['size'])
                                                if pfilter.savepostfilteredmails != 0 and not alreadycopied:
                                                    pfilter.log_filtered_mail(msgstr,fromm, output)
                                                    alreadycopied = 1
                                                if npositives >= self.config.minpostfilters:
                                                    break
                                        tmpfile.close()
                                        os.unlink(tmpfile.name)
                                    if must_deliver:
                                        deliver(header, msgbody, fromm, smtp)

                                if self.optdelete and retcode != 'wuimap':
                                    aprint(_("Deleting message"), general.YELLOW)
                                    self.delmesg(msg)
                    except SMTPException, x:
                                print
                                print _("The local SMTP rejected this message so it won't be deleted from the mail server:"), str(x)
                                smtp.quit()
                                smtp.connect()
                                if not self.config.optnotlog:
                                    logAgent.incident(indice_log, str(x))
                    except socket.error, x:
                                print
                                print _("Socket error sending to the local SMTP, it won't be deleted from the mail server:"), str(x)
                                try:
                                    smtp.quit()
                                    smtp.connect()
                                except AttributeError: pass
                                if not self.config.optnotlog:
                                    logAgent.incident(indice_log, str(x))
                                continue
Beispiel #6
0
        def get_messages(self, logAgent, indice_log, is_retry, smtp):
            nmesg = len(self.lmsg)
            general.cursor_off()
            header = ''
            fromwho = ''

            if self.delivery == 'mta':
                    deliver = self.deliver_smtp
            elif self.delivery == 'mbox':
                    deliver = self.deliver_mbox
            elif self.delivery == 'maildir':
                    deliver = self.deliver_maildir
            elif self.delivery == 'pipe':
                    deliver = self.deliver_pipe
            elif self.delivery == 'global':
                    if self.config.optsmtp:
                                deliver = self.deliver_smtp
                    elif self.config.optmbox:
                                deliver = self.deliver_mbox
                    elif self.config.optmaildir:
                                deliver = self.deliver_maildir
                    elif self.config.optsendmail:
                                deliver = self.deliver_pipe

            num_trans = 0
            retcode = 'pass'
            for msg in self.lmsg[:]:
                    must_deliver = 1
                    num_trans += 1
                    (size, unit) = general.compute(msg['size'])

                    if not self.config.optsyslog:
                                aprint('-'* 21, general.GREEN)
                    if self.config.optexpresion:
                                (retcode, header, fromwho) = self.look_message(msg,logAgent,indice_log,nmesg - num_trans,smtp)
                                if retcode == 'delete': #Deleted
                                    if self.config.optsmtp:
                                            smtp.smtpobj.noop()
                                    continue
                    # end if self.config.optexpresion

                    aprint(_("Downloading message %d (%.2f %s), Left: %d") % (msg['number'], size, unit, nmesg - num_trans),general.VIOLET)
                    
                    (msgbody, fromm, tmpheader) = self.get_message(msg, smtp, header, nmesg)
                    if fromm != '' and fromwho == '':
                                fromwho = fromm

                    if tmpheader != '':
                                header = tmpheader

                    if not self.config.optsyslog and not self.config.optquiet:
                                sys.stderr.write(general.colorize(_("\rDownloaded: "),general.YELLOW))
                                sys.stderr.write(general.colorize("100%\n",general.WHITE))


                    # If self.config.optexpression we've already looked for the IMAP
                    # DONTDELETETHISMESSAGE messages in the look_header method
                    if not self.config.optexpresion:
                        if msg['number'] == 1:
                            resultWUIMAP = re_wuimap.search(msgbody)
                            resultWUIMAP2 = re_wuimap.search(header)
                            if (resultWUIMAP is not None) or (resultWUIMAP2 is not None):
                                aprint(_("Ignoring message %d: DONTDELETETHISMESSAGE type message") % (msg['number']), general.RED)
                                retcode = 'wuimap'

                    if retcode == 'wuimap': must_deliver = 0

                    try:
                                if retcode == 'postergate': #Message delayed
                                    animailBoxPath = self.config.homedir + '/.animail/animailDelayed'
                                    if not os.path.exists(animailBoxPath):
                                            os.mkdir(animailBoxPath, 0700)
                                    (foo,emailaddress) = rfc822.parseaddr(fromwho)
                                    tmpbox = open(animailBoxPath + '/' + emailaddress, 'a+')
                                    self.write_mbox(tmpbox, header, msgbody, fromm)
                                else:
                                    if retcode != 'wuimap': must_deliver = 1
                                    if (self.config.lpostfilters != []) and (retcode != 'wuimap'):
                                        msgstr = self.create_msgstr(header,msgbody)
                                        tmpfile = open(tempfile.mktemp(), 'w+')
                                        os.chmod(tmpfile.name, 600)
                                        tmpfile.write(msgstr)

                                        for pfilter in self.config.lpostfilters:
                                            output = ''
                                            aprint(_("Executing postfilter %s on message...") % pfilter.filtername, general.YELLOW)
                                            (pretcode, output) = pfilter.filter_mail(msgstr,tmpfile.name)
                                            if pretcode == 1:
                                                must_deliver = 0
                                                if not self.config.optnotlog: logAgent.append_filtered(indice_log,_("%s (Postfiltered by'%s')")%(fromm,pfilter.filtername),msg['size'])
                                                if pfilter.savepostfilteredmails != 0:
                                                    pfilter.log_filtered_mail(msgstr,fromm, output)
                                        tmpfile.close()
                                        os.unlink(tmpfile.name)
                                    if must_deliver:
                                        deliver(header, msgbody, fromm, smtp)

                                if self.optdelete and retcode != 'wuimap':
                                    aprint(_("Deleting message"), general.YELLOW)
                                    self.delmesg(msg)
                    except SMTPException, x:
                                print
                                print _("The local SMTP rejected this message so it won't be deleted from the mail server:"), str(x)
                                smtp.quit()
                                smtp.connect()
                                if not self.config.optnotlog:
                                    logAgent.incident(indice_log, str(x))
                    except socket.error, x:
                                print
                                print _("Socket error sending to the local SMTP, it won't be deleted from the mail server:"), str(x)
                                try:
                                    smtp.quit()
                                    smtp.connect()
                                except AttributeError: pass
                                if not self.config.optnotlog:
                                    logAgent.incident(indice_log, str(x))
                                continue