Joomla всё ещё питает сообщество членских сайтов, образовательные платформы и малый бизнес. Это стабильный, гибкий и хорошо расширяемый фреймворк. Но с современным транспортом почты у него беда. «Из коробки» Joomla передаёт все исходящие письма — подтверждения регистрации, сброс пароля, уведомления из форм, opt-in в рассылки — функции PHP mail().
В 2026 году отправка через PHP mail с shared-хоста — это синоним папки «Спам». Gmail, Outlook, Yahoo и европейские провайдеры (GMX, Web.de, Yandex) требуют аутентифицированную отправку с выровненными SPF и DKIM. Joomla по умолчанию этого не даёт. Пользователи перестают подтверждать регистрацию, письма в поддержку иссякают, вы думаете, сайт мёртв. На самом деле письма тихо падают в спам.
Переключите Joomla с PHP mail на SMTP с аутентификацией, укажите transactional-провайдер (Postmark, SES, Mailgun, Brevo), опубликуйте SPF + DKIM + DMARC для домена From, потом пройдите seed-тест каждого шаблона. Регистрация, сброс пароля и форма контактов — все три ведут себя по-разному.
Признаки проблемы: как понять, что дело в почте
Классические сигналы:
- Новые регистрации зависают на этапе «подтвердите почту». Пользователи пишут в поддержку, где письмо. Вы находите его в папке Спам в Gmail.
- Сброс пароля «не приходит» — но лог Joomla говорит, что письмо отправлено успешно.
- Заявки из формы обратной связи приходят непредсказуемо. Какой-то день ноль, какой-то день залп. Это плавающее размещение в зависимости от получателя.
- Заголовки на полученных письмах показывают
Received-SPF: noneилиsoftfail, иdkim=none.
Почему дефолтная конфигурация падает
В Глобальные настройки → Сервер → Параметры почты у Joomla есть три опции Mailer: PHP mail, sendmail, и SMTP. На большинстве инсталляций по умолчанию стоит PHP mail.
Когда Joomla использует PHP mail, локальный MTA веб-сервера отправляет письмо с собственного IP сервера. Этот IP почти всегда:
- Shared с сотнями других сайтов на одном хостинг-ноде.
- Не указан в SPF-записи вашего From-домена.
- Не публикует DKIM-подписи для вашего From-домена.
Итог: SPF падает (отправляющий IP не авторизирован для вашего домена), DKIM отсутствует (нет подписи), DMARC — если он у вас есть — отклоняет. Даже без DMARC, Gmail и Outlook агрессивно downgrade'ят неаутентифицированную почту.
Администраторы иногда пытаются «починить» это, переключив Mailer на sendmail. Это не помогает. Sendmail просто передаёт письмо тому же локальному MTA, с того же shared-IP, всё ещё без аутентификации. Единственный кейс — это SMTP на authenticated relay.
SMTP-кейс внутри Joomla
Идите в Глобальные настройки → Сервер → Параметры почты:
- Установите Mailer в
SMTP. - Установите From Email на mailbox на домене, которым вы владеете и будете аутентифицировать, например
noreply@vash-site.com. - Установите From Name на публичное имя вашего сайта. Пусть оно будет узнаваемо — это будет показано как имя отправителя в inbox получателя.
- Включите SMTP Authentication, установите SMTP Security в
TLS, и SMTP Port в587. - Введите SMTP Host, Username и Password из вашего transactional-провайдера. Для Postmark это
smtp.postmarkapp.comс серверным API-токеном как логин и пароль. Для SES этоemail-smtp.<region>.amazonaws.comс SES-специфичными SMTP-реквизитами. - Сохраните, потом используйте встроенную кнопку Joomla Send Test Mail (вкладка Mail Settings) чтобы отправить себе тест.
DNS-записи
Опубликуйте SPF, DKIM и DMARC. Минимальный корректный набор:
; SPF — одна TXT-запись на домен
vash-site.com. IN TXT "v=spf1 include:sendgrid.net ~all"
; DKIM — провайдер-специфичный selector, обычно CNAME
s1._domainkey.vash-site.com. IN CNAME s1.domainkey.u1234.wl.sendgrid.net.
; DMARC — quarantine с reporting-mailbox
_dmarc.vash-site.com. IN TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc@vash-site.com; adkim=r; aspf=r"Дайте DNS 10 минут на распространение. Потом ещё раз запустите test mail в Joomla и посмотрите received-заголовки. Ищите spf=pass, dkim=pass, dmarc=pass.
Запустите бесплатный Inbox Placement Test и получите seed-адреса по 9 провайдерам: Gmail, Outlook, Yahoo, Mail.ru, Yandex, ProtonMail, Fastmail, iCloud, GMX. Отчёт по папкам (Входящие, Промоакции, Спам) для каждого.
Seed-тестируем каждый шаблон
Кнопка test-mail в Joomla доказывает, что транспорт работает. Это не доказывает, что ваш шаблон регистрации, шаблон сброса пароля или шаблон уведомления из контактовреально достигают inbox. Каждый из них имеет разное содержание, разные ссылки, и скорится по-разному в Gmail и Outlook.
- Сгенерируйте 20+ seed-адресов на Inbox Check — охватите Gmail, Outlook, Yahoo, Mail.ru, Yandex, GMX, Web.de и ProtonMail.
- Триггерьте новую регистрацию с seed-адреса. Смотрите письмо подтверждения разлететься на panel. Проверьте размещение по каждому провайдеру.
- Триггерьте сброс пароля для существующего аккаунта, используя другой seed-адрес. Содержание отличается — одна ссылка, никакого брендинга — поэтому скоры скана отличаются.
- Отправьте форму контактов как seed-адрес, потом проверьте, как уведомление падает на почту магазина.
Целитесь на 95%+ inbox placement на всех consumer-провайдерах. Что-то ниже — итеритесь по DNS, контенту и выбору провайдера.
Полезные расширения Joomla
Ядро Joomla поддерживает SMTP без дополнительных расширений. Но несколько из них всё же полезны:
- Email Logger или стиль Email Log позволяет вам видеть каждое отправленное письмо и любую SMTP-ошибку. Бесценно для дебага «письмо не отправилось» против «письмо отправилось и спамилось».
- Advanced Mailer расширения могут добавить DKIM-подпись внутри самой Joomla, полезно если ваш провайдер не делает DKIM за вас (большинство делают).
- JComments, Community Builder, VirtueMartи другие расширения всё маршрутируют почту через настроенный Joomla mailer. Чините core mailer один раз — и все получают бенефит.