А зачем это делать на уровне приложения?
Можно использовать для этого любой MTA, который умеет внешнюю авторизацию, и выполнение внешних команд, при получении сообщений. Например, какой-нибудь Postfix. И к нему интегрировать вашу авторизацию и ваши обработчики сообщений.