Advertisement
MuadDiib

Mail.RU to MAilCow Migration

Dec 12th, 2024
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.40 KB | Source Code | 0 0
  1. <?php
  2.  
  3. // Укажите токен и домен
  4. $token = 'ВАШ_API_ТОКЕН'; // Замените на ваш API токен
  5. $domain = 'ВАШ_ДОМЕН';   // Замените на ваш домен
  6.  
  7. // URL для запроса списка пользователей
  8. $url = "https://biz.mail.ru/api/v1/domains/$domain/mailboxes";
  9.  
  10. // Настройка CURL
  11. $ch = curl_init();
  12. curl_setopt($ch, CURLOPT_URL, $url);
  13. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  14. curl_setopt($ch, CURLOPT_HTTPHEADER, [
  15.     "Authorization: Bearer $token"
  16. ]);
  17.  
  18. // Выполнение запроса
  19. $response = curl_exec($ch);
  20.  
  21. // Проверка на ошибки CURL
  22. if (curl_errno($ch)) {
  23.     echo "CURL Error: " . curl_error($ch);
  24.     exit;
  25. }
  26.  
  27. curl_close($ch);
  28.  
  29. // Обработка ответа
  30. $data = json_decode($response, true);
  31. if (isset($data['errors'])) {
  32.     echo "API Error: " . print_r($data['errors'], true);
  33.     exit;
  34. }
  35.  
  36. // Подготовка данных для импорта в MailCow
  37. $mailcowApiUrl = 'https://demo.mailcow.email/api/v1/add/mailbox'; // URL API MailCow
  38. $mailcowToken = 'ВАШ_MAILCOW_API_ТОКЕН'; // Замените на ваш API токен MailCow
  39. $mailcowHeaders = [
  40.     "Content-Type: application/json",
  41.     "X-API-Key: $mailcowToken"
  42. ];
  43.  
  44. $importedUsers = [];
  45. $csvData = "ИМЯ_ЯЩИКА:ПАРОЛЬ:ИМЯ\n"; // Заголовок для CSV файла
  46. foreach ($data['mailboxes'] as $mailbox) {
  47.     $firstname = $mailbox['firstname'] ?? '';
  48.     $lastname = $mailbox['lastname'] ?? '';
  49.     $name = trim("$firstname $lastname");
  50.     $username = $mailbox['username'] ?? '';
  51.     $password = bin2hex(random_bytes(8)); // Генерация случайного пароля
  52.  
  53.     $mailcowData = [
  54.         "domain" => $domain,
  55.         "name" => $name,
  56.         "password" => $password,
  57.         "password2" => $password,
  58.         "quota" => 10240 // 10GB
  59.     ];
  60.  
  61.     // Отправка запроса в MailCow
  62.     $ch = curl_init();
  63.     curl_setopt($ch, CURLOPT_URL, $mailcowApiUrl);
  64.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  65.     curl_setopt($ch, CURLOPT_POST, true);
  66.     curl_setopt($ch, CURLOPT_HTTPHEADER, $mailcowHeaders);
  67.     curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($mailcowData));
  68.  
  69.     $response = curl_exec($ch);
  70.  
  71.     if (curl_errno($ch)) {
  72.         echo "Ошибка при импорте пользователя $name: " . curl_error($ch) . "\n";
  73.         continue;
  74.     }
  75.  
  76.     $responseCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
  77.     if ($responseCode !== 200) {
  78.         echo "Ошибка при импорте пользователя $name: HTTP $responseCode\n";
  79.         continue;
  80.     }
  81.  
  82.     curl_close($ch);
  83.  
  84.     $importedUsers[] = $name;
  85.     $csvData .= "$username:$password:$name\n"; // Добавляем строку в CSV
  86. }
  87.  
  88. // Сохранение списка импортированных пользователей в JSON
  89. $jsonFileName = 'imported_mailcow_users.json';
  90. file_put_contents($jsonFileName, json_encode($importedUsers, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));
  91.  
  92. // Сохранение списка импортированных пользователей в CSV
  93. $csvFileName = 'imported_mailcow_users.csv';
  94. file_put_contents($csvFileName, $csvData);
  95.  
  96. echo "Импорт пользователей завершён. Список сохранён в $jsonFileName и $csvFileName";
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement