Impacted versions:

8.0

Steps to reproduce:

To reproduce this one, you have to configure outgoing and incoming server and mail aliases

see https://youtu.be/-HzDGh9C9Jc

Current behavior:

If you add a user which has no acces on a object (purchase.order in this case) as follower on a record of this object **AFTER someone has responded by email on this record**, and if you send an message on this record, an exception is raised at the connection of the user added as a follower.

Expected behavior:

No exceptions should be raised at the connection of the user added as a follower.

Video/Screenshot link (optional):

https://youtu.be/-HzDGh9C9Jc

context = dict(context or {})
        default_starred = context.pop('default_starred', False)
        if 'email_from' not in values:  
            values['email_from'] = self._get_default_from(cr, uid, context=context)
        if not values.get('message_id'):
            values['message_id'] = self._get_message_id(cr, uid, values, context=context)
        if 'reply_to' not in values:
            values['reply_to'] = self._get_reply_to(cr, uid, values, context=context)
        if 'record_name' not in values and 'default_record_name' not in context:
            values['record_name'] = self._get_record_name(cr, uid, values, context=context)
        newid = super(mail_message, self).create(cr, uid, values, context)
        self._notify(cr, uid, newid, context=context,
                     force_send=context.get('mail_notify_force_send', True),
                     user_signature=context.get('mail_notify_user_signature', True))
        
        
        
        
        
        
        if default_starred:
            self.set_message_starred(cr, uid, [newid], True, context=context)
        return newid
    def read(self, cr, uid, ids, fields=None, context=None, load='_classic_read'):
        """ Override to explicitely call check_access_rule, that is not called
            by the ORM. It instead directly fetches ir.rules and apply them. """
        self.check_access_rule(cr, uid, ids, 'read', context=context)
        res = super(mail_message, self).read(cr, uid, ids, fields=fields, context=context, load=load)
        return res
    def unlink(self, cr, uid, ids, context=None):