What are practices about using email addresses as the primary key? Should I avoid it and use an auto incremented ID number instead or is the engine able to handle it just as well?
MySQL database but i'm interested in how other engines might handle this (PostgreSQL specially).
You should always have a unique integer primary key that has no business value. This is then referred to as a surrogate key.
You should store the email address itself in another field, frequently with an index so it can act as a key for lookups.
This will enable you to provide functionality that is based on locating the user based on using the email address for lookup. Any other functionality at that point then uses that records primary key for other operations, e.g. updating the users address.