Вопрос или проблема
Я хочу использовать openssl s_client для доступа к серверу Gmail POP3S. Я делаю следующее:
$ openssl s_client -connect pop.gmail.com:995
+OK Gpop готов к запросам от <удалено: ip> d11pf35377217wam.36
USER <удалено: [email protected]>
+OK отправьте PASS
PASS <удалено: пароль>
+OK Добро пожаловать.
LIST
+OK 1 сообщение (2197 байт)
1 2197
.
STAT
+OK 1 2197
RETR 1
RENKVOTING
Проблема в том, что я никогда не могу выполнить команду RETR. Она всегда зависает, когда “RENKVOTING”.
Что я упускаю?
У меня была аналогичная проблема при тестировании SSL-соединения с SMTP-сервером GMail.
Команды AUTH
и MAIL FROM
работали нормально, но когда я попробовал RCPT TO
, сервер вернул ответ RENKVOTING
.
После того, как я довольно долго искал, я наконец нашел сайт, который объяснял, что происходит.
По всей видимости, заглавная буква R
в начале команды (RCPT TO
для SMTP и RETR
для POP3) заставляет инструмент s_client произвести повторнуюNegotiation с сервером.
В странице man для s_client есть информация в разделе “CONNECTED COMMANDS”.
Мне удалось запустить мой тест SMTP, используя команды в нижнем регистре (rcpt to
). Я только что попробовал тест с POP3-сервером GMail, и использование retr 1
работает хорошо.
Ответ или решение
Проблема, с которой вы столкнулись при использовании команды openssl s_client
для доступа к серверу POP3S Gmail, связана с регистром символов, который вы используете в командах. Давайте внимательно разберем ваши шаги и найдем решение.
Исходная Проблема
При выполнении команды RETR 1
вы заметили, что соединение «зависает» с ответом «RENEGOTIATING», что говорит о том, что сервер пытается выполнить повторную onderhandelen SSL. Это происходит потому, что сервер POP3 обрабатывает команды в определенном регистре, и использование заглавных букв может влиять на это. Судя по предоставленной информации, команды, которые вы выполняете, должны быть в нижнем регистре.
Разбор
Вы правильно выполнили первичные шаги для подключения к серверу:
$ openssl s_client -connect pop.gmail.com:995
Затем вы успешно авторизовались:
USER <ваш email>
PASS <ваш пароль>
После этого вы запросили список сообщений с помощью команды LIST
, и всё прошло успешно:
LIST
+OK 1 messages (2197 bytes)
1 2197
Однако, при вызове команды RETR 1
возникла проблема.
Решение Проблемы
Как вы уже обнаружили, использование символов в верхнем регистре может привести к нежелательным последствиям. Поэтому вам следует попробовать выполнить команду retr 1
в нижнем регистре:
retr 1
Важный момент заключается в том, что сервера, использующие протоколы, чувствительны к регистру, и это может повлиять на обработку команд. В случае с Gmail, использование команды в нижнем регистре должно устранить зависание, и вы сможете получить желаемое сообщение без проблемы с «RENEGOTIATING».
Подводя Итоги
Чтобы устранить проблему с зависанием при выполнении команды RETR
с использованием openssl s_client
, используйте следующие рекомендации:
- Используйте команды в нижнем регистре. Например:
retr 1
вместоRETR 1
. - Проверяйте, что команды отправляются без лишних символов. Например, убедитесь, что вы не добавили дополнительные пробелы.
- Будьте внимательны к сообщениям от сервера. Ответы сервера могут дать представление о том, как он обрабатывает ваши запросы.
Следуя этим рекомендациям, вы должны успешно выполнять команды без возникновения проблемы с «RENEGOTIATING». Если же проблема всё еще проявляется, рекомендуется проверить дополнительную информацию о конфигурации OpenSSL и специфичные особенности сервера Gmail.