Заказы не оформляются? Mail.ru отключил SMTP — решение проблемы за 2 часа
Интернет-магазин с 30 000 товаров и 30+ заказами в день встал в один момент — клиенты перестали оформлять заказы. При выборе оплаты чеком вылетала ошибка 500. Заказы не создавались, деньги терялись. Причина: в админке магазина был настроен SMTP mail.ru, а в феврале 2026 почтовый сервис сделал пароли для внешних приложений платными. Решение: перенос почты на SMTP хостинга. Заняло 2 часа, без подписок и доплат.
Как выглядела проблема
Магазин работал на OpenCart 2.3, стабильно, годами. В один из дней клиент пишет: «при оформлении заказа ошибка 500». Смотрю — действительно, на шаге подтверждения оплаты чеком сервер возвращает 500. В консоли браузера: GET /index.php?route=extension/payment/cheque/confirm 500 (Internal Server Error).
Заказы не создаются. Клиенты уходят. Каждый час простоя — потерянные продажи. Нужно было решать срочно.
Кстати, та же ошибка может выглядеть иначе в разных CMS: WordPress покажет белый экран, WooCommerce — «не удалось обработать заказ», самописная CRM — просто 500 без пояснений.
Диагностика — что показали логи
Первым делом открываю nginx error log. Вижу повторяющуюся ошибку:
PHP Fatal error: Uncaught Exception: Error: Password not accepted from server!
in /var/www/.../system/library/mail.php:286
Стектрейс ведёт в addOrderHistory() модели заказов — при попытке сохранить статус заказа, OpenCart отправляет email-уведомление. SMTP-сервер отклоняет пароль — и всё падает с фатальной ошибкой.
Проверяю настройки почты в админке OpenCart:
- Протокол: SMTP
- Сервер: ssl://smtp.mail.ru:465
- Логин: office@домен.ru
- Пароль: (установлен когда-то, работал годами)
Пробую тот же пароль в почтовом клиенте — не принимает. Причина ясна.
Почему это случилось — mail.ru изменил правила
В феврале 2026 года mail.ru сделал пароли для внешних приложений (IMAP, POP3, SMTP) платными. Чтобы подключаться к ящику через сторонние программы — нужна подписка Mail Space за 400 рублей в месяц. Без подписки сгенерировать новый пароль для внешнего приложения невозможно, а старые перестают работать.
Это коснулось всех сайтов, где в настройках SMTP стоял сервер smtp.mail.ru. Неважно: OpenCart, WordPress, любой CMS — почта перестала уходить.
Мы столкнулись с этим на реальном проекте. И вместо того чтобы покупать подписку mail.ru, решили перенести почту на хостинг.
Почему не стали покупать Mail Space, а перенесли почту
У нас было два пути: заплатить 400 руб/мес за подписку mail.ru или перенести почту туда, где SMTP уже есть бесплатно. Выбрали второе по нескольким причинам:
- Магазин уже размещён на хостинге — у него есть свой SMTP-сервер
- Пользоваться SMTP хостинга можно без доплат, в рамках текущего тарифа
- Единый провайдер — проще мониторить и поддерживать
- Подписка mail.ru — это костыль, который висит ежемесячным расходом. Перенос решает проблему раз и навсегда
Если ваш сайт тоже на хостинге — скорее всего у вас тоже есть SMTP. Просто вы о нём не знали, потому что почта была на mail.ru.
Как переносили — пошаговая инструкция
Шаг 1. Создать почтовый ящик в панели хостинга
Заходим в панель управления хостингом → раздел Почта → Создать почтовый ящик. Указываем тот же адрес, что был на mail.ru (например, office@ваш-домен.ru). Ставим пароль. Запоминаем его — он понадобится для SMTP.
В нашем случае хостинг — Beget. Там всё в ISPmanager. Но на любом хостинге логика та же: Почта → Создать ящик → Указать адрес и пароль.
Шаг 2. Настроить DNS домена
Чтобы почта ходила через новый сервер, нужно перенаправить DNS-записи домена.
MX-запись — главная запись, указывающая, где находится почтовый сервер для домена. Меняем с mail.ru на хостинг. У Beget это обычно mx.beget.com или конкретный сервер из панели.
SPF (TXT-запись) — разрешает серверу хостинга отправлять письма от имени вашего домена. Без SPF письма будут попадать в спам. Добавляем:
v=spf1 include:beget.com ~all
DKIM (TXT-запись) — цифровая подпись писем. Генерируется в панели хостинга автоматически. Просто копируем запись в DNS домена. DKIM гарантирует, что письмо отправлено именно с вашего сервера и не было подделано по пути.
DMARC (TXT-запись) — политика обработки писем, не прошедших SPF/DKIM:
v=DMARC1; p=quarantine; rua=mailto:admin@ваш-домен.ru
Режим p=quarantine — подозрительные письма отправлять в спам. Через месяц можно переключить на p=reject — строгий режим, блокировать окончательно.
dig mx ваш-домен.ru
Если видите новый MX-сервер — всё в порядке. Обычно обновление занимает 10–30 минут.Шаг 3. Дождаться обновления DNS
DNS-записи обновляются не мгновенно. В нашем случае — около 30 минут. В это время старый ящик на mail.ru ещё работает. Новые письма уже пойдут через новый сервер через некоторое время.
Шаг 4. Получить SMTP-данные из панели хостинга
После создания ящика в панели хостинга будут доступны SMTP-параметры. Вам понадобятся:
- SMTP-сервер: например smtp.beget.com
- Порт: обычно 465 (SSL) или 587 (TLS)
- Логин: полный email (office@ваш-домен.ru)
- Пароль: тот, что задали при создании ящика
- Протокол шифрования: SSL / TLS
Шаг 5. Обновить настройки в админке OpenCart
В админке OpenCart: Система → Настройки → Редактировать магазин → вкладка Сервер. В разделе «Почта» меняем:
- Протокол: SMTP
- SMTP Host: ваш SMTP-сервер (smtp.beget.com)
- SMTP Port: 465
- SMTP Username: office@ваш-домен.ru
- SMTP Password: новый пароль
- SMTP Timeout: 5
Шаг 6. Протестировать отправку
После обновления настроек — тест. Открываем сайт, выбираем товар, оформляем заказ. Если заказ создался, статус изменился, письмо пришло — всё работает.
Дополнительно можно зайти в OpenCart → Отчёты → Лог ошибок и убедиться, что новых записей об SMTP нет.
Результат
- За 2 часа с момента обращения — магазин снова принимает заказы
- Ошибка 500 ушла полностью
- Письма о заказах приходят на почту без задержек
- SMTP работает на хостинге, без дополнительных подписок
- DNS записи (SPF, DKIM, DMARC) обеспечивают доставку без спама
- Счётчик заказов пошёл снова — клиенты оформляют, деньги приходят
Когда этот способ не сработает
- Хостинг без SMTP: некоторые дешёвые shared-тарифы не дают SMTP-доступ или ставят жёсткие лимиты. В этом случае используйте Яндекс 360 для домена.
- Массовые рассылки: SMTP хостинга рассчитан на транзакционные письма (уведомления о заказах, регистрации). Для рассылок нужен отдельный сервис — Unisender, SendPulse.
- Нет своего домена: если у вас ящик @mail.ru или @gmail.com — перенос на хостинг не имеет смысла. Купите домен и настройте почту.
Альтернативные решения
- Яндекс 360 для домена — бесплатно до 1000 ящиков. Нужно настроить MX-записи на Яндекс. Подходит для любого хостинга, где нет своего SMTP.
- Mail Space от mail.ru — 400 рублей в месяц. Работает, если очень не хочется ничего менять. Но платить придётся постоянно.
- Sendmail (mail() функция PHP) — не требует настройки вообще. Но письма часто попадают в спам, потому что отправляются без SPF/DKIM. Для магазина с 30 заказами в день — неприемлемо.
- Свой почтовый сервер — полный контроль + никаких ограничений. Но требует отдельного VPS, настройки Postfix, Dovecot, SPF/DKIM/DMARC, обратного DNS. Решение для тех, кто готов администрировать сервер.
Частые вопросы
Нужно настроить SMTP или починить почту на сайте?
Разбираюсь с почтовыми проблемами любой сложности — от смены SMTP до полной настройки SPF/DKIM/DMARC. Помогу за 1 день.