Exemple #1
0
    def process(self, data):
        mailpath, filename = self.get_paths(data)

        ## First check integrity
        error = None
        if not access(mailpath, F_OK | R_OK | W_OK):
            error = 'No access to mailpath'
            try:
                makedirs(mailpath, 0700)
                error = None
            except:
                t, val, tb = exc_info()
                del tb
                error = '%s: %s' % (t, val)
                self.LOG(E_ERR, 'Filesystem Backend: Cannot create storage directory: ' + str(val))

        if error is not None:
            return 0, 443, error

        if self.compression is not None:
            name = '%d-%d.eml' % (data['year'], data['pid'])
            comp = CompressedFile(compressor=self.compression[0], ratio=self.compression[1], name=name)
            comp.write(data['mail'])
            data['mail'] = comp.getdata()
            comp.close()

        try:
            fd = open(filename, 'wb')
            fd.write(data['mail'])
            fd.flush()
            fd.close()
            self.LOG(E_TRACE, 'Filesystem Backend: wrote ' + filename)
            return BACKEND_OK
        except:
            t, val, tb = exc_info()
            del tb
            self.LOG(E_ERR, 'Filesystem Backend: Cannot write mail file: ' + str(val))
            return 0, 443, '%s: %s' % (t, val)