В этой статье я хочу поделиться опытом переноса почты между разными серверами с помощью замечательной утилиты IMAPSync.
— Получение IMAPSync.exe из исходников github (компиляция под Windows).
— Перенос почты по IMAP между серверами.
В моем случае встала задача перенести почту со своего сервера IDECO на сервера pdd.yandex.ru. Средствами Яндекса сделать это мне не удалось, инструмент по импорту для домена и инструмент по сбору почты в свойствах ящика выдавал всегда одну ошибку — неверный пароль. Техническая поддержка отвечала раз в сутки, а проблема не решалась. Были рекомендации сменить пароль, подождать, отключить двухфакторную авторизацию и т.п. В общем стандартные отписки, к сожалению. Использовать biz.mail.ru, который прекрасно все импортировал на тестовых ящиках, не хотелось. Так как имею больше опыта с Яндексом, и больше нравится работа почты от Яндекса, было принято решение найти другой способ переноса почты. Им и стал IMAPSync.
Начинаем, при условии, что на сервере назначения у нас созданы пустые (или не очень) ящики с нужными нам логинами и паролями.
Несколько основных моментов которые я для себя выделил при изучении программы и отладке ошибок:
Компиляция и работоспособность протестирована на Windows 10 64bit и Windows 7 64bit.
— Получение IMAPSync.exe из исходников github (компиляция под Windows).
— Перенос почты по IMAP между серверами.
В моем случае встала задача перенести почту со своего сервера IDECO на сервера pdd.yandex.ru. Средствами Яндекса сделать это мне не удалось, инструмент по импорту для домена и инструмент по сбору почты в свойствах ящика выдавал всегда одну ошибку — неверный пароль. Техническая поддержка отвечала раз в сутки, а проблема не решалась. Были рекомендации сменить пароль, подождать, отключить двухфакторную авторизацию и т.п. В общем стандартные отписки, к сожалению. Использовать biz.mail.ru, который прекрасно все импортировал на тестовых ящиках, не хотелось. Так как имею больше опыта с Яндексом, и больше нравится работа почты от Яндекса, было принято решение найти другой способ переноса почты. Им и стал IMAPSync.
Начинаем, при условии, что на сервере назначения у нас созданы пустые (или не очень) ящики с нужными нам логинами и паролями.
Компиляция IMAPSync.exe из исходников под Windows
- Подготавливаем инструменты для компиляции:
Скачиваем последние исходники IMAPSync с github;
Скачиваем и устанавливаем 32-битную версию Strawberry Perl (я использовал strawberry-perl v5.20.3.3-32bit);
Распаковываем исходники и копируем файл из \imapsync в \W\imapsync;
Запускаем от администратора командную строку, заходим в папку \W и запускаем установку необходимых модулей:
install_modules.bat
Выполняем этот файл дважды, убеждаемся, что все модули установлены, ошибок нет. Если какой-то модуль не устанавливается (у меня, например, Unicode::String не хотел ставится), ставим его через ppm:
ppm install Unicode::String
Снова запускаем:
install_modules.bat
и убеждаемся, что все модули установлены, ошибок нет.
- Запускаем компиляцию:
build_exe.bat
На выходе получаем imapsync.exe — запускаем его в том же окне командной строки и проверяем, должен показать справку:
Результат. Справка по всем параметрамЕсли все так, никаких ошибок нет, значит приложение готово, можно использовать.Several options are mandatory. str means string int means integer reg means regular expression cmd means command --dry : Makes imapsync doing nothing, just print what would be done without --dry. --host1 str : Source or "from" imap server. Mandatory. --port1 int : Port to connect on host1. Default is 143, 993 if --ssl1 --user1 str : User to login on host1. Mandatory. --showpasswords : Shows passwords on output instead of "MASKED". Useful to restart a complete run by just reading the log. --password1 str : Password for the user1. --host2 str : "destination" imap server. Mandatory. --port2 int : Port to connect on host2. Default is 143, 993 if --ssl2 --user2 str : User to login on host2. Mandatory. --password2 str : Password for the user2. --passfile1 str : Password file for the user1. It must contain the password on the first line. This option avoids to show the password on the command line like --password1 does. --passfile2 str : Password file for the user2. Contains the password. --ssl1 : Use a SSL connection on host1. --ssl2 : Use a SSL connection on host2. --tls1 : Use a TLS connection on host1. --tls2 : Use a TLS connection on host2. --debugssl int : SSL debug mode from 0 to 4. --timeout1 int : Connection timeout in seconds for host1. Default is 120 and 0 means no timeout at all. --timeout2 int : Connection timeout in seconds for host2. Default is 120 and 0 means no timeout at all. --authmech1 str : Auth mechanism to use with host1: PLAIN, LOGIN, CRAM-MD5 etc. Use UPPERCASE. --authmech2 str : Auth mechanism to use with host2. See --authmech1 --authuser1 str : User to auth with on host1 (admin user). Avoid using --authmech1 SOMETHING with --authuser1. --authuser2 str : User to auth with on host2 (admin user). --proxyauth1 : Use proxyauth on host1. Requires --authuser1. Required by Sun/iPlanet/Netscape IMAP servers to be able to use an administrative user. --proxyauth2 : Use proxyauth on host2. Requires --authuser2. --authmd51 : Use MD5 authentification for host1. --authmd52 : Use MD5 authentification for host2. --domain1 str : Domain on host1 (NTLM authentication). --domain2 str : Domain on host2 (NTLM authentication). --folder str : Sync this folder. --folder str : and this one, etc. --folderrec str : Sync this folder recursively. --folderrec str : and this one, etc. --folderfirst str : Sync this folder first. --folderfirst "Work" --folderfirst str : then this one, etc. --folderlast str : Sync this folder last. --folderlast "[Gmail]/All Mail" --folderlast str : then this one, etc. --nomixfolders : Do not merge folders when host1 is case sensitive while host2 is not (like Exchange). Only the first similar folder is synced (ex: Sent SENT sent -> Sent). --skipemptyfolders : Empty host1 folders are not created on host2. --include reg : Sync folders matching this regular expression --include reg : or this one, etc. in case both --include --exclude options are use, include is done before. --exclude reg : Skips folders matching this regular expression Several folders to avoid: --exclude 'fold1|fold2|f3' skips fold1, fold2 and f3. --exclude reg : or this one, etc. --subfolder2 str : Move whole host1 folders hierarchy under this host2 folder str . It does it by adding two --regextrans2 options before all others. Add --debug to see what's really going on. --automap : guesses folders mapping, for folders like "Sent", "Junk", "Drafts", "All", "Archive", "Flagged". --f1f2 str1=str2 : Force folder str1 to be synced to str2, --f1f2 overrides --automap and --regextrans2. --regextrans2 reg : Apply the whole regex to each destination folders. --regextrans2 reg : and this one. etc. When you play with the --regextrans2 option, first add also the safe options --dry --justfolders Then, when happy, remove --dry, remove --justfolders. Have in mind that --regextrans2 is applied after prefix and separator inversion. For examples see http://imapsync.lamiral.info/FAQ.d/FAQ.Folders_Mapping.txt --tmpdir str : Where to store temporary files and subdirectories. Will be created if it doesn't exist. Default is system specific, Unix is /tmp but it's often small and deleted at reboot. --tmpdir /var/tmp should be better. --pidfile str : The file where imapsync pid is written. --pidfilelocking : Abort if pidfile already exists. Usefull to avoid concurrent transfers on the same mailbox. --nolog : Turn off logging on file --logfile str : Change the default log filename (can be dirname/filename). --logdir str : Change the default log directory. Default is LOG_imapsync --prefix1 str : Remove prefix to all destination folders (usually INBOX. or INBOX/ or an empty string "") you have to use --prefix1 if host1 imap server does not have NAMESPACE capability, so imapsync suggests to use it. All other cases are bad. --prefix2 str : Add prefix to all host2 folders. See --prefix1 --sep1 str : Host1 separator in case NAMESPACE is not supported. --sep2 str : Host2 separator in case NAMESPACE is not supported. --skipmess reg : Skips messages maching the regex. Example: 'm/[\x80-ff]/' # to avoid 8bits messages. --skipmess is applied before --regexmess --skipmess reg : or this one, etc. --pipemess cmd : Apply this cmd command to each message content before the copy. --pipemess cmd : and this one, etc. --disarmreadreceipts : Disarms read receipts (host2 Exchange issue) --regexmess reg : Apply the whole regex to each message before transfer. Example: 's/\000/ /g' # to replace null by space. --regexmess reg : and this one, etc. --regexflag reg : Apply the whole regex to each flags list. Example: 's/"Junk"//g' # to remove "Junk" flag. --regexflag reg : and this one, etc. --delete : Deletes messages on host1 server after a successful transfer. Option --delete has the following behavior: it marks messages as deleted with the IMAP flag \Deleted, then messages are really deleted with an EXPUNGE IMAP command. --delete2 : Delete messages in host2 that are not in host1 server. Useful for backup or pre-sync. --delete2duplicates : Delete messages in host2 that are duplicates. Works only without --useuid since duplicates are detected with an header part of each message. --delete2folders : Delete folders in host2 that are not in host1 server. For safety, first try it like this (it is safe): --delete2folders --dry --justfolders --nofoldersizes --delete2foldersonly reg : Deleted only folders matching regex. Example: --delete2foldersonly "/^Junk$|^INBOX.Junk$/" --delete2foldersbutnot reg : Do not delete folders matching regex. Example: --delete2foldersbutnot "/Tasks$|Contacts$|Foo$/" --noexpunge : Do not expunge messages on host1. Expunge really deletes messages marked deleted. Expunge is made at the beginning, on host1 only. Newly transferred messages are also expunged if option --delete is given. No expunge is done on host2 account (unless --expunge2) --expunge1 : Expunge messages on host1 after messages transfer. --expunge2 : Expunge messages on host2 after messages transfer. --uidexpunge2 : uidexpunge messages on the host2 account that are not on the host1 account, requires --delete2 --nomixfolders : Avoid merging folders that are considered different on host1 but the same on destination host2 because of case sensitivities and insensitivities. --syncinternaldates : Sets the internal dates on host2 same as host1. Turned on by default. Internal date is the date a message arrived on a host (mtime). --idatefromheader : Sets the internal dates on host2 same as the "Date:" headers. --maxsize int : Skip messages larger (or equal) than int bytes --minsize int : Skip messages smaller (or equal) than int bytes --maxage int : Skip messages older than int days. final stats (skipped) don't count older messages see also --minage --minage int : Skip messages newer than int days. final stats (skipped) don't count newer messages You can do (+ are the messages selected): past|----maxage+++++++++++++++>now past|+++++++++++++++minage---->now past|----maxage+++++minage---->now (intersection) past|++++minage-----maxage++++>now (union) --search str : Selects only messages returned by this IMAP SEARCH command. Applied on both sides. --search1 str : Same as --search for selecting host1 messages only. --search2 str : Same as --search for selecting host2 messages only. --search CRIT equals --search1 CRIT --search2 CRIT --exitwhenover int : Stop syncing when total bytes transferred reached. Gmail per day allows 2500000000 = 2.5 GB downloaded from Gmail as host2 500000000 = 500 MB uploaded to Gmail as host1. --maxlinelength int : skip messages with a line length longer than int bytes. RFC 2822 says it must be no more than 1000 bytes. --useheader str : Use this header to compare messages on both sides. Ex: Message-ID or Subject or Date. --useheader str and this one, etc. --subscribed : Transfers subscribed folders. --subscribe : Subscribe to the folders transferred on the host2 that are subscribed on host1. On by default. --subscribeall : Subscribe to the folders transferred on the host2 even if they are not subscribed on host1. --nofoldersizes : Do not calculate the size of each folder in bytes and message counts. Default is to calculate them. --nofoldersizesatend: Do not calculate the size of each folder in bytes and message counts at the end. Default is on. --justfoldersizes : Exit after having printed the folder sizes. --syncacls : Synchronises acls (Access Control Lists). --nosyncacls : Does not synchronize acls. This is the default. Acls in IMAP are not standardized, be careful. --usecache : Use cache to speedup. --nousecache : Do not use cache. Caveat: --useuid --nousecache creates duplicates on multiple runs. --useuid : Use uid instead of header as a criterium to recognize messages. Option --usecache is then implied unless --nousecache is used. --debug : Debug mode. --debugfolders : Debug mode for the folders part only. --debugcontent : Debug content of the messages transfered. Huge ouput. --debugflags : Debug mode for flags. --debugimap1 : IMAP debug mode for host1. Very verbose. --debugimap2 : IMAP debug mode for host2. Very verbose. --debugimap : IMAP debug mode for host1 and host2. --debugmemory : Debug mode showing memory consumption after each copy. --errorsmax int : Exit when int number of errors is reached. Default is 50. --tests : Run local non-regression tests. Exit code 0 means all ok. --testslive : Run a live test with test1.lamiral.info imap server. Useful to check the basics. Needs internet connexion. --version : Print only software version. --noreleasecheck : Do not check for new imapsync release (a http request). --releasecheck : Check for new imapsync release (a http request). --noid : Do not send/receive ID command to imap servers. --justconnect : Just connect to both servers and print useful information. Need only --host1 and --host2 options. --justlogin : Just login to both host1 and host2 with users credentials, then exit. --justfolders : Do only things about folders (ignore messages). --help : print this help. Example: to synchronize imap account "test1" on "test1.lamiral.info" to imap account "test2" on "test2.lamiral.info" with test1 password "secret1" and test2 password "secret2" D:\imapsync-master\W\imapsync.exe ^ --host1 test1.lamiral.info --user1 test1 --password1 secret1 ^ --host2 test2.lamiral.info --user2 test2 --password2 secret2 Here is a [MSWin32] system (Windows NT Fronik 6.2 Build 9200 x86) With perl 5.22.1 Mail::IMAPClient 3.38 $Id: imapsync,v 1.678 2016/01/21 19:47:02 gilles Exp gilles $ New imapsync release 1.684 available Homepage: http://imapsync.lamiral.info/
Перенос почты по IMAP между серверами
- Копируем наше приложение \W\imapsync.exe в \examples\imapsync.exe. В папке \examples нас интересует несколько файлов:
- imapsync_example.bat — тестирование настроек переноса и сам перенос почты для одного ящика
- sync_loop_windows.bat и file.txt — перенос почты для массива ящиков
- Подготовка, тестирование, перенос одного ящика:
Открываем файл imapsync_example.bat и прописываем наши реквизиты и параметры:
.\imapsync.exe ^ --host1 mx.example.ru --user1 user@example.ru --password1 "Pass123" ^ --host2 imap.yandex.ru --user2 user@example.biz --password2 "Pass123" ^ --ssl1 --ssl2 --skipheader "^(?!Message-Id)" --automap ^ --regextrans2 "s/^INBOX\.(.+)/$1/" --justfolders --dry @PAUSE
Небольшое описание параметровСервер источника, логин ящика, пароль ящика:
--host1 mx.example.ru --user1 user --password1 "Pass123"
Сервер назначения, логин ящика, пароль ящика:
--host2 imap.yandex.ru --user2 user@example.biz --password2 "Pass123"
Использование SSL для сервера источника и назначения:
--ssl1 --ssl2
Игнорировать все заголовки в письме, кроме тех, что содержат «Message-Id». Этот параметр полезен в тех случаях, когда для одного письма на разных серверах генерируются разные заголовки, в моем случае они отличались. Яндекс для каждого письма добавлял одну дополнительную строчку, из-за чего письма дублировались при каждом последующем переносе почты. Если фильтровать заголовки по «Message-Id», то при каждом переносе почты, копируются только новые письма.
--skipheader "^(?!Message-Id)"
Автоматически определить и привязать папки на сервере источника к папкам на сервере назначения. Сама сравнивает названия и создает привязки, поддерживает папки с кириллицей в названиях. Inbox-> Входящие. Sent -> Отправленные…
--automap
Удаляет из названия INBOX во всех папках назначения. В моем случае IDECO все папки называет начиная с INBOX (INBOX.Sent, INBOX.Drafts и т.п.). Чтобы не создавать двойные названия в сервере назначения для папок, которые были созданы пользователем вручную. Тут стоит заметить, что это еще зависит от сервера.
--regextrans2 "s/^INBOX\.(.+)/$1/"
Выполнять операции только для папок. Письма не переносятся.
--justfolders
Эмуляция выполнения. Будет показан весь план работ, но физически ничего не переносится. Удобно для тестирования.
--dry
После прочтения описания запускаем и проверяем как произошла привязка наших папок. Если все успешно — здорово. Если нет, то можно воспользоваться параметрами ручной привязки. Например, параметры ниже создает привязку папок «INBOX.Junk» и «INBOX.Spam» к папке «Удаленные».
--f1f2 "INBOX.Junk"="&BCMENAQwBDsENQQ9BD0ESwQ1-" --f1f2 "INBOX.Spam"="&BCMENAQwBDsENQQ9BD0ESwQ1-"
Тут мы сталкиваемся с кодировкой. Чтобы определить как должны называться папки с кириллицей нужно заглянуть в логи (LOG_imapsync\*.txt), которые создаются после каждого выполнения программы.
Folders mapping from --automap feature (use --f1f2 to override any mapping): [INBOX.Junk] -> [&BCEEPwQwBDw-] = [Спам] [INBOX.Spam] -> [&BCEEPwQwBDw-] = [Спам] [INBOX.Sent] -> [&BB4EQgQ,BEAEMAQyBDsENQQ9BD0ESwQ1-] = [Отправленные] [INBOX.Drafts] -> [&BCcENQRABD0EPgQyBDgEOgQ4-] = [Черновики] [INBOX.Trash] -> [&BCMENAQwBDsENQQ9BD0ESwQ1-] = [Удаленные]
Ну, а тут уже все ясно и понятно, и сама программа предлагает нам создать ручную привязку, если это необходимо.
После прогона, убедившись, что все выглядит хорошо, удаляем параметр:
--dry
Запускаем, и проверяем как создались папки на нашем сервере назначения. Пока мы проверяем только папки. Если требуется, вносим правки в привязки. Если все выглядит так как нам нужно, отлично, переходим к письмам. Удаляем параметр:
--justfolders
Запускаем и проверяем как создаются папки и перемещаются письма на наш сервер назначения. Также вносим необходимые правки при необходимости. Если нам нужно было перенести только один ящик — то на этом мы закончили. Если нужно перенести больше, то переходим к следующему пункту.
- Перенос почты для нескольких ящиков.
Открываем файл file.txt. Этот файл содержит хорошее описание и реальный пример, для демонстрации работы. С заполнением трудностей возникнуть не должно. Закомментируем в нем все примеры, и напишем свои данные ниже. Перечисляем все наши ящики которые хотим перенести.
mx.example.ru;user;Pass123;imap.yandex.ru;user@example.biz;Pass123 mx.example.ru;user2;Pass321;imap.yandex.ru;user2@example.biz;Pass321
Открываем файл sync_loop_windows.bat на редактирование, и после строк:
imapsync ^ --host1 %%G --user1 %%H --password1 %%I ^ --host2 %%J --user2 %%K --password2 %%L %arguments%
Добавляем наши параметры, не забывая про символ "^" в конце строки после %arguments%, получаем в итоге:
imapsync ^ --host1 %%G --user1 %%H --password1 %%I ^ --host2 %%J --user2 %%K --password2 %%L %arguments% ^ --ssl1 --ssl2 --skipheader "^(?!Message-Id)" --automap ^ --regextrans2 "s/^INBOX\.(.+)/$1/" --justfolders --dry
Сохраняем и запускаем. Проверяем как прошла отработка и удаляем параметры --justfolders --dry для запуска реального переноса всех папок и писем.
Теперь остается только ждать завершения переноса почтовых ящиков и проверять логи. Для каждого ящика будет создан свой лог.
Дополнение
Несколько основных моментов которые я для себя выделил при изучении программы и отладке ошибок:
- В папке \examples\FAQ.d есть отличный FAQ с примерами
- При экспериментах с заголовками поможет параметр "--debug". В этом режиме показывается содержимое всех заголовков каждого письма.
- В качестве сервера источника и назначения можно использовать один и тот же сервер, например, для удаления дубликатов.
Компиляция и работоспособность протестирована на Windows 10 64bit и Windows 7 64bit.
Constin
Это был imapsync курильщика)
Вот нормальный imapsync:
#apt-get install makepasswd rcs perl-doc libio-tee-perl git libmail-imapclient-perl libdigest-md5-file-perl libterm-readkey-perl libfile-copy-recursive-perl build-essential make automake libunicode-string-perl
#git clone git://github.com/imapsync/imapsync.git
#cpan
cpan> install Unicode::String
#cd imapsync
# make install
#imapsync --help
OstaninKI
Да, я буду разворачивать отдельную ВМ под Win системой ради этой задачи, Вы меня убедили!
Constin
Редко когда почтовый сервис и без linux. Даже если Exchange, то все равно фронтендом обычно стоит что-то на linux. Поэтому я и удивился. Но вообще статья полезная, хоть imapsync уже 70 лет в интернете, не все о нем знают.
OstaninKI
Зачем в полной Windows структуре ставить на фронтенд для Exchange что-то на Linux? Может поделитесь подобными примерами реализаций в продуктовых средах больших компаний? :)
Constin
В гомогенной windows структуре linux сервер невозможен, ибо это приведет к тому, что она перестанет быть таковой. Плюс скорее всего это увеличит стоимость обслуживания. Но в сxеме, когда Exchange будет использоваться в качестве MDA (если необходимы end сервисы, предоставляемые Exchange), а, скажем, Postfix в качестве MTA, есть свою плюсы:
1. Postfix более гибок в плане маршрутизации.
2. Postfix требует меньше ресурсов для отсечения нежелательного траффика, более устойчив к атакам. Одним словом, он прикрывает Exchange'y задницу.
OstaninKI
В таком случае накладываются отдельные операционные затраты на linux-админа, который стоит гораздо дороже win-админа, как показала практика.
У Exchange есть роль Edge transport server'а, которая как раз выполняет подобные функции, как антиспам можно использовать тот же ORF, который ставится на сервер с Edge-ролью. Со всем этим справится тот же человек, что и поддерживает Exchange, ведь это, читай, компоненты самого Exchange (2016 в расчет не беру, т.к. там идж и хаб роли совмещены, емнип). Для Postfix придется разворачивать отдельный linux-сервер, который будет должен админить отдельный человек, специализирующийся как раз на linux (см. 1 параграф).
navion
Оно редко востребовано. В голову приходит только Jira, которая подменяет адрес отправителя в уведомлениях, но в этом случае MTA надо ставить прямо на неё.
Не смог найти последнего RCE для Exchange, а с вирусами и спамом намного лучше справятся специализированные железки (IronPort и т.п.).
Constin
> Оно редко востребовано. В голову приходит только Jira.
По мне так маршрутизация почты это что-то сродни маршрутизации сетей. Вы можете всю жизнь сидеть на 192.168.0.0/24 и пару раз настроить vpn. Или вам повезет и вы будете решать интересные задачи. Мне попадались интересные кейсы и я ни разу не говорил, что это невозможно. Совсем. Мне кажется, что с почтовым трафиком можно сотворить, что душа пожелает, но нужен инструмент и это не Exchange. Я не гуру Exchange, знаю, что парни делают на нем интересные штуки, но трудозатраты несопоставимы.
> IronPort и т.п
Это такой черный ящик за деньги. Последний раз я видел IronPort 7 лет назад, оно собирает сигнатуры и делится ими со всеми остальными железками. И еще у них отличные маркетологи. Хорошо. Но когда на выходе ты должен получить хороший процент отсечения спама 99,9%, не должен терять реальный трафик и ты можешь это делать без платного железа, зачем оно тебе?
navion
Exchange использует топологию из AD, что правительно и естественно в мире Windows.
По-моему значительно проще, нет требований по latency, а фейловер сделан на уровне приложений.
В таком случае пора открывать свой почтовый сервис или идти работать в
PostiniGoogle.IronPort из разряда «поставил и забыл», после несложной настройки спам просто перестаёт приходить и можно заниматься другими вещами. Ложных срабатываний значительно меньше GMail или Exchange Online, но нет нормальной интеграции с Outlook/OWA и фильтры могли бы сделать покрасивее.
Constin
> Exchange использует топологию из AD, что правительно и естественно в мире Windows.
Я не понимаю, что значит эта фраза. Exchange интегрирован в AD, AD это ldap, никто не мешает вам брать оттуда информацию для любого другого MTA. Единственный плюс Exchange это околопочтовые плюшки, когда пользователи сидят в windows экосистеме. Те МDA.
>По-моему значительно проще, нет требований по latency, а фейловер сделан на уровне приложений.
Я про полет фантазии, несколько раз натыкался на то, что было нельзя сделать в Exchange, но можно в Postfix/Exim, особенно учитывая то, то Postfix может превратиться в набор перловых скриптов ( и это его минус тоже).Вы захотите примеров, но сейчас я не смогу вспомнить, потому что редко работаю с Exchange. (Exchange тоже может кушать скрипты, но пусть этим занимаются ребята, повернутые на майкрософте, я не хочу тратить свое время на их изучение. Имхо это не очень перспективно. Но я говорил, что существуют люди, которые делают неплохие вещи с Exchange)
> В таком случае пора открывать свой почтовый сервис
99,9% мало для сервисов типа gmail (
> IronPort из разряда «поставил и забыл»
Да — черный ящик. Только не поставил и забыл, а купил и забыл. Но если хоть немного любите почтовики, то сможете сделать все сами. Это интересно.
>Ложных срабатываний значительно меньше GMail
те Cisco сделала массовый продукт лучше, чем один из самых лучших почтовых сервисов в мире? Хочу статистику… Не вериться. У гугла почтовый трафик явно больше, чем у девайсов ironport, ему и карты в руки.
P.S. На самом деле хочу отдельное комьюнити по почте. Даже ребята, собирающие почтовые комбайны для масс, лажают в конфигах и делают костыли.
navion
Примеры для них тоже сойдут и за обратными далеко ходить не надо: у конкурентов нет ничего похожего на DAG.
Почтовик — это инструмент, его не надо любить, надо эффективно решать поставленные задачи. Для своего антиспама негде взять аналитику, которая срезает 90% спамеров ещё на этапе подключения.
Гуглу и MS не очень интересен наш рынок, а Cisco мониторит половину интернета.
Каждому своё, я не вижу перспективы в своём сервере с Postfix при наличии ПДД или Mail.ru для бизнеса.
Оно будет немногочисленным, что-то вроде этого.
Constin
>у конкурентов нет ничего похожего на DAG.
И вы опять путаете mta и mda, DAG не занимается маршрутизацией почты, Postifx не занимается организацией ее хранения и раздачей. И кто такие конкуренты Exchange? У майкрософта там свой атмосфера. Просто не надо путать теплое с мягким. HA баз данных нет? HA storage нет? Да этих реализаций существует огромное количество. Вам просто надо в голове разделить сервисы Exchange на реальные сервисы и рассматривать их не как одно целое, а как комплекс.
> негде взять аналитику, которая срезает 90% спамеров ещё на этапе подключения.
На этапе подключения я вам срежу 98-99 % без всякой аналитики( и даже без блэклистов, которыми балуется ironport) Вот вам и пробел в знаниях при использовании черных ящиков «подключил и забыл» 90 процентов это 90 писем из 100, это вообще ниочем.
> Гуглу и MS не очень интересен наш рынок, а Cisco мониторит половину интернета.
Cisco не мониторит почтовый трафик половины интернета.
Не очень понятно деление на наш и не наш рынок в плане срезки спама. Сигнатуры могут отличаться, почтовый трафик у гугла все равно больше. Погрешности минимальны.
>Каждому своё, я не вижу перспективы в своём сервере с Postfix при наличии ПДД или Mail.ru для бизнеса.
В нынешних реалиях держать корпоративную почту(сервера) у российских компаний тоже самое, что отдавать ее конкурентам или любым другим заинтересованным лицам в погонах.
В профессиональном же плане это вас не развивает, наоборот. Или же направление именно вашей деятельности вообще совсем другое, тогда не стоит вам заниматься сервисами, которые связанны с внутрикорпоративной информацией или безопасностью.
И нет никакого такого сервера с Postfix. Есть сервис Postfix. Почтовая же система — это кластер из множества различных сервисов.
navion
Какой смысл их рассматривать отдельно? Отдельно MTA нужен только сервисам рассылок и Яндекса с их хайлоадом, а компании внедряют интегрированное решение.
Консистентные на уровне приложений, с lagged copy, защитой очереди и минимальным оверхедом?
Constin
> Какой смысл их рассматривать отдельно?
Чтобы не путать их и не ставить DAG в пример, когда речь идет об MTA.
> Поделитесь секретом, только без грейлистинга — это зло похлеще RBL.
Да, грейлистами. Только я считаю, что зло это RBL, так как из-за RBL вы можете потерять честный трафик, а из-за грейлиста нет. ( те тоже можете, но это должен быть совсем криво настроенный сервер не соблюдающий RFC)
> Какие риски у турагенства, кафе или стоматологической клиники?
Согласен, мелким компаниям можно не тратить деньги на почтовые сервера.
DikSoft
— Это как раз ни разу не проблема.
Перегонял с помощью ImapSync почту из exim/dovecot в Exchange 2013. Удобно, что можно сначала в фоне перегнать основной объём, а потом перед переходом уже инкрементно быстро «догнать».
Специально развернул для тестирования виртуалки на Centos и Ubuntu для ImapSync. Результат — глюк на глюке с кодировками. Примерно 5% писем — в треш. Постоянные вылеты по ошибке. Потом собрал, как и автор ImapSync из исходников на Windows.
Итого:
1) Из терабайта почты только примерно 100 Mb не перенеслось на автомате.
2) Скорость оказалась выше примерно в полтора раза. Конфигурации виртуалок были одинаковые. Выполнялось под Win 8.1 Pro x64.
Минусы: пришлось подбирать версию Perl, с которой собралось без ошибок.
Вот эта связка оказалась самой удачной:
Here is a [MSWin32] system (Windows NT 6.2 Build 9200 amd64)
With perl 5.16.3 Mail::IMAPClient 3.35
$Id: imapsync,v 1.637
Строка в «родном» батнике использовалась следующая:
@imapsync --host1 10.100.100.1 --user1 %%G --password1 %%H --port1 143 --authmech1 LOGIN --host2 mail.MyDomain.ru --user2 %%I --password2 %%J --port2 993 --ssl2 --maxsize 50000000 --maxlinelength 9900 --regexflag «s/\\Flagged//g» --disarmreadreceipts --addheader --no-modules_version --showpasswords
BigD
А есть инструменты для бэкапа почты по IMAP на компьютер с Win?
kirosvi
Thunderbird, The Bat и много-много других.
justhabrauser
> Вот нормальный imapsync:
> make install
рутом, ага.
Нормальный imapsync: sudo dnf install imapsync; man imapsync.
PS. а так да — автор забыл вставить тег «Windows»
fronik
Добавил тег
Constin
под пользователем у вас не хватит прав, чтобы записать в /usr/bin/
install: cannot create regular file '/usr/bin/imapsync': Permission denied
И я удивлен, что у Федоры он есть в репозитарии. В debian/ubuntu/centos его нет.
justhabrauser
> под пользователем у вас не хватит прав, чтобы записать в /usr/bin/
man sudo
> И я удивлен, что у Федоры он есть в репозитарии. В debian/ubuntu/centos его нет.
Повод стать мейнтейнером деба :-)
Constin
> man sudo
Как-то даже неудобно писать о том, что технически разницы между # make install и $sudo make install нет. Те ваш изначальный комментарий противоречит самому себе.
Это уже похоже на троллинг. Я заканчиваю беседу.
justhabrauser
> Как-то даже неудобно писать о том, что технически разницы между # make install и $sudo make install нет.
Технически разница есть (man sudoers), но Вы правы — это была шутка.
Естественно ни «make install» рутом ни «sudo make install» пользователем нельзя делать ни в коем случае.
Надо ставить из пакетов.
Constin
> Технически разница есть (man sudoers)
нет. Или объяснитесь.
> ни в коем случае.
А что вы делаете, когда пакета нет? Машете рукой, типа да не очень-то и хотелось, пойду лучше пива выпью ) Или собираете пакет сами?
P.S. Мы понимаем, что самостоятельная сборка приводит к усложнению апдейта системы. Просто вы настолько же категоричны, насколько неправы.
justhabrauser
>> Технически разница есть (man sudoers)
> нет. Или объяснитесь.
В /etc/sudoers можно накрутить всякоразно ограничений для sudo. За запрет на «rm -rf /» не скажу, но что можно запускать, а что нельзя — накрутить можно.
> > ни в коем случае.
> А что вы делаете, когда пакета нет? Машете рукой, типа да не очень-то и хотелось, пойду лучше пива выпью ) Или собираете пакет сами?
Вы не поверите, но именно собираю пакет. Это не слишком сложно, зато на порядок безопаснее. Особенно если использовать чужие машины (типа OpenSuse Build Service или Fedora koji).
Куда сложнее искать каждый раз, не завалялось ли у кого нечаянно «rm -rf /» (или его аналог) в make install. Случаи были. Просто из-за неаккуратности девелов.
Constin
при sudo su без ключей типа -s, у вас окружение и whoami — root.
я конечно посмотрю, но мне кажется, что ограничить там ничего нельзя.
justhabrauser
> я конечно посмотрю
Хорошая идея.
Например:
## Allows members of the users group to mount and unmount the cdrom as root
# %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom
Ну и дальше — от фантазии зависит.
> но мне кажется
Не хорошая идея.
vitruss
Может надо собрать пакет, а не делать make install?
justhabrauser
Ну я на это и намякивал :-)
justhabrauser
> Как-то даже неудобно писать о том, что технически разницы между # make install и $sudo make install нет
при:
1. /etc/groups: wheel: ..., Вы
2. /etc/sudoers: %wheel ALL=(ALL) NOPASSWD: ALL
скорее всего нет.
Alexey9846
Для аналогичной цели использовал Larch (https://github.com/rgrove/larch):
$ gem install larch
$ larch --from imaps://mail.example.com --to imaps://imap.gmail.com --all --exclude Spam Trash Drafts "[Gmail]/*"
OstaninKI
Он, к сожалению, больше не поддерживается
Alexey9846
Да, печально. Но пока работать от этого он не перестал — без проблем перекинул ~20к сообщений из gmail в icloud.
OstaninKI
А может сталкивались с импортом/экспортом в/из Exchange 2013/2016? imapsync, емнип, делает это с «полтычка»
З.Ы.: для ларча прописана поддержка Exchange 2003 только
navion
IMAP везде стандартный, версия Exchange важна только для MAPI и там есть свои (платные) инструменты.
DikSoft
Не совсем так, однако. C Exchange 2013 в качестве source ImapSync без извращений на стороне Exchange не работает, что, кстати и в Supported profiles на сайте автора написано.