1) Ищете в Гугле "C# mail server".
2) Тут же находите: www.ericdaugherty.com/dev/cses
3) Разбираетесь с исходными текстами, особенно с работой POP3
4) Ищете в Гугле "C# imap" и находите кучу примеров клиента
5) Добавляете в сервер поддержку IMAP по результатам пунктов 3 и 4
6) Profit!
За каждым языком - своя философия.
Изучайте не инструмент - изучайте образ мыслей его создателя.
Когда поймете общую картину, конкретика станет усваиваться рефлекторно.
2) Костыли наподобие is_string() имеют смысл только в языках с динамической типизацией.
Си++ - это язык со статической типизацией.
Для хранения строк в нём используется класс std::string
Ищите в гугле "документация turbo pascal".
В руководстве программиста есть глава про ООП.
Из всего, что /me читал про ООП, это самое доходчивое описание.
Наследование, инкапсуляция и полиморфизм там описываются.
Компонентное программирование как развитие ООП
отлично разъясняется в первых главах книги Дона Бокса "Essential COM".
Вряд ли здесь вообще нужна очередь, т.к. запросы к разным датчикам друг с другом не связаны, т.е. могут производиться одновременно.
У запроса должны быть атрибуты "датчик" и "подписчики".
Каждый новый запрос имеет одного подписчика - создателя.
Перед созданием нового запроса к датчику проверяется, есть ли уже запрос к нему.
Если есть - туда добавляется ещё один подписчик.
При завершении запроса результат сообщается всем подписчикам.
На Python + Twisted сходу написать такое не смогу, на Perl + AnyEvent или на shell без проблем.
Навыки документирования в карьере не решающие, но полезные.
Очень плохо, что на программировании не учат собственно программированию, но хорошо, что хотя бы знакомят с формалистикой.
Пригодится.
Я бы сначала написал прототип на Си (примеров и документации в сети вагон),
сгенерировал ассемблерный текст и затем писал бы собственный вариант на его базе.