def tell(self, msg, action, learnas='<STR_LIT>'):
action = _check_action(action)<EOL>mode = learnas.upper()<EOL>headers = {<EOL>'<STR_LIT>': '<STR_LIT>',<EOL>'<STR_LIT>': '<STR_LIT>',<EOL>}<EOL>if action == '<STR_LIT>':<EOL><INDENT>if mode == '<STR_LIT>':<EOL><INDENT>headers['<STR_LIT>'] = '<STR_LIT>'<EOL><DEDENT>elif mode in ['<STR_LIT>', '<STR_LIT>', '<STR_LIT>']:<EOL><INDENT>headers['<STR_LIT>'] = '<STR_LIT>'<EOL><DEDENT>else:<EOL><INDENT>raise SpamCError('<STR_LIT>')<EOL><DEDENT><DEDENT>elif action == '<STR_LIT>':<EOL><INDENT>del headers['<STR_LIT>']<EOL>del headers['<STR_LIT>']<EOL>headers['<STR_LIT>'] = '<STR_LIT>'<EOL><DEDENT>elif action == '<STR_LIT>':<EOL><INDENT>headers['<STR_LIT>'] = '<STR_LIT>'<EOL>headers['<STR_LIT>'] = '<STR_LIT>'<EOL><DEDENT>elif action == '<STR_LIT>':<EOL><INDENT>headers['<STR_LIT>'] = '<STR_LIT>'<EOL>headers['<STR_LIT>'] = '<STR_LIT>'<EOL><DEDENT>return self.perform('<STR_LIT>', msg, headers)<EOL>
Tell what type of we are to process and what should be done
        with that message. This includes setting or removing a local
        or a remote database (learning, reporting, forgetting, revoking).