There are plenty of online guides that explain how to configure Exchange Online to allow external mail forwarding. This isn’t another one, try Microsoft’s own guide if that is what you are looking for. We’re talking about a situation I recently encountered in which mail forwarding was correctly configured (via the linked doc), but still not working.
The problem turned out to be a guest account that contained an email address that matched the forwarding target’s address. I deleted the guest account and replaced it with a mail contact. Everything worked normally afterward.
You may be wondering why I didn’t just configure forwarding to point at the guest account instead of deleting it. That is because there’s no option to do so as far as I can tell. Exchange Online’s people picker does not seem to recognize guest accounts.
The existence of the guest account prevented me from creating a mail contact because another Azure AD object contained the same address. You can’t have multiple objects with the same SMTP address in the same tenant space. Except when you manually enter and SMTP address in the forwarding target of a mailbox?