Кондибас (kondybas) wrote,
Кондибас
kondybas

Міграційне

Оце для клієнта вивчав наявні можливості для міграції фірмової пошти з гугля на стенделон. Варіантів виявилось не так багато. `fetchmail` обламується на гугльовій двофакторній авторизації, хоча і є можливість створити однофакторний app-password. Робити викачку в ТВ і потім експортувати - довго і муторно, а при великих об'ємах листів в акаунті іще й пов'язане з постійними вильотами ТВ. Але виявилося, що є в гугла можливість тотального бекапу всіх даних, пов'язаних з вашим акаунтом.

Ідете осюди: https://takeout.google.com і спочатку зкидаєте все однією кнопкою "Не вибирати нічого", а затим вже вибираєте, дані з якого сервісу вам потрібні. Майте на увазі, що якщо цього не зробить, і ви - злісний ютубер, то вам в архів запхне усі оригінали ваших роликів, шо ви їх викладали. А гуглофотоси запхнуть в архів усі ваші фотографії та відосики. Я вибрав тільки гмейл і натиснув "Далі". Формат 'tgz' мені рідніший за 'zip', але більшості потрібен саме 'zip'. Максимальний розмір архіву я задав у 50 ГБ, сповіщення вказав через той же гмейл, і натиснув "Створити архів".

Десь через годину мені прийшов лист із лінком на архів для зкачування. Всередині виявився один великий файл у доісторичному форматі, коли всі 60к+ листів загальним об'ємом у 1.5ГБ запхані в один-єдиний здоровенний текстовий файл у форматі "MBOX". А нормальний поштовик використовує "MDIR++", задля шустроти роботи та різних функціональних плюшок. Довелося мучити `dovecot`, аби він водночас працював одразу з двома форматами поштового стораджа. Вийшло приблизно так:
namespace pri {
  location      = maildir:/data/mail/%d/%n:UTF-8
  prefix        =
  separator     = .
  inbox         = yes
  list          = yes
}

namespace sec {
  location      = mbox:/data/mail/%d/%n/GMAIL
  prefix        = "GMail."
  separator     = .
  inbox         = no
  list          = yes
}


Ще трохи шаманства, і вуаля - в поштовику з'являється доступна по POP/IMAP папочка з усіма листами з гугля. Незручностей виявлено дві.

Перше - `dovecot` довго індексує цей файл при першому зверненні. В мене це зайняло хвилин 5-7. І всі подальші операції також сильно гальмують через сам формат МВОХа. Тому першою операцією повинне бути переміщення всіх листів з МВОХа у заздалегіть створений підкаталог у MDIRі. При цьому кожен лист буде поміщено в окремий файл, і проста операція видалення листа зсередини МВОХа не буде вимагати перелопачування всього того величезного файла.

Друга незручність в тім, що в тому МВОХі листи всі вперемішку. І відправлені, і отримані, і чернетки, і чого там тільки нема. В принципі, я за півгодини повністю розсортував оті 60к+ листів вручну, просто пошуком по відправнику. Але якщо це діло довірить простому юзеру, то результат буде непередбачуваний. Так чи інакше, ця проблема виникає при будь-якій методі міграції, і бороти її все одно доведеться.
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 20 comments