#java #jakarta-mail
#java #джакарта-почта
Вопрос:
Я возился с JavaMail API и постоянно сталкивался с MailConnectException и SocketTimeoutException вскоре после попытки быстрого открытия многих сеансов (~ 50) одновременно (т. Е. пытался войти во множество разных почтовых учетных записей одновременно).
Я никогда не сталкивался с этими ошибками при входе в одну учетную запись одновременно с промежутками примерно 3-5 секунд между запросами на вход.
Существует ли квота, которую Yahoo, Google и другие почтовые провайдеры устанавливают на количество рукопожатий, которые могут быть выполнены за заданный промежуток времени для запросов IMAP, POP3 и SMTP? Если да, есть ли какой-либо способ обойти это ограничение?
Или есть что-то еще, что может быть причиной MailConnectException?
Комментарии:
1. Почти каждый провайдер вводит ограничения на использование API для своих сервисов. В зависимости от поставщика, они будут сообщаться в их документации API или не будут сообщаться вообще, и вам придется узнавать о них методом проб и ошибок и внешними ресурсами. Последнее иногда может расстраивать.
Ответ №1:
Провайдеры обычно реализуют как минимум 3 уровня защиты сервиса:
- Сетевой уровень; Большинство из них реализуют защиту от SYN-флудов.
- Аутентификация; Большинство из них будут реализовывать защиту от злоупотребления аутентификацией. Частота / rate аутентификации, вероятно, здесь является лишь верхушкой айсберга. Репутация, разнообразие геолокации, шаблоны преобразования идентификатора пользователя в IP и другие факторы, вероятно, более распространены для защиты авторизации.
- Уровень сервиса / протокола; Большинство из них реализуют защиту, специфичную для протокола, от таких вещей, как нарушения rfc, массовое потребление полосы пропускания и злоупотребление / спам.
Лучший способ избежать их — это кодировать в соответствии с опубликованными рекомендациями (например, rfc2683) и таким образом, чтобы казалось, что у вас есть четко понятная цель для выполнения того, что вы делаете. Например:
- POP3 действительно не имеет хорошего варианта использования для необходимости 50 одновременных подключений
- SMTP / отправка с 50 одновременными подключениями очень похожа на рассылку спама
- IMAP с 50 одновременными подключениями, возможно, понятен, если клиент хочет выполнить сеанс для каждой папки, а их 50 папок … но даже тогда провайдеры могут отказаться от поддержки этого варианта использования и в любом случае ограничить одновременные подключения.