Пересылка почты

Catch-all ящик: 3 безопасные схемы настройки

Автор: Alexey Bulygin
Изолированный catch-all ящик для своего домена

Catch-all ящик принимает все письма на домен, даже если получателя нет. Вместо отказа для typo@yourdomain.com с ошибкой 550 сервер принимает сообщение. Это спасает письма с опечаткой, но также пропускает спам, фишинг и перебор адресов. Доставка и восстановление писем не гарантируются.

Без ограничений catch-all способен быстро ухудшить репутацию отправителя. Настройка проста, а безопасная эксплуатация требует изоляции и контроля.

Ниже описаны три схемы для Microsoft 365, Linux и Google Workspace. Если необходимость функции неясна, сначала прочитайте о catch-all почте домена.

Что такое catch-all ящик?

Это единый ящик для писем на несуществующие адреса домена. Сообщение для misspelled-name@yourdomain.com не отклоняется, а попадает в назначенный ящик, если остальная цепочка доставки его принимает.

Сервер начинает принимать намного больше трафика. Спам-боты, фишинг и автоматический перебор каталогов также получают ответ 250 OK. Без изоляции они смешиваются с обычной почтой и могут повредить репутации домена.

Главное правило: не направлять в основной ящик

Catch-all трафик может обходить Directory-Based Edge Blocking (DBEB), поэтому сервер принимает содержимое до проверки получателя. Маршрутизация в ceo@company.com или другой рабочий ящик создает угрозу безопасности.

Все схемы следуют принципу: изолируйте catch-all трафик от рабочей почты.

Схема 1: карантин (Microsoft 365 / Exchange)

Подходит организациям, которым нужно хранить catch-all письма для юридических задач или поиска, но не нужны постоянные уведомления. Срок хранения, доступ и приватность настраиваются отдельно.

Как это работает

  1. Прием - Сервер принимает письмо неизвестному получателю.
  2. Метка - Транспортное правило выявляет внешнее письмо без действующего пользователя.
  3. Подавление - Правило устанавливает Spam Confidence Level (SCL) в 9.
  4. Хранение - Письмо идет в общий ящик, например catchall-sink@yourdomain.com.

Настройка PowerShell

В Exchange Admin Center задайте домену режим "Internal Relay", отключающий DBEB, затем выполните:

# Create the sink (shared mailbox - no license needed)
New-Mailbox -Shared -Name "CatchAll Sink" -PrimarySmtpAddress catchall-sink@yourdomain.com

# Create the transport rule
New-TransportRule -Name "Catch-All Routing & Suppression"
    -FromScope "NotInOrganization"
    -SentTo "catchall-sink@yourdomain.com"
    -RedirectMessageTo "catchall-sink@yourdomain.com"
    -SetSCL 9
    -ExceptIfRecipientBelongsTo "All Valid Users Group"

Почему SCL 9? Без него ящик заполняется уведомлениями. SCL 9 помещает сообщения в спам. Проверяйте их с периодичностью, соответствующей вашей политике хранения.

Схема 2: поток с меткой (Postfix / Linux)

В собственном стеке Postfix/Dovecot отдельный ящик может быть лишним. Добавьте заголовок и сортируйте письма клиентским или Sieve-правилом.

Как это работает

  1. Прием - luser_relay принимает письмо неизвестному локальному получателю.
  2. Изменение - MTA добавляет заголовок X-Catch-All: True.
  3. Фильтрация - Sieve перемещает письмо в отдельную папку.

Настройка Postfix

# /etc/postfix/main.cf
# Route unknown local users to a specific alias
luser_relay = catchall_alias

# /etc/postfix/virtual
# Map the alias to a real user
catchall_alias    realuser@yourdomain.com

Важно: luser_relay работает только с локальными доменами. Для нескольких виртуальных доменов используйте virtual_alias_maps с шаблоном:

# /etc/postfix/virtual
@example.com      realuser@example.com

При одновременной настройке пересылки почты убедитесь, что виртуальные карты не конфликтуют. Пересечения часто ведут к неверной маршрутизации.

Фильтр Sieve

Не разделяйте catch-all письма вручную, автоматизируйте:

if header :contains "X-Original-To" "catchall_alias" {
    fileinto "Junk/CatchAll";
    stop;
}

Схема 3: частичный шаблон (regex-маршрутизация)

Если полный catch-all не нужен, вместо любого *@domain.com принимайте только заданные шаблоны, например sales-*@domain.com, а остальные отклоняйте.

Как это работает

MTA или провайдер принимает адреса по регулярному выражению, например sales-webinar@ и sales-q1@, но отклоняет рискованные admin@ и hr@.

Настройка Google Workspace

  1. Откройте Apps > Google Workspace > Gmail > Default Routing.
  2. В Specify Envelope Recipients выберите "Pattern Match".
  3. Введите выражение: ^sales-.*@yourdomain\.com$
  4. Измените получателя конверта на sales-team@yourdomain.com.

Результат: sales-promo@yourdomain.com принимается, а admin@yourdomain.com получает отказ 550. Это заметно сокращает, но не устраняет поверхность для атак перебором каталога.

Чтобы адреса работали как почтовые алиасы, частичные шаблоны можно сочетать с пересылкой, проверив аутентификацию и защиту от циклов.

Как предотвратить цикл маршрутизации

Одна из самых опасных ошибок catch-all: цикл маршрутизации. Он возникает так:

  1. Catch-all принимает письмо для ghost@domain.com.
  2. Правило пересылает его на external@gmail.com.
  3. Gmail отклоняет письмо из-за SPF/DMARC.
  4. Gmail возвращает NDR на ghost@domain.com.
  5. Catch-all принимает уведомление.
  6. Правило снова пересылает его в Gmail.
  7. Повторение идет до превышения MaxHopCount.

Появляются ошибки 5.4.14 Hop count exceeded или 5.4.6 Routing loop detected. На загруженном домене это способно увеличить исходящую очередь и вызвать спам-блокировки.

Проверка защиты

  • Проверяйте заголовки - MTA должен учитывать X-Loop и Delivered-To.
  • Блокируйте автоответы - Пропускайте мимо catch-all правил письма с Auto-Submitted: auto-generated.
  • Особенность Microsoft 365 - Политика исходящего спама обычно блокирует внешнюю пересылку с ошибкой 5.7.520 Access denied. Разрешение повышает риск обратного спама, поэтому оцените последствия и актуальную документацию Microsoft.

Подробнее о различиях провайдеров читайте в руководстве по пересылке почтовых алиасов.

Почему большинство catch-all ящиков не нужны

Компании нередко включают catch-all ради экономии на лицензиях. Когда нужны support@, billing@ и jobs@, но не хочется платить Google или Microsoft $18/month за пользователя, это кажется обходным путем. Указанная цена является примером и может измениться.

На практике это технический долг с возможным ущербом репутации.

Альтернатива: провайдер без оплаты за пользователя. По описанной здесь текущей модели TrekMail использует общий пул хранилища:

  • Тариф Nano - $0, карта не требуется.
  • Starter - $3.50/mo и 14-day пробный период.
  • Pro - $10/mo и 14-day пробный период.
  • Agency - $23.25/mo и 14-day пробный период.

Создайте support@, billing@ и jobs@ как настоящие ящики или алиасы собственного домена. Корректные записи каталога позволяют серверу отклонять неизвестных получателей ответом 550 на границе. Это помогает репутации, но не гарантирует ее. Транспортные правила, Sieve и regex часто становятся не нужны.

При управлении несколькими доменами оцените риски catch-all обходов. Функция catch-all TrekMail дает страховку, но все равно требует подходящих DNS, аутентификации, хранилища и защиты от спама.

Итоги

Catch-all ящик не плох сам по себе. Опасен вариант без защиты. Выберите изоляцию под свой стек: карантин для Exchange, поток с меткой для Postfix или частичный шаблон для Workspace. Не смешивайте его с рабочей почтой.

Либо используйте провайдера, где настоящие адреса достаточно доступны в подходящем тарифе. Перед решением проверьте актуальные цены и ограничения.

Поделиться статьёй

Мы используем необходимые технологии для работы и защиты TrekMail. Подтверждая это, вы также разрешаете ограниченную аналитику и измерение рекламы, описанные в Политике cookie.

Вход в TrekMail

Доступ к панели, ящикам и DNS.

или

12 символов пароли совпадают

или

Письмо отправлено

Если для этого адреса есть аккаунт, мы отправили инструкции по сбросу пароля.

Продолжая, вы принимаете Условия и Политику конфиденциальности TrekMail.