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

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

Nextcloud отправляет письма для сброса пароля, уведомления о том, что с вами поделились файлом, и сводки об активности. Сразу после установки передавать их некуда, и письма молча не уходят. Подключение к SMTP-релею — одна форма в параметрах сервера или несколько ключей в config.php, если вы управляете сервером из консоли. Ниже — подключение к fmailer.

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

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

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

Настройка в веб-интерфейсе

Нажмите на аватар → «Параметры сервера» → «Основные параметры» и прокрутите до раздела «Почтовый сервер»:

ПолеЗначение
Способ отправкиSMTP
ШифрованиеБез шифрования/STARTTLS
Адрес отправителяnoreply @ mail.example.ru — на подтверждённом домене
Адрес сервераsmtp.fmailer.ru : 587
АутентификацияВключена — «Требуется аутентификация»
ЛогинЛогин токена вашего домена
ПарольПароль этого токена
⚠
Принудительно включить STARTTLS в Nextcloud нельзя: он используется автоматически, если сервер его предлагает, а наш предлагает всегда. SSL означает шифрование с первого байта и сочетается только с портом 465. SSL на порту 587 даёт ошибку рукопожатия.

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

Форма записывает значения в config/config.php. Обратите внимание: mail_from_address — только часть адреса до @:

config/config.phpphp
<?php
// config/config.php — добавьте ключи в существующий массив $CONFIG
$CONFIG = array (
  // ...
  'mail_smtpmode' => 'smtp',
  'mail_smtphost' => 'smtp.fmailer.ru',
  'mail_smtpport' => 587,
  'mail_smtpsecure' => '',        // '' = STARTTLS, если сервер его предлагает; 'ssl' = порт 465
  'mail_smtpauth' => true,
  'mail_smtpname' => '<логин токена>',
  'mail_smtppassword' => '<пароль токена>',
  'mail_from_address' => 'noreply', // только часть до @
  'mail_domain' => 'mail.example.ru',
);

Те же ключи можно задать командой occ:

bash
# Запускайте от пользователя веб-сервера в каталоге Nextcloud
sudo -u www-data php occ config:system:set mail_smtpmode --value=smtp
sudo -u www-data php occ config:system:set mail_smtphost --value=smtp.fmailer.ru
sudo -u www-data php occ config:system:set mail_smtpport --value=587 --type=integer
sudo -u www-data php occ config:system:set mail_smtpsecure --value=""
sudo -u www-data php occ config:system:set mail_smtpauth --value=true --type=boolean
sudo -u www-data php occ config:system:set mail_smtpname --value="<логин токена>"
sudo -u www-data php occ config:system:set mail_smtppassword --value="<пароль токена>"
sudo -u www-data php occ config:system:set mail_from_address --value=noreply
sudo -u www-data php occ config:system:set mail_domain --value=mail.example.ru

Docker

Официальный образ nextcloud берёт настройки почты из переменных окружения, если заданы все три: SMTP_HOST, MAIL_FROM_ADDRESS и MAIL_DOMAIN. Для порта 587 не задавайте SMTP_SECURE, для порта 465 поставьте в неё ssl.

docker-compose.yml
# docker-compose.yml — официальный образ nextcloud
services:
  app:
    image: nextcloud
    environment:
      SMTP_HOST: smtp.fmailer.ru
      SMTP_PORT: "587"            # укажите явно: по умолчанию 25
      SMTP_NAME: "<логин токена>"
      SMTP_PASSWORD: "<пароль токена>"
      MAIL_FROM_ADDRESS: noreply  # только часть до @
      MAIL_DOMAIN: mail.example.ru

Проверка

Тестовое письмо уходит на ваш собственный адрес, поэтому сначала укажите его в личных настройках, в разделе «Личная информация». Затем вернитесь в «Почтовый сервер» и отправьте тестовое письмо. При ошибке Nextcloud покажет ответ SMTP-сервера; для подробностей включите 'mail_smtpdebug' => true в config.php, понизьте уровень журнала до отладки и смотрите nextcloud.log.

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

СимптомПричина и решение
Не удаётся установить соединение Хостинг блокирует порт — используйте 8587 с «Без шифрования/STARTTLS» или 8465 с SSL.
Ошибка рукопожатия, wrong version numberНа порту 587 выбран SSL. Переключите на «Без шифрования/STARTTLS».
Ошибка авторизации (535)Неверный логин или пароль токена либо не включена аутентификация.
Сервер отклоняет отправителяВ mail_domain не ваш подтверждённый домен.
Форма не сохраняетсяconfig.php недоступен для записи или настройки заданы переменными SMTP_* в Docker.
Тест проходит, уведомления опаздываютФоновые задания в режиме AJAX. Переключите на Cron.

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

Где в Nextcloud настраивается почта?

Нажмите на аватар → «Параметры сервера» → «Основные параметры» и прокрутите до раздела «Почтовый сервер». Те же значения хранятся в config/config.php в ключах mail_*: там их и правят, если форма недоступна для изменения.

Какое шифрование выбрать в Nextcloud для порта 587?

«Без шифрования/STARTTLS». Вариантов всего два: этот, при котором соединение переходит на TLS командой STARTTLS, если сервер её предлагает, и SSL — шифрование с первого байта для порта 465. Отдельного пункта STARTTLS нет, поэтому «без шифрования» на порту 587 — всё равно зашифрованное соединение.

Почему тестовое письмо не отправляется или кнопка неактивна?

Тестовое письмо уходит на адрес вашей учётной записи. Сначала укажите его в личных настройках, в разделе «Личная информация», затем вернитесь к «Почтовому серверу» и отправьте тест.

Чем mail_from_address отличается от mail_domain?

В mail_from_address пишется только часть адреса до @, например noreply, а в mail_domain — часть после неё. Вместе они дают адрес отправителя. В mail_domain должен стоять подтверждённый домен, иначе письмо не пройдёт выравнивание DKIM и SPF.

Почему письма об активности из Nextcloud приходят с опозданием?

Уведомления и сводки об активности отправляют фоновые задания, а не сам момент события. В режиме AJAX они выполняются только пока кто-то открыл Nextcloud в браузере. Переключите «Фоновые задания» в «Основных параметрах» на системный Cron.

Почему настройки почты не сохраняются из веб-интерфейса?

Сохранение не проходит, если файл config/config.php недоступен для записи пользователю веб-сервера, а при включённом config_is_read_only форма заблокирована целиком. В официальном Docker-образе источник настроек — переменные SMTP_*: меняйте их и пересоздавайте контейнер.

Что дальше