Я бы предложил (как возможность рассмотреть среди других) использовать два отдельных поля:
Первый из них всегда сложен и, следовательно, может быть однозначно индексирован в агностической базе данных, а второе поле хранится дословно, что пользователь вводил и может иметь верхние символы.
Очевидно, что в модели пользователя необходимо настроить электронную почту на основе email_original при каждом сохранении и запретить прямое манипулирование с полем электронной почты.