Moodle отправляет много писем: о записи на курс и паролях, сообщения форумов, уведомления о заданиях, ежедневные дайджесты. Пока SMTP-сервер не указан, всё это уходит через функцию PHP mail() и на большинстве серверов либо теряется, либо попадает в спам. Исправляется это на штатной странице администрирования, без плагинов. Ниже — подключение к fmailer.
| Параметр | Значение |
|---|---|
| SMTP-хост | smtp.fmailer.ru |
| Порт | 587 |
| Шифрование | STARTTLS (соединение переводится в TLS до авторизации) |
| Логин | Логин токена вашего домена |
| Пароль | Пароль этого токена — показывается один раз, при создании |
Перейдите в Администрирование → Сервер → Электронная почта → Настройка исходящей почты:
| Настройка | Значение |
|---|---|
| SMTP-серверы | smtp.fmailer.ru:587 |
| Безопасность SMTP | TLS |
| Тип аутентификации SMTP | PLAIN |
| Логин 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 — удобно, если на одном развёртывании несколько сайтов:
<?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 — обычное дело для копии сайта, развёрнутой для тестов. |
| Письма в спаме | Адрес для писем без ответа не на подтверждённом домене или в «Разрешенных почтовых доменах» указаны чужие домены. |
Администрирование → Сервер → Электронная почта → Настройка исходящей почты. Сервер указывается в поле «SMTP-серверы» в виде хост:порт, дальше — «Безопасность SMTP», «Тип аутентификации SMTP», «Логин SMTP» и «Пароль SMTP». Если поле «SMTP-серверы» пустое, Moodle отправляет письма через функцию PHP mail().
TLS с портом 587: в Moodle это значит, что соединение переходит на TLS командой STARTTLS. SSL — для порта 465, где соединение шифруется с первого байта. Перепутанная пара — самая частая причина, по которой страница проверки сообщает, что сайт не может связаться с почтовым сервером.
Moodle отправляет многие письма от имени пользователей. Если домен отправителя не указан в «Разрешенных почтовых доменах», Moodle ставит в поле From адрес для писем, не требующих ответа, а имя пользователя — в отображаемое имя. Так и должно быть: адрес на чужом домене не пройдёт проверки DKIM и SPF вашего домена.
Сохраните настройки исходящей почты, затем перейдите по ссылке «Проверка настроек исходящей почты» внизу той же страницы или откройте /admin/testoutgoingmailconf.php. Укажите адрес получателя и нажмите «Отправить тестовое сообщение» — Moodle сообщит, принял ли письмо почтовый сервер.
Уведомления и дайджесты форума отправляют запланированные задачи, а не сохранение сообщения. Если cron не запускается каждую минуту, письма копятся в очереди. Время последнего запуска видно в разделе Администрирование → Сервер → Задачи.
Добавьте в config.php строку $CFG->debugsmtp = true; и отправьте письмо со страницы проверки. Moodle выведет весь обмен с сервером, по которому видно, на каком шаге рвётся соединение, TLS или авторизация. После проверки строку уберите.