Понадобилось провести ревизию корпоративных почтовых ящиков на yandex mail. Так как почтовых доменов около десятка, а общее число ящиков в районе тысячи, подготовил скрипт powershell, формирующий по каждому почтовому домену csv-файл со списком почтовых ящиков домена. Скрипт обращается к API yandex по PddToken, который несложно запросить по следующей ссылке для каждого домена. Официальную документацию по API yandex mail можно почитать здесь. Ну и собственно сам скрипт powershell с комментариями:
cls
# Функция экспорта списка почтовых ящиков домена. Передаваемые параметры - PddToken для подключения к API и имя домена
function ExportMailboxesListFromDomain ($PddToken, $domain){
# Задаем полный путь csv-файла. Имя файла по имени домена.
$Path = "C:\tmp\"+$domain+".csv"
# Формируем запрос API - см. документацию по API
$pddimpUrl = 'https://pddimp.yandex.ru'
$api = '/api2/admin/email/list'
$URL = "$pddimpUrl"+"$api"
$Headers = @{}
$Headers.PddToken = $PddToken
$Body = @{}
$Body.domain = $domain
$Body.page = 1
# Отправляем запрос API
$InvokeWebRequest = Invoke-WebRequest -URI $URL -Method GET -Headers $Headers -Body $Body
# Перевариваем ответ в родной формат powershell
$a = $InvokeWebRequest.Content | ConvertFrom-Json
# Перебираем массив почтовых ящиков с выборкой полей login (email ящика), fio (полное имя), enabled (блокирован или нет), ready (заполнена анкета, активирован или нет). Передаем значения в csv-файл
foreach ($i in $a.accounts){
$i | Select-Object login, fio, enabled, ready | Export-Csv -Path $Path -Encoding "UTF8" -Append -Force -NoTypeInformation
}
# Ответ на запрос API постраничный (30 аккаунтов на страницу).
$pages = $a.pages;
# Повторяем запрос для всех страниц, результаты добавляем в csv-файл
for ($n = 2; $n -le $pages; $n++){
$Body.page = $n
$InvokeWebRequest = Invoke-WebRequest -URI $URL -Method GET -Headers $Headers -Body $Body
$a = $InvokeWebRequest.Content | ConvertFrom-Json
foreach ($i in $a.accounts){
$i | Select-Object login, fio, enabled, ready | Export-Csv -Path $Path -Encoding "UTF8" -Append -Force -NoTypeInformation
}
}
}
# Указываем последовательно имена доменов, их PddToken для доступа к API и вызываем функцию, передавая PddToken и имя домена
$PddToken = "2DZLMPQ3ZHI7CZZ6P3NPTI9TOF2FKNIHCW8CKIHM0BCAAPZMWGXA"
$domain = "domain1.com"
ExportMailboxesListFromDomain $PddToken $domain
$PddToken = "GDZKOYYCE7MC1QJUNK06VNX9MD1RWJWFGQB1OCNQ8KF0PY6USVBK"
$domain = "domain1.ru"
ExportMailboxesListFromDomain $PddToken $domain
$PddToken = "BNXXH4O5N7UDEHLBR0OGRYOMKN7W97I6YNKCWKELXHC0EQ9JFD5P"
$domain = "domain2.com"
ExportMailboxesListFromDomain $PddToken $domain
$PddToken = "4H9YDA7ITRCIRJNJPIU0EKXILYELYODDEDWEFRLSFYLEQY7ICHBC"
$domain = "domain2.ru"
ExportMailboxesListFromDomain $PddToken $domain
В результате в папке C:\tmp\ для каждого домена выгрузится список всех почтовых ящиков в отдельном csv-файле, который можно открыть в Excel. Чтобы получить наглядную таблицу, надо выбрать весь столбец и разбить текст по столбцам, выбрав запятую в качестве разделителя:
После чего сохранить в xls-формат. Впоследствии из полученных таблиц можно будет сформировать таблицы со списком почтовых ящиков, которые надо заблокировать или удалить, перевести их в формат csv, который «скормить» другому скрипту, реализующему данный функционал опять же посредством запроса API. Но об этом во 2-й части статьи.