Зачем вам изобретать велосипед? Существует много реализаций для обеих сторон, которые отлично справляются со своей задачей и хорошо протестированы.
Какая функция вам не хватает, скажем, Postfix (сервер) и Outlook (клиент)?
Если вы все еще хотите начать, спросите себя
- как создавать сокеты TCP и читать / писать в них
- как сделать соединение и пул потоков
- как реализовать конечный автомат
- что вы делаете со смежными темами? (SPF, DKIM, хранилище mbox, хранилище Maildir)
- что вы собираетесь использовать для аутентификации и авторизации пользователя
- (... введите здесь сотни других вещей ...)