Почта. Синхронизация. mbsync

Настройка синхронизации IMAP с помощью mbsync.

Содержание

1 Описание

2 Установка

  • Gentoo
    1emerge isync
    

3 Настройка

3.1 Общие положения

  • Все учётные записи приводятся к единой структуре.
  • Папки IMAP унифицируются следующим образом: Inbox, Archive, Sent, Trash, Drafts, Spam.
  • В принципе, никто не мешает использовать названия папок самого IMAP-сервера.

3.2 Конфигурация учётных записей

  • Учётные записи делаем по полному наименованию почты. Я это делаю потому, что у меня есть почтовые ящики с одинаковыми именами в разных почтовых доменах.

  • Создать необходимые каталоги:

    1mkdir -p ~/Maildir/account@domain
    
  • Можно создать каталоги все скопом из конфигурационного файла ~/.config/isyncrc:

    1#!/bin/sh
    2
    3MAILDIR=~/Maildir
    4
    5## Make mailbox directories
    6grep -e "^IMAPAccount" ~/.config/isyncrc | cut -d" " -f2 | xargs -I {} -n 1 mkdir -p "${MAILDIR}/{}"
    7mbsync -a
    
    Распечатка 1: Файл ~/bin/mbsync-mkdir
  • Делаем конфигурационный файл для mbsync. Файл называется ~/.config/isyncrc.

  • Чтобы не хранить пароли в конфигурационном файле (оператор Pass) будем использовать хранение пароля, совместимое с emacs (с использованием оператора PassCmd):

  • Начиная с версии mbsync-1.4.1 операторы Master и Slave заменены на Far и Near.

3.3 Общие параметры

  • Установка параметра CopyArrivalDate:
    1# By default (CopyArrivalDate no), if you copy an old email from inbox to
    2# Archive (e.g.) it will get the date of the copy assigned, instead of just
    3# keeping its original date of arrival! Also see:
    4# https://rakhim.org/fastmail-setup-with-emacs-mu4e-and-mbsync-on-macos/
    5# https://wiki.archlinux.org/index.php/Isync#Emails_on_remote_server_have_the_wrong_date
    6CopyArrivalDate yes
    

3.4 Примеры конфигурации для разных провайдеров

  • Может потребоваться для разных провайдеров увеличить тайм-аут соединения (по умолчанию равно 20):
    1# Increase timeout
    2Timeout 120
    
  • Вместо pass можно использовать gopass. При последовательном запуске нескольких pass утилита может не находить ключ pgp.
  • Папки IMAP можно получить либо через web-интерфейс, либо в командной строке (см. Запросы по протоколу imap из командной строки)

3.4.1 Gmail

  • https://www.google.com/intl/ru/gmail/about/
  • Почта. Google. Настройка почтового клиента
  • Из-за структуры тегов Gmail необходимо явно задавать названия почтовых ящиков в директивах Far и Near.
  • Синхронизацию папки Отправленные можно отключить. Google сохраняет всю электронную почту в папке Все сообщения. В результате можно получить локальные дубликаты.
  • Рекомендуется на сайте Gmail настроить в пункте Настройки > Пересылка и POP/IMAP > Доступ по протоколу IMAP (Settings > Forwarding and POP/IMAP > IMAP Access):
    • отметить Автоматическое стирание включено (немедленно обновлять данные на сервере; по умолчанию) Auto-Expunge on - Immediately update the server. (default);
    • отметить Автоматическое стирание выключено (ожидать, пока клиент не обновит данные на сервере) (Turn Auto Expunge Off);
    • отметить Архивировать сообщение (по умолчанию) (Archive message (default)).
    • отметить Отправить письмо в корзину (Send email to trash).
  • При использовании двуфакторной аутентификации (2FA) необходимо использовать пароль приложения (см. Почта. Подключение к Google).
     1# IMAPAccount (gmail)
     2
     3IMAPAccount account@gmail.com
     4Host imap.gmail.com
     5User account@gmail.com
     6# Pass ***************
     7## To store the password in an encrypted file use PassCmd instead of Pass
     8# PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.authinfo.gpg | awk '/machine account@gmail.com/ {print $6}'"
     9# PassCmd "pass email/google.com/account@gmail.com@apppassword"
    10PassCmd "pass email/google.com/account@gmail.com"
    11Port 993
    12TLSType IMAPS
    13AuthMechs LOGIN
    14TLSVersions +1.2 +1.3
    15# Increase timeout
    16Timeout 120
    17
    18IMAPStore account@gmail.com-remote
    19Account account@gmail.com
    20
    21MaildirStore account@gmail.com-local
    22Path ~/Maildir/account@gmail.com/
    23Inbox ~/Maildir/account@gmail.com/Inbox
    24SubFolders Verbatim
    25
    26IMAPStore account@gmail.com-remote
    27Account account@gmail.com
    28
    29Channel account@gmail.com-inbox
    30Far :account@gmail.com-remote:"INBOX"
    31Near :account@gmail.com-local:"INBOX"
    32CopyArrivalDate yes
    33Create Both
    34Expunge Both
    35SyncState *
    36
    37Channel account@gmail.com-trash
    38# Far :account@gmail.com-remote:"[Gmail]/Trash"
    39Far :account@gmail.com-remote:"[Gmail]/&BBoEPgRABDcEOAQ9BDA-"
    40Near :account@gmail.com-local:"Trash"
    41CopyArrivalDate yes
    42Create Both
    43Expunge Both
    44SyncState *
    45
    46Channel account@gmail.com-spam
    47# Far :account@gmail.com-remote:"[Gmail]/Spam"
    48Far :account@gmail.com-remote:"[Gmail]/&BCEEPwQwBDw-"
    49Near :account@gmail.com-local:"Spam"
    50CopyArrivalDate yes
    51Create Both
    52Expunge Both
    53SyncState *
    54
    55Channel account@gmail.com-all
    56# Far :account@gmail.com-remote:"[Gmail]/All Mail"
    57Far :account@gmail.com-remote:"[Gmail]/&BBIEQQRP- &BD8EPgRHBEIEMA-"
    58Near :account@gmail.com-local:"Archive"
    59CopyArrivalDate yes
    60Create Both
    61Expunge Both
    62SyncState *
    63
    64Channel account@gmail.com-drafts
    65# Far :account@gmail.com-remote:"[Gmail]/Drafts"
    66Far :account@gmail.com-remote:"[Gmail]/&BCcENQRABD0EPgQyBDgEOgQ4-"
    67Near :account@gmail.com-local:"Drafts"
    68CopyArrivalDate yes
    69Create Both
    70Expunge Both
    71SyncState *
    72
    73Channel account@gmail.com-sent
    74# Far :account@gmail.com-remote:"[Gmail]/Sent Mail"
    75Far :account@gmail.com-remote:"[Gmail]/&BB4EQgQ,BEAEMAQyBDsENQQ9BD0ESwQ1-"
    76Near :account@gmail.com-local:"Sent"
    77CopyArrivalDate yes
    78Create Both
    79Expunge Both
    80SyncState *
    81
    82Group account@gmail.com
    83Channel account@gmail.com-inbox
    84Channel account@gmail.com-trash
    85Channel account@gmail.com-all
    86Channel account@gmail.com-spam
    87Channel account@gmail.com-drafts
    88Channel account@gmail.com-sent
    

3.4.2 Apple

  • https://www.icloud.com/mail
     1# IMAPAccount (Apple)
     2
     3IMAPAccount account@icloud.com
     4Host imap.mail.me.com
     5PORT 993
     6User account@icloud.com
     7PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.authinfo.gpg | awk '/machine account@icloud.com/ {print $6}'"
     8AuthMechs LOGIN
     9TLSType IMAPS
    10TLSVersions +1.2 +1.3
    11# Increase timeout
    12Timeout 120
    13
    14MaildirStore account@icloud.com-local
    15Path ~/Maildir/account@icloud.com/
    16Inbox ~/Maildir/account@icloud.com/Inbox
    17SubFolders Verbatim
    18
    19IMAPStore account@icloud.com-remote
    20Account account@icloud.com
    21
    22Channel account@icloud.com-all
    23Far :account@icloud.com-remote:
    24Near :account@icloud.com-local:
    25# Included mailboxes
    26Patterns "INBOX" "Archive" "Trash" "Spam" "Drafts"
    27CopyArrivalDate yes
    28Create Both
    29Expunge Both
    30SyncState *
    31
    32Channel account@icloud.com-sent
    33Far :account@icloud.com-remote:"Sent Messages"
    34Near :account@icloud.com-local:"Sent"
    35CopyArrivalDate yes
    36Create Both
    37Expunge Both
    38SyncState *
    39
    40Group account@icloud.com
    41Channel account@icloud.com-sent
    42Channel account@icloud.com-all
    

3.4.3 GMX

  • https://www.gmx.com/
  • https://www.gmx.net/
     1# IMAPAccount (GMX)
     2
     3IMAPAccount account@gmx.com
     4Host imap.gmx.com
     5User account@gmx.com
     6PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.authinfo.gpg | awk '/machine account@gmx.com/ {print $6}'"
     7AuthMechs LOGIN
     8TLSType IMAPS
     9TLSVersions +1.2 +1.3
    10# Increase timeout
    11Timeout 120
    12
    13MaildirStore account@gmx.com-local
    14Path ~/Maildir/account@gmx.com/
    15Inbox ~/Maildir/account@gmx.com/Inbox
    16SubFolders Verbatim
    17
    18IMAPStore account@gmx.com-remote
    19Account account@gmx.com
    20
    21Channel account@gmx.com
    22Far :account@gmx.com-remote:
    23Near :account@gmx.com-local:
    24Patterns "INBOX" "Archive" "Trash" "Spam" "Drafts" "Sent"
    25CopyArrivalDate yes
    26Create Both
    27Expunge Both
    28SyncState *
    

3.4.4 Proton

  • https://protonmail.com/
  • Заблокирован в России.
  • Для работы необходимо установить локальное приложение https://protonmail.com/bridge/.
     1# IMAPAccount (Proton)
     2
     3IMAPAccount account@protonmail.com
     4Host 127.0.0.1
     5PORT 1111
     6User account@protonmail.com
     7PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.authinfo.gpg | awk '/machine account@protonmail.com/ {print $6}'"
     8AuthMechs LOGIN
     9TLSType STARTTLS
    10TLSVersions +1.2 +1.3
    11# Increase timeout
    12Timeout 120
    13
    14MaildirStore account@protonmail.com-local
    15Path ~/Maildir/account@protonmail.com/
    16Inbox ~/Maildir/account@protonmail.com/Inbox
    17SubFolders Verbatim
    18
    19IMAPStore account@protonmail.com-remote
    20Account account@protonmail.com
    21
    22Channel account@protonmail.com
    23Far :account@protonmail.com-remote:
    24Near :account@protonmail.com-local:
    25Patterns "INBOX" "Archive" "Trash" "Spam" "Drafts" "Sent"
    26CopyArrivalDate yes
    27Create Both
    28Expunge Both
    29SyncState *
    

3.4.5 Yandex

  • https://yandex.ru/
  • Почта. Yandex. Настройка почтового клиента
  • Пароли приложений
    • При подключении паролей приложений обычные пароли использовать не получится. Придётся сгенерить пароль приложения (см. Почта. Yandex. Пароли приложений).
    • Для паролей pass:
      • Пароль для приложения почты можно назвать account@yandex.ru@apppassword@mail.
      • Пароль для smtp следует именовать как account@yandex.ru@smtp.yandex.ru (это тот же пароль для почтового приложения).
  • Конфигурация:
     1## IMAPAccount (Yandex)
     2
     3IMAPAccount account@yandex.ru
     4Host imap.yandex.ru
     5User account@yandex.ru
     6# Pass ***************
     7## To store the password in an encrypted file use PassCmd instead of Pass
     8# PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.authinfo.gpg | awk '/machine account@yandex.ru/ {print $6}'"
     9# PassCmd "pass email/yandex.ru/account@yandex.ru@apppassword@mail"
    10PassCmd "pass email/yandex.ru/account@yandex.ru"
    11AuthMechs LOGIN
    12TLSType IMAPS
    13TLSVersions +1.2 +1.3
    14# Increase timeout
    15Timeout 120
    16
    17MaildirStore account@yandex.ru-local
    18Path ~/Maildir/account@yandex.ru/
    19Inbox ~/Maildir/account@yandex.ru/Inbox
    20SubFolders Verbatim
    21
    22IMAPStore account@yandex.ru-remote
    23Account account@yandex.ru
    24
    25Channel account@yandex.ru
    26Far :account@yandex.ru-remote:
    27Near :account@yandex.ru-local:
    28Patterns "INBOX" "Archive" "Trash" "Spam" "Drafts" "Sent"
    29CopyArrivalDate yes
    30Create Both
    31Expunge Both
    32SyncState *
    

3.4.6 Mail.ru

  • Почта. Mail.ru. Настройка почтового клиента
  • Пароли приложений
    • При подключении паролей приложений обычные пароли использовать не получится. Придётся сгенерить пароль приложения (см. Пароли mail.ru).
    • Для паролей pass:
      • Пароль для приложения почты можно назвать account@mail.ru@apppassword@mail.
      • Пароль для smtp следует именовать как account@mail.ru@smtp.mail.ru (это тот же пароль для почтового приложения).
  • Конфигурация:
     1## IMAPAccount (Mail.ru)
     2
     3IMAPAccount account@mail.ru
     4Host imap.mail.ru
     5User account@mail.ru
     6# Pass ***************
     7## To store the password in an encrypted file use PassCmd instead of Pass
     8# PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.authinfo.gpg | awk '/machine account@mail.ru@apppassword@mail/ {print $6}'"
     9PassCmd "pass email/mail.ru/account@mail.ru@apppassword@mail"
    10AuthMechs LOGIN
    11TLSType IMAPS
    12TLSVersions +1.2 +1.3
    13# Increase timeout
    14Timeout 120
    15
    16MaildirStore account@mail.ru-local
    17Path ~/Maildir/account@mail.ru/
    18Inbox ~/Maildir/account@mail.ru/Inbox
    19SubFolders Verbatim
    20
    21IMAPStore account@mail.ru-remote
    22Account account@mail.ru
    23
    24Channel account@mail.ru-inbox
    25Far :account@mail.ru-remote:"INBOX"
    26Near :account@mail.ru-local:"INBOX"
    27CopyArrivalDate yes
    28Create Both
    29Expunge Both
    30SyncState *
    31
    32Channel account@mail.ru-trash
    33Far :account@mail.ru-remote:"Корзина"
    34Near :account@mail.ru-local:"Trash"
    35CopyArrivalDate yes
    36Create Both
    37Expunge Both
    38SyncState *
    39
    40Channel account@mail.ru-spam
    41Far :account@mail.ru-remote:"Спам"
    42Near :account@mail.ru-local:"Spam"
    43CopyArrivalDate yes
    44Create Both
    45Expunge Both
    46SyncState *
    47
    48Channel account@mail.ru-drafts
    49Far :account@mail.ru-remote:"Черновики"
    50Near :account@mail.ru-local:"Drafts"
    51CopyArrivalDate yes
    52Create Both
    53Expunge Both
    54SyncState *
    55
    56Channel account@mail.ru-archive
    57Far :account@mail.ru-remote:"Архив"
    58Near :account@mail.ru-local:"Archive"
    59CopyArrivalDate yes
    60Create Both
    61Expunge Both
    62SyncState *
    63
    64Channel account@mail.ru-sent
    65Far :account@mail.ru-remote:"Отправленные"
    66Near :account@mail.ru-local:"Sent"
    67CopyArrivalDate yes
    68Create Both
    69Expunge Both
    70SyncState *
    71
    72Group account@mail.ru
    73Channel account@mail.ru-inbox
    74Channel account@mail.ru-trash
    75Channel account@mail.ru-spam
    76Channel account@mail.ru-drafts
    77Channel account@mail.ru-archive
    78Channel account@mail.ru-sent
    

3.4.7 Office365

  1. Аутентификация LOGIN

    • Конфигурация mbsync:

       1## IMAPAccount (outlook.office365.com)
       2
       3IMAPAccount account@example.com
       4Host smtp.office365.com
       5User account@example.com
       6# Pass ***************
       7## To store the password in an encrypted file use PassCmd instead of Pass
       8# PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.authinfo.gpg | awk '/machine account@example.com/ {print $6}'"
       9PassCmd "pass email/example.com/account@example.com"
      10AuthMechs LOGIN
      11TLSType IMAPS
      12TLSVersions +1.2 +1.3
      13# Increase timeout
      14Timeout 120
      15PipelineDepth 50
      16
      17MaildirStore account@example.com-local
      18Path ~/Maildir/account@example.com/
      19Inbox ~/Maildir/account@example.com/Inbox
      20SubFolders Verbatim
      21
      22IMAPStore account@example.com-remote
      23Account account@example.com
      24
      25Channel account@example.com-inbox
      26Far :account@example.com-remote:"INBOX"
      27Near :account@example.com-local:"INBOX"
      28CopyArrivalDate yes
      29Create Both
      30Expunge Both
      31SyncState *
      32
      33Channel account@example.com-trash
      34Far :account@example.com-remote:"&BCMENAQwBDsENQQ9BD0ESwQ1-"
      35Near :account@example.com-local:"Trash"
      36CopyArrivalDate yes
      37Create Both
      38Expunge Both
      39SyncState *
      40
      41Channel account@example.com-spam
      42Far :account@example.com-remote:"&BB0ENQQ2BDUEOwQwBEIENQQ7BEwEPQQwBE8- &BD8EPgRHBEIEMA-"
      43Near :account@example.com-local:"Spam"
      44CopyArrivalDate yes
      45Create Both
      46Expunge Both
      47SyncState *
      48
      49Channel account@example.com-drafts
      50Far :account@example.com-remote:"&BCcENQRABD0EPgQyBDgEOgQ4-"
      51Near :account@example.com-local:"Drafts"
      52CopyArrivalDate yes
      53Create Both
      54Expunge Both
      55SyncState *
      56
      57Channel account@example.com-archive
      58Far :account@example.com-remote:"Archive1"
      59Near :account@example.com-local:"Archive"
      60CopyArrivalDate yes
      61Create Both
      62Expunge Both
      63SyncState *
      64
      65Channel account@example.com-sent
      66Far :account@example.com-remote:"&BB4EQgQ,BEAEMAQyBDsENQQ9BD0ESwQ1-"
      67Near :account@example.com-local:"Sent"
      68CopyArrivalDate yes
      69Create Both
      70Expunge Both
      71SyncState *
      72
      73Group account@example.com
      74Channel account@example.com-inbox
      75Channel account@example.com-trash
      76Channel account@example.com-spam
      77Channel account@example.com-drafts
      78Channel account@example.com-archive
      79Channel account@example.com-sent
      
    • Конфигурация SMTP для Emacs:

      1(setq send-mail-function    'smtpmail-send-it
      2      smtpmail-smtp-server  "example.com"
      3      smtpmail-stream-type  'starttls
      4      smtpmail-smtp-service 587)
      
  1. Аутентификация Oauth2 с DavMail

    • Аутентификацию oauth2 можно настроить с помощью DavMail (см. DavMail).

    • Сначала настройте DavMail аутентификацией O365Interactive или O365Manual, а потом переключите в режим O365Modern.

    • В конфигурации меняется блок аутентификации:

       1IMAPAccount account@example.com
       2Host 127.0.0.1
       3Port 1143
       4User account@example.com
       5# Pass ***************
       6## To store the password in an encrypted file use PassCmd instead of Pass
       7# PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.authinfo.gpg | awk '/machine account@example.com/ {print $6}'"
       8PassCmd "pass email/example.com/account@example.com"
       9AuthMechs LOGIN
      10TLSType None
      11## Increase timeout
      12Timeout 120
      13PipelineDepth 50
      
    • Конфигурация SMTP для Emacs:

      1(setq send-mail-function    'smtpmail-send-it
      2      smtpmail-smtp-server  "localhost"
      3      smtpmail-stream-type  'plain
      4      smtpmail-smtp-service 1025)
      

3.4.8 Yahoo.com

  • Почта. Yahoo.com. Настройка почтового клиента
  • Конфигурация:
     1## IMAPAccount (Yahoo.com)
     2
     3IMAPAccount account@yahoo.com
     4Host imap.mail.yahoo.com
     5User account@yahoo.com
     6# PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.authinfo.gpg | awk '/machine account@yahoo.com/ {print $6}'"
     7PassCmd "gopass email/yahoo.com/account@yahoo.com@apppassword"
     8AuthMechs LOGIN
     9TLSType IMAPS
    10TLSVersions +1.2 +1.3
    11# Increase timeout
    12Timeout 120
    13PipelineDepth 50
    14
    15MaildirStore account@yahoo.com-local
    16Path ~/Maildir/account@yahoo.com/
    17Inbox ~/Maildir/account@yahoo.com/Inbox
    18SubFolders Verbatim
    19
    20IMAPStore account@yahoo.com-remote
    21Account account@yahoo.com
    22
    23Channel account@yahoo.com-inbox
    24Far :account@yahoo.com-remote:"INBOX"
    25Near :account@yahoo.com-local:"INBOX"
    26CopyArrivalDate yes
    27Create Both
    28Expunge Both
    29SyncState *
    30
    31Channel account@yahoo.com-trash
    32Far :account@yahoo.com-remote:"Trash"
    33Near :account@yahoo.com-local:"Trash"
    34CopyArrivalDate yes
    35Create Both
    36Expunge Both
    37SyncState *
    38
    39Channel account@yahoo.com-spam
    40Far :account@yahoo.com-remote:"Bulk"
    41Near :account@yahoo.com-local:"Spam"
    42CopyArrivalDate yes
    43Create Both
    44Expunge Both
    45SyncState *
    46
    47Channel account@yahoo.com-drafts
    48Far :account@yahoo.com-remote:"Draft"
    49Near :account@yahoo.com-local:"Drafts"
    50CopyArrivalDate yes
    51Create Both
    52Expunge Both
    53SyncState *
    54
    55Channel account@yahoo.com-archive
    56Far :account@yahoo.com-remote:"Archive"
    57Near :account@yahoo.com-local:"Archive"
    58CopyArrivalDate yes
    59Create Both
    60Expunge Both
    61SyncState *
    62
    63Channel account@yahoo.com-sent
    64Far :account@yahoo.com-remote:"Sent"
    65Near :account@yahoo.com-local:"Sent"
    66CopyArrivalDate yes
    67Create Both
    68Expunge Both
    69SyncState *
    70
    71Group account@yahoo.com
    72Channel account@yahoo.com-inbox
    73Channel account@yahoo.com-trash
    74Channel account@yahoo.com-spam
    75Channel account@yahoo.com-drafts
    76Channel account@yahoo.com-archive
    77Channel account@yahoo.com-sent
    

4 Синхронизация

4.1 Настройка синхронизации

  • Будем настраивать синхронизацию нескольких учётных записей.
  • Для хранения паролей будем использовать аутентификацию, совместимую с emacs (например, файл формата .authinfo) (см. Emacs. Почта. Парольная аутентификация).

4.2 Запуск из командной строки

  • Синхронизация конкретной учётной записи:

    1mbsync <chanel>
    
  • Синхронизация всех учётных записей:

    1mbsync --all
    

4.3 Запуск по таймеру

  • Для синхронизации с помощью systemd надо добавить сервис и таймер.

  • После создания этих файлов добавьте mbsync.timer в systemctl:

    1systemctl --user --now enable mbsync.timer
    
  • ~/.config/systemd/user/mbsync.service.

    1# ~/.config/systemd/user/mbsync.service
    2
    3[Unit]
    4Description=Mailbox synchronization service
    5
    6[Service]
    7Type=oneshot
    8ExecStart=/usr/bin/mbsync -a
    
  • ~/.config/systemd/user/mbsync.service. Здесь мы после синхронизации запускаем индексирование для mu.

    1# ~/.config/systemd/user/mbsync.service
    2
    3[Unit]
    4Description=Mailbox synchronization service
    5
    6[Service]
    7Type=oneshot
    8ExecStart=-/usr/bin/mbsync -a
    9ExecStartPost=-/usr/bin/mu index
    
    • Знак - перед командой позволяет игнорировать код возврата.
  • ~/.config/systemd/user/mbsync.timer. Настраиваем запуск mbsync через 2 минуты после загрузки, а затем запускаем каждые 5 минут.

     1# ~/.config/systemd/user/mbsync.timer
     2
     3[Unit]
     4Description=Mailbox synchronization timer
     5
     6[Timer]
     7OnBootSec=2m
     8OnUnitActiveSec=5m
     9Unit=mbsync.service
    10
    11[Install]
    12WantedBy=timers.target
    

5 Поддержка почтовых файлов

5.1 Удаление дубликатов

6 Перенос почтовых файлов на другую машину

  • Имя почтового файла содержит имя хоста. Поэтому просто так синхронизировать почтовую базу между хостами не получится.
  • Синхронизация может понадобиться для случая, когда у Вас большие почтовые ящики, а сервер квотирует почтовый трафик.
  • Предлагается скопировать текущую базу на другой хост (в качестве первоначальной постовой базы), а потом переименовать файлы почты.
    • Необходимо скопировать данные с host1 на host2.
    • Проведём проверку переименования:
      1cd ~/Maildir/
      2find . -iname "*host1*" | sed 'p;s:host1:host2:' | xargs -n2 -p mv
      
    • Проведём переименование, убрав ключ p у xargs:
      1cd ~/Maildir/
      2find . -iname "*host1*" | sed 'p;s:host1:host2:' | xargs -n2 mv
      

7 Технические моменты

7.1 Имена почтовых файлов

  • Информация по почтовым файлам хранится либо в каталоге ~/.mbsync в файлах вида:
    1<remote account>:<remote!folder>:<local account>:<local!folder>
    
  • Либо информация хранится в почтовых папках в файлах .mbsyncstate (параметр SyncState *).
  • В файле .uidvalidity хранится последняя отметка времени и идентификатор.
  • Файлы сообщений именуются по шаблону:
    1<timestamp>.<PID>_<counter>.<hostname>,U=<increment>:2,<flags>
    

Дмитрий Сергеевич Кулябов
Дмитрий Сергеевич Кулябов
Профессор кафедры теории вероятностей и кибербезопасности

Мои научные интересы включают физику, администрирование Unix и сетей.

Похожие