Walidacja powinna być wielopoziomowa, w zależności od tego w jaki sposób piszesz aplikację.
Gdy mówimy o aplikacji internetowej - po stronie końcowego użytkownika - problematyczną jest sama konieczność weryfikowania jakichkolwiek danych, które idą przez system. Wpływa to na UX strony. Nie zmienia to faktu, że czasem wymogiem biznesu jest sprawdzanie poprawności danych już na tym etapie (na przykład interfejs konta bankowego).
Reszta powinna się dziać już w warstwie aplikacji. Wystarczy zrobić prostą weryfikację parametru otrzymanego w Query Param lub inną metodą. Wtedy powinien być rzucany wyjątek który zostanie obsłużony przez formularz za pomocją JavaScriptu, czy czego tam chcesz po stronie GUI.
Do warstwy dziedziny przyjmuje się, że powinien już trafiać obiekt wcześniej zwalidowany, a więc i zawsze prawidłowy. Więc serwisy, które są w Infrastrukturze powinny również mieć możliwość odrzucenia nieprawidłowego adresu email.
To raczej ogólne spostrzeżenia.
Możesz też poczytać tu:
https://zawarstwaabstrakcji.pl/20170309-walidacja-w-architekturze-wielowarstwowej/