IMAP сборщик доменной почты для Windows/Linux
-
Сборка и пересылка доменной почты: подключение к общему ящику на IMAP сервере и пересылка всех писем по получателям на локальном Exchange сервере. - Сбор почты с IMAP сервера с поддержкой SSL
-
Досылка (дублирование) писем по получателю (с учетом домена или без него) -
Фильтрация получателей -
Детектирование и обработка скрытых копий -
Failsafe адрес для проблемных писем -
Настраиваемая глубина архива доставленных и недоставленных писем в общем ящике
Сценарий использования
Основной сценарий использования сервиса - сборка доменной (всей) почты через промежуточный общий аккаунт неразобранной почты. Такой сценарий удобно использовать при переезде с доменной почты провайдеров, которые стали платными. Создается общий адрес, куда собирается вся неразобранная почта, а сборщиком почты осуществляется забор с этой учетной записи и пересылка внутри Exchange сервера.
Внешний провайдер в данном случае продолжает фильтровать почту на СПАМ и вирусы.
Для пользователей доменной почты Яндекса переезжающих на свой почтовый сервер
Нюансы:
- Вы не сможете забрать почту с нескольких ящиков существующих пользователей на стороне Яндекса. Сервис не предназначен для этого. Используйте для переноса с Яндекса в ваш почтовый сервер другие инструменты. Этот шаг необходим только при переезде.
- Если очень нужно перенести почту этим сервисом, то можно прописывать
login
иpassword
пользователей и перезапускать сервис, почта будет переноситься. И так с каждым пользователем. При этомskipcollectoraddress
должен быть равенfalse
- Чтобы ваш аккаунт стал бесплатным необходимо оставить только учетную запись владельца (администратора) и одну запись для всей неразобранной почты. Все остальное необходимо удалить.
Порядок действий:
- Создание всех учетных записей пользователей на личном почтовом сервере, включая синонимы (алиасы).
- Перенос почты с Яндекса на созданные аккаунты личного сервера (если вам это необходимо).
- Создание на Яндексе служебного адреса для неразобранной почты, например
unknownmails@yourdomain.ru
. Обратите внимание на "пароли приложений". - В настройках предприятия на Яндексе сделать пересылку всей неразобранной почты на созданный служебный адрес
unknownmails@yourdomain.ru
. - Удаление учетных записей на Яндексе, кроме администратора и
unknownmails@yourdomain.ru
. На этом этапе ваш аккаунт станет бесплатным и вся почта будет попадать не в ящики пользователей на стороне Яндекса, а вunknownmails@yourdomain.ru
откуда его заберет сборщик. - Создание учетной записи для сборщика на личном почтовом сервере или настройка анонимного доступа к SMTP.
- Настройка сборщика на сбор почты с
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
- использовать SSLtrue
.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
- Релиз.