How to create custom user model

I just want to know how to create custom User model by extending default user model provided by django.
Suppose I want to add d.o.b field, mobile number and etc, and then want to authenticate user on the basis of email (not by username).