Если я понимаю ваш вопрос, вам нужно использовать И вместо ГДЕ:
ON (m.to_message LIKE a.h_email AND a.h_email LIKE '%@%') OR (...
Я думаю, вы могли бы иметь в виду =
вместо LIKE для первого теста, который дал бы это:
ON (m.to_message = a.h_email AND a.h_email LIKE '%@%') OR (...
Или, может быть, вам просто нужно это:
ON m.to_message = a.h_email
В отличие от LIKE, проверка на равенство не будет выполнена, если a.h_email
пусто, но m.to_message
не пусто.