Mailcow: письма попадают в спам — решение
Вы подняли Mailcow, создали ящики, всё вроде работает — а письма получатели находят в папке «Спам» или не находят вовсе. Общая теория тут одна и та же для любого почтового сервера: PTR, SPF, DKIM, DMARC и репутация IP — мы подробно разбирали её в статье про Postfix и попадание в спам, и повторять её здесь смысла нет. Разница в том, что Mailcow — готовый Docker-стек со своей веб-админкой и встроенным антиспам-движком Rspamd, и у него есть особенности, о которых общая теория молчит: где в интерфейсе искать DKIM-ключ, что значит «новый IP» с точки зрения почтовиков, и как посмотреть, за что конкретно Rspamd понизил письмо. Пройдёмся именно по этому.
Содержание
- Сначала: за 2 минуты проверьте домен на mail-tester.com
- DKIM в Mailcow: где искать и как публиковать ключ через веб-интерфейс
- Новый IP всегда «на испытательном сроке» — это нормально
- Rspamd внутри Mailcow: встроенный антиспам-движок и его вердикты
- Как посмотреть, за что конкретное письмо получило спам-балл
- Частые причины у Mailcow, которые не покрывает общая теория SPF/DKIM/DMARC
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Сначала: за 2 минуты проверьте домен на mail-tester.com
Прежде чем лезть в настройки, получите объективную картину. Сервис mail-tester.com — это бесплатный инструмент, который присылает вам одноразовый адрес; вы отправляете на него письмо с вашего Mailcow, а сервис в ответ показывает разбор: прошли ли SPF, DKIM, DMARC, есть ли PTR, не засветился ли ваш IP в чёрных списках (списках адресов, которые ранее слали спам), и итоговую оценку по 10-балльной шкале.
Практически это выглядит так: откройте mail-tester.com, скопируйте показанный им адрес вида test-abc123@mail-tester.com, отправьте на него письмо из вашего ящика в Mailcow (через webmail SOGo или любой почтовый клиент), затем вернитесь на сайт и нажмите «Check your score». Полезно делать это на каждом этапе настройки — до и после публикации DKIM, до и после смены IP — чтобы видеть, какой конкретно пункт изменил ситуацию, а не гадать. Сервис не идеален (иногда занижает балл за формальности вроде отсутствия unsubscribe-ссылки в тестовом письме), но для диагностики технических проблем доставляемости он даёт самую быструю и честную картину из всех доступных бесплатных инструментов.
DKIM в Mailcow: где искать и как публиковать ключ через веб-интерфейс
DKIM — это цифровая подпись письма: сервер подписывает исходящую почту закрытым ключом, а получатель проверяет подпись открытым ключом, который лежит у вас в DNS. Если подписи нет или она не проходит проверку, почтовик меньше доверяет письму. В отличие от классического Postfix, где DKIM настраивают вручную через OpenDKIM и правят конфиги в консоли, в Mailcow всё делается мышкой в веб-интерфейсе — и здесь чаще всего теряются новички, потому что ищут файлы там, где их просто нет.
Откройте админку Mailcow (https://mail.вашдомен.ru) и зайдите в раздел конфигурации почты — там есть отдельная вкладка для DKIM/ARC-ключей, привязанная к доменам. Выберите домен, задайте селектор (обычно оставляют значение по умолчанию, например dkim) и длину ключа — берите 2048 бит, это стандарт на сегодня, 1024 бита слабее и некоторые почтовики к нему уже подозрительны. После генерации Mailcow сразу показывает готовую TXT-запись целиком: имя записи вида dkim._domainkey.вашдомен.ru и длинное значение публичного ключа. Это и есть главное удобство — не нужно вручную вытаскивать ключ из файла на сервере, интерфейс отдаёт готовую строку для копирования прямо в DNS вашего домена.
Частая ошибка именно в Mailcow — копировать значение ключа с лишними пробелами или переносом строки, из-за чего DNS-провайдер сохраняет запись неправильно и DKIM не проходит, хотя в админке Mailcow ключ выглядит нормально. После публикации в DNS подождите, пока запись разойдётся (обычно счёт идёт на минуты, но у некоторых DNS-провайдеров кэш живёт дольше), и проверьте командой:
dig txt dkim._domainkey.вашдомен.ru +short
Если ответ пуст — запись либо не сохранилась, либо ещё не разошлась. Если домены и ящики уже добавлены, а этой вкладки не видно — обновите Mailcow, в старых версиях интерфейс организован немного иначе, но сама логика («ключ генерируется и показывается через UI, а не создаётся вручную в файлах») не менялась.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать VPSНовый IP всегда «на испытательном сроке» — это нормально
Здесь важно снять лишнюю тревогу. Даже при идеально настроенных SPF, DKIM и DMARC свежий сервер с новым IP-адресом первое время может получать заниженную доставляемость у крупных почтовиков — Gmail, Outlook и других. Это называется репутацией IP: у почтовых систем нет истории по этому адресу, они не знают, легитимный вы отправитель или только что скомпрометированный спамерами сервер, и поэтому первое время присматриваются внимательнее — часть писем может уходить в спам или папку "Прочее" даже без явных ошибок в настройке.
Это не поломка и не повод переустанавливать Mailcow с нуля. Практический совет — не начинайте с массовой рассылки на десятки адресов в первый же день: отправляйте письма постепенно, в первую очередь реальным получателям, которые откроют письмо и ответят (это сильный положительный сигнал для почтовиков) — так репутация IP нарабатывается естественным путём. Ориентировочно на выход на нормальную доставляемость у нового IP уходит от нескольких дней до нескольких недель в зависимости от объёма и характера переписки — это именно ориентир, у вас может быть иначе, точных universal-цифр здесь никто честно не назовёт. Параллельно проверяйте IP по основным чёрным спискам (DNSBL) — если адрес чист и не встречался ранее в спам-рассылках, «испытательный срок» просто снижается со временем сам, вмешательство не требуется. Отдельно стоит выбирать сервер с изначально чистым выделенным IP, а не адресом из пула, где раньше уже мог сидеть спамер, — так и репутация будет чище с самого старта.
Rspamd внутри Mailcow: встроенный антиспам-движок и его вердикты
Rspamd — это движок, который в Mailcow встроен по умолчанию и отвечает не только за отсев входящего спама, но и косвенно влияет на репутацию исходящих писем: он же проверяет ваши собственные исходящие письма на признаки, которые могли бы насторожить принимающую сторону. В отличие от связки Postfix + отдельно устанавливаемый Rspamd (об этом у нас есть отдельная статья про настройку Rspamd на VPS), в Mailcow его не нужно ставить и связывать с почтовым сервером самостоятельно — контейнер rspamd-mailcow поднимается вместе со всем стеком и уже подключён к Postfix и Dovecot из коробки.
Rspamd оценивает каждое письмо по сумме «символов» (правил) — например, прошёл ли DKIM, похоже ли содержимое на фразы из спам-баз, совпадает ли IP отправителя с историей легитимной переписки — и выставляет итоговый балл. Если балл выше порога, письмо помечается как спам или уходит в карантин. Полезно понимать: то же самое происходит и с вашей исходящей почтой, если она проходит через тот же движок при пересылке между доменами внутри Mailcow, — поэтому даже собственные письма стоит время от времени проверять на реалистичные спам-триггеры: слишком много ссылок, капс в теме, подозрительные вложения.
Посмотреть состояние самого движка можно логами контейнера:
sudo docker compose -f /opt/mailcow-dockerized/docker-compose.yml logs rspamd-mailcow --tail 50
Это полезно, когда Rspamd вообще не отвечает или падает — тогда письма могут зависать в очереди Postfix без обработки. Но для повседневной диагностики «почему конкретное письмо получило такой балл» логи контейнера — не самый удобный инструмент, гораздо нагляднее вердикт смотреть там, где он адресован именно этому письму — в его заголовках.
Как посмотреть, за что конкретное письмо получило спам-балл
Самый надёжный и не зависящий от версии интерфейса способ — открыть заголовки конкретного письма. Rspamd в Mailcow добавляет к каждому обработанному письму служебный заголовок вида X-Spamd-Result, где построчно перечислены все сработавшие правила с их весом и итоговая сумма баллов. Выглядит это примерно так (сокращённо):
X-Spamd-Result: default: False [2.10 / 15.00]
DKIM_SIGNED(0.00), R_SPF_ALLOW(-0.20), MIME_GOOD(-0.10),
FROM_HAS_DN(0.00), BAYES_SPAM(1.50), MISSING_XM_UA(0.30)
Число в квадратных скобках — итоговый балл против порога срабатывания карантина. Каждая строка ниже — конкретная причина: например, BAYES_SPAM означает, что байесовский фильтр (статистический анализ текста на основе ранее размеченных писем) счёл содержимое похожим на спам, а R_SPF_ALLOW с отрицательным весом — это, наоборот, бонус за то, что SPF прошёл. Именно эта строка отвечает на вопрос «почему письмо получило такой балл» гораздо точнее, чем общий совет «настройте SPF/DKIM/DMARC» — вы видите конкретный вес каждого фактора.
Чтобы посмотреть заголовки: в веб-почте SOGo (встроенный webmail Mailcow) откройте письмо и выберите пункт вроде «Показать исходное сообщение» / «View source» — в исходном тексте письма в самом верху и будет блок заголовков с X-Spamd-Result. Для входящей почты, которую Mailcow поместил в карантин, тот же вердикт видно в разделе карантина в админке — там же можно вручную разрешить доставку письма, если Rspamd перестраховался и ошибочно занизил легитимное сообщение. Учтите, что менюшка карантина и точное название пунктов может немного отличаться между версиями Mailcow — общий принцип («карантин привязан к конкретному письму и его вердикту Rspamd») остаётся неизменным.
Частые причины у Mailcow, которые не покрывает общая теория SPF/DKIM/DMARC
Кроме классических PTR/SPF/DKIM/DMARC — а это база, которую стоит закрыть в первую очередь, — у Mailcow конкретно встречаются свои грабли. Первая: DKIM-ключ сгенерирован в интерфейсе, но забыт в DNS — Mailcow генерирует ключ сразу при добавлении домена, и если вы пропустили шаг с публикацией TXT-записи, письма будут уходить без подписи вообще, а не с ошибкой подписи, что иногда сбивает с толку при диагностике.
Вторая: ClamAV (встроенный антивирус) или Rspamd потребляют больше памяти, чем выделено серверу, контейнер начинает перезапускиваться, и часть писем обрабатывается некорректно или с задержкой — это выглядит как «случайные» проблемы с доставляемостью, хотя причина в ресурсах, а не в настройках почты. Проверяйте docker compose ps на предмет статуса restarting у контейнеров, если спам-баллы ведут себя нестабильно от письма к письму без видимой причины.
Третья: при миграции с другого почтового сервера на Mailcow старый DKIM-селектор остаётся в DNS, а Mailcow создаёт новый с тем же или другим именем — в DNS оказываются две конфликтующие DKIM-записи под одним селектором, и подпись у части писем не проходит непредсказуемо. Проверяйте DNS перед запуском Mailcow в бою на предмет старых записей от прежнего почтового решения — их нужно удалить, а не оставлять «на всякий случай». Общая установка Mailcow с нуля подробно разобрана в статье про установку и настройку Mailcow на VPS, а более широкий список типичных сбоев — в статье Mailcow: частые ошибки и решения.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать VPSОбсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Частые вопросы
В Mailcow можно настроить DKIM без консоли, только через браузер?
Да, это одно из ключевых удобств Mailcow: ключ генерируется и показывается в веб-админке во вкладке DKIM/ARC-ключей для домена, готовая TXT-запись копируется оттуда напрямую в DNS — редактировать конфиги OpenDKIM вручную, как в голом Postfix, не нужно.
Почему письма из нового Mailcow первое время всё равно попадают в спам, хотя всё настроено правильно?
Скорее всего дело в репутации нового IP — у почтовиков нет истории по этому адресу, и они присматриваются внимательнее первое время. Это нормально, отправляйте почту постепенно, без резких больших объёмов, и репутация нарастёт.
Как понять, за что именно Rspamd занизил конкретное письмо?
Откройте исходный текст письма («View source» в SOGo или в почтовом клиенте) и найдите заголовок X-Spamd-Result — там построчно перечислены все сработавшие правила с баллами и итоговая сумма против порога.
Нужно ли что-то донастраивать в Rspamd после установки Mailcow?
Обычно нет — Rspamd в Mailcow уже подключён к Postfix и Dovecot и работает с разумными настройками по умолчанию. Тонкая настройка правил нужна редко, чаще достаточно проверять заголовки конкретных писем и логи контейнера при явных сбоях.
Как оплатить сервер под Mailcow из России?
В MAATRIX — картой российского банка, через СБП, криптовалютой или токеном MAAT, иностранная карта не нужна.
Нужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.