You might not need to store plaintext email addresses
This scheme struggles in the face of email address case folding.<p>At the protocol level, email addresses are case-folded on the RHS but case-sensitive on the LHS. So it’s crucial that LHS case is preserved by delivery systems. Unfortunately most users then treat them as folded on both. So you can successfully verify one variant, store the downcased hash, and it’ll subsequently match but delivery bounces.  Or, hash the exact original input but have many baffled users unable to access their accounts.  Neither is a good outcome.<p>This is not an edge behaviour either, I have tons of users that mix up their email capitalisation from day to day.