From documentation:
To comply with the
SQLstandard,INreturnsNULLnot only if the expression on the left hand side isNULL, but also if no match is found in the list and one of the expressions in the list isNULL.
This is exactly your case.
Both IN and NOT IN return NULL which is not an acceptable condition for WHERE clause.
Rewrite your query as follows:
SELECT *
FROM match m
WHERE NOT EXISTS
(
SELECT 1
FROM email e
WHERE e.id = m.id
)