За месяц один и тот же клиент дважды упёрся в лимит почты у меня на хостинге. У него сервис, где пользователи регистрируются по коду из письма. В конце сентября коды перестали приходить.
В ошибке сервер писал про 18 писем в час, и клиент попросил поднять хотя бы до 30. Лимит у него был 5. Я поднял до 60 на ящик. Месяц всё работало.
28 октября он пришёл снова. Попросил 200 писем в час и спросил, насколько вообще можно поднять. Они собираются сделать вход по одноразовым кодам, и писем станет намного больше. Я снял ограничение совсем. Лимит нужен против спама, а коды тут запрашивают сами пользователи. В этой истории собраны почти все грабли почты с хостинга, так что расскажу по порядку.
Сначала о том, зачем хостинг вообще режет почту. Сайты на сервере шлют письма через общий IP. Взломают один сайт, пойдёт спам, и адрес улетит в чёрные списки. Тогда в спам начнут падать письма всех соседей. Поэтому у меня на хостинге отправка по умолчанию выключена. Включает её поддержка по запросу, на тестовом тарифе её нет совсем.
Замков два:
• разрешение на отправку из скриптов, то есть PHP
mail() и sendmail;• лимит писем в час на каждый ящик-отправитель, и для SMTP, и для
mail().Поле с лимитом в панели клиенту не видно, хотя документация ispmanager уверяет, что оно в карточке ящика. Мой бот поддержки в сентябре на этом тоже споткнулся.
Отдельно про текст ошибки. Выглядит он так:
Sender rate overlimit - 18.5 / 1h. 18.5 - это не лимит, а скорость отправки, которую намерил сервер. Дробная часть как раз и выдаёт. Клиент решил, что ему можно 18 в час, а можно было 5. На его месте я бы подумал так же. Отклонённые письма сами не уйдут. Человек нажмёт «отправить ещё раз», и это ещё одно письмо.Хуже, что об отказе часто никто не узнаёт. При отправке через
mail() отказ приходит письмом на адрес отправителя. Если это no-reply@, туда никто не смотрит. Если адрес внешний, отказ уходит со служебного адреса моего сервера.Тут косяк мой. SPF-запись у этого адреса появилась только 4 октября. Gmail с тех пор такие уведомления принимает, Яндекс нет. Ему нужна DKIM-подпись, её я пока не сделал. Поэтому я советую слать с настоящего ящика на своём домене и заглядывать в него. А лучше по SMTP, тогда сайт узнает об отказе сразу.
Теперь про вход по коду. Здесь письмо уходит при каждом входе и каждом повторном запросе. Я бы считал пиковый час, а не сутки. Допустим, 1 000 входов в сутки. В среднем 42 в час, вроде и 60 хватит. Но если вечером за час приходит десятая часть, это уже 100 писем. Плюс повторы, регистрации, сбросы пароля и уведомления с того же ящика. Лимит у ящика один на всех.
И боты. Для них форма входа по коду - удобная цель. Каждый запрос - письмо, и бот за несколько минут съест весь лимит. Живые люди в этот час останутся без кода. Поэтому я бы сделал форме свой предел, ниже почтового:
• паузу перед повторной отправкой;
• несколько кодов на адрес в час, не больше;
• ограничение с одного IP и капчу, когда запросов подозрительно много;
• при входе код только на адрес, который есть в базе.
И сделал бы это до того, как просить лимит побольше. Снятый лимит хорош, пока сайт не взломали.
Как по мне, лимит на хостинге - нормальный предохранитель. Мешает он, когда про него не знаешь. Посчитайте пиковый час и защитите форму, остальное решается одним сообщением в поддержку.
Полный разбор с ошибками, расчётом и защитой формы:
https://blog.siteko.net/articles/kody-podtverzhdeniya-ne-prihodyat-limit-otpravki-pisem
А у вас коды приходят по почте или уже по SMS? Считали, сколько их уходит в пиковый час?
Просмотры: 6