Как создать почтовый клиент «POP3 + SSL» с библиотекой Poco C ++ (с OpenSSL)? - PullRequest
0 голосов
/ 31 октября 2019

У меня есть почтовый сервер POP3 с включенным SSL / TLS, войдите под именем пользователя / паролем. И мне нужно разработать почтовый клиент с библиотекой Poco C ++ (построенной с OpenSSL) для загрузки электронной почты с сервера. Но у меня возникла проблема с логином на этапе аутентификации.

Мне удалось скомпилировать мой почтовый клиент с библиотекой Poco C ++ (построенной с OpenSSL). Согласно моему журналу, клиент инициировал SSL, но заблокирован на этапе входа в систему, получая сообщение об ошибке «соединение сброшено узлом», которое выглядит так, как будто сервер не позволяет войти в систему или аутентификация не может успешно пройти.

Я использую строку ниже, чтобы запустить SSL (только для тестирования), и принимаю любой сертификат сервера и отключаю проверку. Я не настраиваю сертификат локального клиента для клиента:

Poco::Net::initializeSSL();
...
pCert = new AcceptCertificateHandler(false); // accept server certificate in default
pContext = new Context(Context::CLIENT_USE, "", "", "", Context::VERIFY_NONE, 9, false, "ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH");
SSLManager::instance().initializeClient(0, pCert, pContext);

Вышеприведенный код выполняется без ошибок / исключений. Я создал свой клиент POP3 + SSL, который унаследован от класса Poco «POP3ClientSession», добавив поддержку SSL. Ниже приведен код, создающий этот сеанс клиента, и попробуйте войти в систему:

SecuredPOP3ClientSession ppcs = new SecurePOP3ClientSession(EMAIL_SERVER, EMAIL_SERVER_PORT);
ppcs->login(username, password);

А затем происходит сбой при функции login (), получая сообщение об ошибке «сброс соединения через одноранговый узел» через одну минуту ожидания.

DoМне нужно создать какой-либо локальный файл конфигурации для подключения SSL? В моем тесте мне не нужен закрытый ключ / сертификат, и я также не проверяю сертификат сервера.

В библиотеке Poco он не охватывает сценарий клиента "POP3 + SSL", поэтому мне нужночтобы создать его самостоятельно, поэтому я ссылаюсь на класс «SecureSMTPClientSession», основанный на классе «SMTPClientSession».

Есть ли у кого-нибудь опыт по созданию клиента «POP3 + SSL» с библиотекой Poco C ++. Пожалуйста, поделитесь своим опытом и комментариями, которые будут высоко оценены.

...