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

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

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

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

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

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>
                <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 - список обслуживаемых доменов
        • 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.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
Релиз.

Загрузки

5,93 Мб , 21.10.2023 (16 загрузок)
55,59 Мб , 21.10.2023 (149 загрузок)
7,59 Мб , 21.10.2023 (32 загрузок)
2,87 Мб , 21.10.2023 (42 загрузок)
2,37 Кб , 13.04.2023 (137 загрузок)