Документация / Moodle

Отправка почты из Moodle через SMTP

Moodle отправляет много писем: о записи на курс и паролях, сообщения форумов, уведомления о заданиях, ежедневные дайджесты. Пока SMTP-сервер не указан, всё это уходит через функцию PHP mail() и на большинстве серверов либо теряется, либо попадает в спам. Исправляется это на штатной странице администрирования, без плагинов. Ниже — подключение к fmailer.

ℹ
Логин и пароль можно получить на странице токенов домена.

Параметры подключения

ПараметрЗначение
SMTP-хостsmtp.fmailer.ru
Порт587
ШифрованиеSTARTTLS (соединение переводится в TLS до авторизации)
ЛогинЛогин токена вашего домена
ПарольПароль этого токена — показывается один раз, при создании
ℹ
Каждый режим доступен и на высоком порту: 8465 (SSL/TLS), 8587 (STARTTLS) и 8025 (без шифрования). Многие хостинги и облака блокируют исходящие 25, 465 и 587 — если соединение обрывается по таймауту, используйте соответствующий высокий порт.

Настройка исходящей почты

Перейдите в Администрирование → Сервер → Электронная почта → Настройка исходящей почты:

НастройкаЗначение
SMTP-серверыsmtp.fmailer.ru:587
Безопасность SMTPTLS
Тип аутентификации SMTPPLAIN
Логин SMTPЛогин токена вашего домена
Пароль SMTPПароль этого токена
Ограничение сеанса SMTP Необязательно. Значение больше 1 отправляет несколько писем за одно соединение
Адрес для писем, не требующих ответаnoreply@mail.example.ru — на подтверждённом домене
Разрешенные почтовые доменыОставьте пустым или укажите только подтверждённый домен
⚠
Отдельного поля для порта нет: без :587 Moodle подключится к порту 25. TLS сочетайте с портом 587, SSL — с портом 465.

Почему важен адрес для писем без ответа

Большую часть писем Moodle отправляет от имени пользователя — сообщение форума, письмо преподавателя. Если домена этого пользователя нет в «Разрешенных почтовых доменах», Moodle подставляет в From адрес для писем, не требующих ответа и использует его же как адрес конверта. Через этот адрес идёт вся почта, поэтому он должен быть на подтверждённом домене — иначе DKIM и SPF не выровнены и письма уходят в спам. Не добавляйте в список mail.ru, yandex.ru и домены учащихся.

Настройка через config.php

Любую настройку администрирования можно зафиксировать в config.php — удобно, если на одном развёртывании несколько сайтов:

config.phpphp
<?php
// config.php — выше строки require_once с lib/setup.php.
// Заданные здесь настройки блокируются в админке.
$CFG->smtphosts      = 'smtp.fmailer.ru:587';
$CFG->smtpsecure     = 'tls';     // 'tls' = STARTTLS, 'ssl' = порт 465
$CFG->smtpauthtype   = 'PLAIN';   // релей не поддерживает LOGIN
$CFG->smtpuser       = '<логин токена>';
$CFG->smtppass       = '<пароль токена>';
$CFG->noreplyaddress = 'noreply@mail.example.ru';

Проверка

Сначала сохраните настройки, затем перейдите по ссылке «Проверка настроек исходящей почты» внизу страницы (или откройте /admin/testoutgoingmailconf.php). Укажите адрес и нажмите «Отправить тестовое сообщение». Чтобы увидеть весь обмен с SMTP-сервером, на время проверки добавьте $CFG->debugsmtp = true; в config.php.

Разбор ошибок

СимптомПричина и решение
«Ваш сайт не может связаться с вашим почтовым сервером» В «SMTP-серверах» нет порта, неверная «Безопасность SMTP» или хостинг блокирует порт — попробуйте smtp.fmailer.ru:8587.
SMTP Error: Could not authenticateНеверный логин или пароль токена.
Тест проходит, письма форума не приходятНе работает cron. Проверьте Сервер → Задачи.
Настройки не редактируютсяОни зафиксированы в config.php.
Письма не уходят совсем В config.php задан $CFG->noemailever — обычное дело для копии сайта, развёрнутой для тестов.
Письма в спаме Адрес для писем без ответа не на подтверждённом домене или в «Разрешенных почтовых доменах» указаны чужие домены.

Частые вопросы

Где в Moodle настраивается SMTP?

Администрирование → Сервер → Электронная почта → Настройка исходящей почты. Сервер указывается в поле «SMTP-серверы» в виде хост:порт, дальше — «Безопасность SMTP», «Тип аутентификации SMTP», «Логин SMTP» и «Пароль SMTP». Если поле «SMTP-серверы» пустое, Moodle отправляет письма через функцию PHP mail().

Что выбрать в «Безопасности SMTP» — SSL или TLS?

TLS с портом 587: в Moodle это значит, что соединение переходит на TLS командой STARTTLS. SSL — для порта 465, где соединение шифруется с первого байта. Перепутанная пара — самая частая причина, по которой страница проверки сообщает, что сайт не может связаться с почтовым сервером.

Почему письма с форума приходят с адреса noreply?

Moodle отправляет многие письма от имени пользователей. Если домен отправителя не указан в «Разрешенных почтовых доменах», Moodle ставит в поле From адрес для писем, не требующих ответа, а имя пользователя — в отображаемое имя. Так и должно быть: адрес на чужом домене не пройдёт проверки DKIM и SPF вашего домена.

Как проверить отправку почты в Moodle?

Сохраните настройки исходящей почты, затем перейдите по ссылке «Проверка настроек исходящей почты» внизу той же страницы или откройте /admin/testoutgoingmailconf.php. Укажите адрес получателя и нажмите «Отправить тестовое сообщение» — Moodle сообщит, принял ли письмо почтовый сервер.

Почему уведомления форума приходят с опозданием или не приходят?

Уведомления и дайджесты форума отправляют запланированные задачи, а не сохранение сообщения. Если cron не запускается каждую минуту, письма копятся в очереди. Время последнего запуска видно в разделе Администрирование → Сервер → Задачи.

Как посмотреть диалог Moodle с SMTP-сервером?

Добавьте в config.php строку $CFG->debugsmtp = true; и отправьте письмо со страницы проверки. Moodle выведет весь обмен с сервером, по которому видно, на каком шаге рвётся соединение, TLS или авторизация. После проверки строку уберите.

Что дальше