• Сборка и пересылка доменной почты: подключение к общему ящику на IMAP сервере и пересылка всех писем по получателям на локальном Exchange сервере.
  • Сбор почты с IMAP сервера с поддержкой SSL
  • Досылка (дублирование) писем по получателю (с учетом домена или без него)
  • Фильтрация получателей
  • Детектирование и обработка скрытых копий
  • Failsafe адрес для проблемных писем
  • Настраиваемая глубина архива доставленных и недоставленных писем в общем ящике

Сценарий использования

Основной сценарий использования сервиса - сборка доменной (всей) почты через промежуточный общий аккаунт неразобранной почты. Такой сценарий удобно использовать при переезде с доменной почты провайдеров, которые стали платными. Создается общий адрес, куда собирается вся неразобранная почта, а сборщиком почты осуществляется забор с этой учетной записи и пересылка внутри Exchange сервера.

Схема работы сборщика почты

Внешний провайдер в данном случае продолжает фильтровать почту на СПАМ и вирусы.

Для пользователей доменной почты Яндекса переезжающих на свой почтовый сервер

Нюансы:

  1. Вы не сможете забрать почту с нескольких ящиков существующих пользователей на стороне Яндекса. Сервис не предназначен для этого. Используйте для переноса с Яндекса в ваш почтовый сервер другие инструменты. Этот шаг необходим только при переезде.
  2. Если очень нужно перенести почту этим сервисом, то можно прописывать login и password пользователей и перезапускать сервис, почта будет переноситься. И так с каждым пользователем. При этом skipcollectoraddress должен быть равен false
  3. Чтобы ваш аккаунт стал бесплатным необходимо оставить только учетную запись владельца (администратора) и одну запись для всей неразобранной почты. Все остальное необходимо удалить.

Порядок действий:

  1. Создание всех учетных записей пользователей на личном почтовом сервере, включая синонимы (алиасы).
  2. Перенос почты с Яндекса на созданные аккаунты личного сервера (если вам это необходимо).
  3. Создание на Яндексе служебного адреса для неразобранной почты, например unknownmails@yourdomain.ru. Обратите внимание на "пароли приложений".
  4. В настройках предприятия на Яндексе сделать пересылку всей неразобранной почты на созданный служебный адрес unknownmails@yourdomain.ru.
  5. Удаление учетных записей на Яндексе, кроме администратора и unknownmails@yourdomain.ru. На этом этапе ваш аккаунт станет бесплатным и вся почта будет попадать не в ящики пользователей на стороне Яндекса, а в unknownmails@yourdomain.ru откуда его заберет сборщик.
  6. Создание учетной записи для сборщика на личном почтовом сервере или настройка анонимного доступа к SMTP.
  7. Настройка сборщика на сбор почты с unknownmails@yourdomain.ru и пересылкой на личный почтовый сервер (описание параметров ниже).

Windows

Установка сервиса осуществляется программой установки из раздела загрузки.

Для регистрации сервиса в качестве службы необходимо запустить ее с ключом taa.mailcollector.exe /install от имени администратора. Ключ /uninstall удаляет службу.

При использовании минимального пакета необходимо убедиться в наличии предустановленного пакета .NET 7 Runtime.

Debian

Работа сервиса протестирована в Debian 11+. Для установки (включая зависимости) выполните команду:

wget -O - https://bash-it.ru/debian/taa.mailcollector/install.sh | bash

Параметры

Параметры работы службы расположены в файле config.xml рядом с исполняемым файлом службы.

<?xml version="1.0" encoding="utf-8"?>
<taa>
    <debug>true</debug>
    <kaloginterval>100</kaloginterval>
    <accounts>
        <default>
            <host>imap.mailserver.ru</host>
            <port>993</port>
            <ssl>true</ssl>
            <ignorecert>true</ignorecert>
        </default>
        <items>
            <account>
                <type>imap</type>
                <login>unknown@domain.com</login>
                <password>imap_password</password>
                <exchangehost>exchange.domain.local</exchangehost>
                <exchangeport>25</exchangeport>
                <exchangessl>false</exchangessl>
                <exchangelogin>login</exchangelogin>
                <exchangepassword>password</exchangepassword>
                <exchangeignorecert>true</exchangeignorecert>
                <domains>
                    <domain>domain.com</domain>
                    <domain>second-domain.com</domain>
                </domains>
                <skipcollectoraddress>true</skipcollectoraddress>
                <skipaddress/>
                <failsafe>failsafe@domain.com</failsafe>
                <storedelivered>7d</storedelivered>
                <storefailed>7d</storefailed>
                <filterduplicates>true</filterduplicates>
                <hidden>
                    <parse>true</parse>
                    <headers>
                        <header>Received</header>
                    </headers>
                </hidden>
                <autocopy>
                    <items>
                        <item from="user1@" to="user2@" onlywithattachments="false" replace="false" />
                    </items>
                </autocopy>
            </account>
        </items>
    </accounts>
</taa>

, где
  • debug - true для вывода в консоль дополнительной информации. Не рекомендуется в рабочей среде из-за роста размеров журналов.
  • kaloginterval - количество итераций вывода механизма KeepAlive в логи. Между итерациями 3 секунды.
  • accounts
    • default - параметры по умолчанию для всех аккаунтов. Если параметр не задан в этом разделе он должен быть задан в настройках account
    • items - обслуживаемые аккаунты (независимо)
      • account
        • type - тип коннектора сборщика. Пока только imap.
        • host - хост почтового сервера imap.yandex.ru.
        • port - порт почтового сервера 993.
        • ssl - использовать SSL true.
        • ignorecert - игнорировать ошибки сертификатов внешнего почтового сервера true.
        • login - логин.
        • password - пароль.
        • exchangehost - хост Exchange для пересылки.
        • exchangeport - порт Exchange.
        • exchangessl - использовать SSL для Exchange.
        • exchangelogin - логин Exchange (если пусто - без авторизации).
        • exchangepassword - пароль Exchange.
        • exchangeignorecert - игнорировать ошибки сертификатов Exchange.
        • domains - список обслуживаемых доменов
        • skipcollectoraddress - исключать из пересылки адрес ящика с неразобранной почтой (login). Т.е. если письмо придет на unknownmails@yourdomain.ru оно пересылаться не будет.
        • skipaddress - список адресов-исключений к доставке.
        • failsafe - адрес доставки нераспознанной почты (если не удалось определить ни одного получателя или SMTP сервер отверг получателя). Если указать пустым (<failsafe />), то, при возникновении вышеописанных ситуаций, сообщения будут перемещаться в папку ForwardFailed почтового сервера. Данный сценарий является проще обслуживаемым, т.к. сервис автоматически будет удалять сообщения через период storefailed.
        • storedelivered - срок хранения доставленной почты 0 - сразу удалять, 30/30m - 30 минут, 3h - 3 часа, 7d - 7 дней.
        • storefailed - срок хранения недоставленной почты. Каждые 30 минут будет предприниматься попытка доставки этой почты повторно.
        • filterduplicates - фильтрация дубликатов сообщений в разрезе получателя (любой домен). При хешировании сообщения берутся тема, тело сообщения и md5 хеши всех вложений. Если среди последних 100 сообщений пользователя есть сообщения с указанным хешем - сообщение будет считаться доставленным успешно.
        • hidden - параметры поиска скрытых копий
          • parse - обрабатывать заголовки письма в поисках адресов доставки.
          • headers - список заголовков в которых искать адреса. Если список пустой - поиск будет по всем заголовкам (не рекомендуется).
        • autocopy - автодосылка сообщений
          • items - правила досылки
            • item - если в списках получателей (локальных) имеется получатель from, то в список получателей будет добавлен получатель to. Если атрибут заканчивается на @, то для from это означает любой домен, а для to что будет перенесен домен из from. Например письмо отправленное user1@somedomain.com будет переслано user2@somedomain.com.
              • @from - получатель письма (один из получателей)
              • @to - адрес пересылки
              • @onlywithattachments - только для писем с вложениями
              • @replace - заменять исходного получателя from

Известные проблемы

Скрытые копии сообщений являются проблемой, т.к. при попадании в ящик назначения в mime части сообщения не сохраняется никакой информации для кого было это сообщение. В некоторых случаях помогает функция обработки заголовков hidden, но это недокументированная возможность подходящая далеко не всем почтовым серверам. Сервера Яндекса, пока, позволяют найти в заголовке Received эту информацию. Настраивайте failsafe адрес чтобы не терять почту, которую отправитель отправил скрытой копией. Данная проблема у любого почтового сборщика с общим ящиком, а не только этой реализации.

Что нового?

1.8.0
Добавлен параметр skipcollectoraddress
Значительно расширено логирование с параметром debug
Улучшена стабильность взаимодействия с SMTP
1.7.0
Улучшена стабильность
Обновлены механизмы доступа к серверам
Улучшена конфигурация развертывания в среде Linux
1.6.38
Добавлена авторизация на Exchange
Добавлен флаг использования SSL для подключения к Exchange
Добавлен флаг игнорирования проблем сертификатов SSL/TLS со стороны Exchange
Добавлен флаг игнорирования проблем сертификатов SSL/TLS со стороны внешнего почтового сервера
1.6.35
Улучшен (расширен) механизм распознавания наличия скрытых копий.
1.6.34
Улучшена стабильность сервиса
Исправление обработки периодов хранения доставленной и недоставленной почты
1.6.31
Улучшена стабильность сервиса
1.6.30
Улучшена стабильность сервиса
Добавлен флаг фильтрации дубликатов сообщений
1.6.25
Улучшена стабильность сервиса
Улучшен механизм обработки не удачной доставки сообщений
1.6.24
Улучшен механизм логирования событий
1.6.22
Улучшен механизм определения получателей.
1.6.21
Доработана функция автодосылки сообщений autocopy атрибутами @onlywithattachments и @replace.
1.6.20
Добавлена функция автодосылки сообщений autocopy.
Улучшение стабильности работы сервиса.
1.6.19
Улучшение стабильности работы сервиса.
1.6.3
Добавлена возможность обслуживания нескольких аккаунтов.
Добавлена возможность хранения успешно доставленной почты на сервере IMAP.
Добавлена возможность хранения не доставленной почты на сервере IMAP, с повторной пересылкой каждые 30 минут до момента завершения срока хранения недоставленной почты.
Добавлена возможность исключения адресов к доставке.
Добавлена возможность извлечения адресов доставки (помогает найти скрытые копии).
Введен список обслуживаемых доменов.
Введен failsafe адрес для почты с неопределенным или отклоненным Exchange сервером адресом доставки.
IMAP: подписка на событие доставки нового сообщения вместо переодического обхода. Позволяет оперативно получать сообщения.
1.0.14
Исправления в механизме развертывания службы. Linux версия сборщика.
1.0.13
Релиз.

Загрузки

60,33 Мб , 23.07.2024 (162 загрузок)
6,50 Мб , 23.07.2024 (48 загрузок)