Процедура миграции на Яндекс.Почту

Появилась задача сделать почти 300 ящиков на Яндекс.Почте для домена.
Изначально пост имел название "Чекер почтовых ящиков" - это часть миграции, но получился о шагах миграции корпоративной почты с левых, глючых почтовых служб на нормальный Яндекс)

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

Пришлось много парсить :) Фактически это руководство о том, как переезжать на Яндекс.почту

Подтверждение прав на домен

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

Определить названия ящиков

Сохраняем страничку на диск, проходимся по ней грепом несколько раз, после чего убираем повторяющиеся ящики:

$ cd /tmp
$ grep "@domain.ru" file_from_adminpanel.html > draft.txt
$ grep -o '[[:alnum:]+\.\_\-]*@[[:alnum:]+\.\_\-]*' draft.txt | sort -u > emails.csv

Сгенерить пароли

Пароли я сгенерил отдельно в другой файл (чтоб потом в OO Calc слить два файла по столбцам) - вырожение озаначает что нужно сгенерить случайный набор и добавить его в файл в pwds количество раз, равное количеству строк в файле emails.csv (т.е. столько, сколько почтовых ящиков)


$ for i in `seq 1 $(seq 1 `wc -l emails.csv | awk '{print $1}`); \
do mktemp -u XXXXXXXX >> pwds; \
done

Совместить ящики и пароли в едином файле

Теперь в OO Calc открыть emails.csv, а файл pwds с паролями в чем нить другом, например в geany. Скопировать всё содержимое pwds и вставить в ячейку 1B - получится 2 столбца email:password. Можно и нужно это дело сохранить :)

Непосредственное создание ящиков

Тут я очень очень тупанул - мне требовалось создать почти 300 ящиков! А форма в яндексе не позволяет загружать csv как это сделанно в Google Apps - только по одному! Я отчаянно забил все адреса руками, благо есть копирование выделением мышки.

Не делайте так, если много ящиков! У Яндекса есть API для управлением ящиками, которое я не видел ((

Протестировать

Набросал скриптик на пхп, который долбится по каждому ящику и пишет либо ok либо fail - смог залогинится или нет, соответственно

На входе - файл emails.csv в формате login,pass - при экспорте из ОО обратите внимание на ковычки дял строк - их НЕ должно быть. Также нужно ввести адрес pop3 сервера


<?php

$EMAILS = "./emails.csv";
$POP3HOST = "pop.yandex.ru";

function isValidEmailAccount($username, $password, $pop3host, $port = 110) {
return @(imap_open("{"."$pop3host:$port/pop3/notls"."}", $username, $password));
}

echo "Checking..\n";

foreach (@file($EMAILS) as $n => $line) {
list($email, $password) = explode(',', $line);
echo ($n+1) . ". {$email} - " . (isValidEmailAccount($email.'1', $password, $POP3HOST) ? "ok!" : "fail") . "\n";
}

Получается нечто такого:

ФинишЪ

На этом всё, можно пользоваться адекватным сервисом (:

Для удобства можно сделать урл для входа в почту mail.domain.ru - для этого нужно добавить CNAME запись mail, которая указывает на domain.mail.yandex.net. Подробности в их документации

И да, не забыть указать mx запись на mx.yandex.ru после создания всех ящиков