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

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

Содержание

1 Описание

  • isync / mbsync — программа для синхронизации IMAP и локальных почтовых файлов.
  • isync — старое название (для совместимости).

Домашняя страница: https://isync.sourceforge.io/.

2 Установка

  • Gentoo
    emerge isync
    

3 Настройка

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

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

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

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

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

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

    #!/bin/sh
    
    MAILDIR=~/Maildir
    
    # make mailbox directories
    grep -e "^IMAPAccount" ~/.mbsyncrc | cut -d" " -f2 | xargs -I {} -n 1 mkdir -p "${MAILDIR}/{}"
    
  • Делаем конфигурационный файл для mbsync. Файл называется ~/.mbsyncrc.

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

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

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

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

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

  • Может потребоваться для разных провайдеров увеличить тайм-аут соединения (по умолчанию равно 20):
    # Increase timeout
    Timeout 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):
    • отметить Автоматическое стирание выключено (ожидать, пока клиент не обновит данные на сервере) (==Turn Auto Expunge Off);
    • отметить Архивировать сообщение (по умолчанию) (Archive message (default)).
    • отметить Отправить письмо в корзину (Send email to trash).
  • При использовании двуфакторной аутентификации (2FA) необходимо использовать пароль приложения (см. Почта. Подключение к Google).
    # IMAPAccount (gmail)
    
    IMAPAccount account@gmail.com
    Host imap.gmail.com
    User account@gmail.com
    # Pass ***************
    ## To store the password in an encrypted file use PassCmd instead of Pass
    # PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.authinfo.gpg | awk '/machine account@gmail.com/ {print $6}'"
    # PassCmd "pass email/google.com/account@gmail.com@apppassword"
    PassCmd "pass email/google.com/account@gmail.com"
    Port 993
    SSLType IMAPS
    AuthMechs LOGIN
    SSLVersions TLSv1.2
    # Increase timeout
    Timeout 120
    
    IMAPStore account@gmail.com-remote
    Account account@gmail.com
    
    MaildirStore account@gmail.com-local
    Path ~/Maildir/account@gmail.com/
    Inbox ~/Maildir/account@gmail.com/Inbox
    SubFolders Verbatim
    
    IMAPStore account@gmail.com-remote
    Account account@gmail.com
    
    Channel account@gmail.com-inbox
    Far :account@gmail.com-remote:"INBOX"
    Near :account@gmail.com-local:"INBOX"
    CopyArrivalDate yes
    Create Both
    Expunge Both
    SyncState *
    
    Channel account@gmail.com-trash
    # Far :account@gmail.com-remote:"[Gmail]/Trash"
    Far :account@gmail.com-remote:"[Gmail]/&BBoEPgRABDcEOAQ9BDA-"
    Near :account@gmail.com-local:"Trash"
    CopyArrivalDate yes
    Create Both
    Expunge Both
    SyncState *
    
    Channel account@gmail.com-spam
    # Far :account@gmail.com-remote:"[Gmail]/Spam"
    Far :account@gmail.com-remote:"[Gmail]/&BCEEPwQwBDw-"
    Near :account@gmail.com-local:"Spam"
    CopyArrivalDate yes
    Create Both
    Expunge Both
    SyncState *
    
    Channel account@gmail.com-all
    # Far :account@gmail.com-remote:"[Gmail]/All Mail"
    Far :account@gmail.com-remote:"[Gmail]/&BBIEQQRP- &BD8EPgRHBEIEMA-"
    Near :account@gmail.com-local:"Archive"
    CopyArrivalDate yes
    Create Both
    Expunge Both
    SyncState *
    
    Channel account@gmail.com-drafts
    # Far :account@gmail.com-remote:"[Gmail]/Drafts"
    Far :account@gmail.com-remote:"[Gmail]/&BCcENQRABD0EPgQyBDgEOgQ4-"
    Near :account@gmail.com-local:"Drafts"
    CopyArrivalDate yes
    Create Both
    Expunge Both
    SyncState *
    
    Channel account@gmail.com-sent
    # Far :account@gmail.com-remote:"[Gmail]/Sent Mail"
    Far :account@gmail.com-remote:"[Gmail]/&BB4EQgQ,BEAEMAQyBDsENQQ9BD0ESwQ1-"
    Near :account@gmail.com-local:"Sent"
    CopyArrivalDate yes
    Create Both
    Expunge Both
    SyncState *
    
    Group account@gmail.com
    Channel account@gmail.com-inbox
    Channel account@gmail.com-trash
    Channel account@gmail.com-all
    Channel account@gmail.com-spam
    Channel account@gmail.com-drafts
    Channel account@gmail.com-sent
    

3.4.2 Apple

  • https://www.icloud.com/mail
    # IMAPAccount (Apple)
    
    IMAPAccount account@icloud.com
    Host imap.mail.me.com
    PORT 993
    User account@icloud.com
    PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.authinfo.gpg | awk '/machine account@icloud.com/ {print $6}'"
    AuthMechs LOGIN
    SSLType IMAPS
    SSLVersion TLSv1.2
    # Increase timeout
    Timeout 120
    
    MaildirStore account@icloud.com-local
    Path ~/Maildir/account@icloud.com/
    Inbox ~/Maildir/account@icloud.com/Inbox
    SubFolders Verbatim
    
    IMAPStore account@icloud.com-remote
    Account account@icloud.com
    
    Channel account@icloud.com-all
    Far :account@icloud.com-remote:
    Near :account@icloud.com-local:
    # Included mailboxes
    Patterns "INBOX" "Archive" "Trash" "Spam" "Drafts"
    CopyArrivalDate yes
    Create Both
    Expunge Both
    SyncState *
    
    Channel account@icloud.com-sent
    Far :account@icloud.com-remote:"Sent Messages"
    Near :account@icloud.com-local:"Sent"
    CopyArrivalDate yes
    Create Both
    Expunge Both
    SyncState *
    
    Group account@icloud.com
    Channel account@icloud.com-sent
    Channel account@icloud.com-all
    

3.4.3 GMX

  • https://www.gmx.com/
  • https://www.gmx.net/
    # IMAPAccount (GMX)
    
    IMAPAccount account@gmx.com
    Host imap.gmx.com
    User account@gmx.com
    PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.authinfo.gpg | awk '/machine account@gmx.com/ {print $6}'"
    AuthMechs LOGIN
    SSLType IMAPS
    SSLVersion TLSv1.2
    # Increase timeout
    Timeout 120
    
    MaildirStore account@gmx.com-local
    Path ~/Maildir/account@gmx.com/
    Inbox ~/Maildir/account@gmx.com/Inbox
    SubFolders Verbatim
    
    IMAPStore account@gmx.com-remote
    Account account@gmx.com
    
    Channel account@gmx.com
    Far :account@gmx.com-remote:
    Near :account@gmx.com-local:
    Patterns "INBOX" "Archive" "Trash" "Spam" "Drafts" "Sent"
    CopyArrivalDate yes
    Create Both
    Expunge Both
    SyncState *
    

3.4.4 Proton

  • https://protonmail.com/
  • Заблокирован в России.
  • Для работы необходимо установить локальное приложение https://protonmail.com/bridge/.
    # IMAPAccount (Proton)
    
    IMAPAccount account@protonmail.com
    Host 127.0.0.1
    PORT 1111
    User account@protonmail.com
    PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.authinfo.gpg | awk '/machine account@protonmail.com/ {print $6}'"
    AuthMechs LOGIN
    SSLType STARTTLS
    SSLVersion TLSv1.2
    # Increase timeout
    Timeout 120
    
    MaildirStore account@protonmail.com-local
    Path ~/Maildir/account@protonmail.com/
    Inbox ~/Maildir/account@protonmail.com/Inbox
    SubFolders Verbatim
    
    IMAPStore account@protonmail.com-remote
    Account account@protonmail.com
    
    Channel account@protonmail.com
    Far :account@protonmail.com-remote:
    Near :account@protonmail.com-local:
    Patterns "INBOX" "Archive" "Trash" "Spam" "Drafts" "Sent"
    CopyArrivalDate yes
    Create Both
    Expunge Both
    SyncState *
    

3.4.5 Yandex

  • https://yandex.ru/
  • Почта. Yandex. Настройка почтового клиента
  • Пароли приложений
    • При подключении паролей приложений обычные пароли использовать не получится. Придётся сгенерить пароль приложения (см. Почта. Yandex. Пароли приложений).
    • Для паролей pass:
      • Пароль для приложения почты можно назвать account@yandex.ru@apppassword@mail.
      • Пароль для smtp следует именовать как account@yandex.ru@smtp.yandex.ru (это тот же пароль для почтового приложения).
  • Конфигурация:
    ## IMAPAccount (Yandex)
    
    IMAPAccount account@yandex.ru
    Host imap.yandex.ru
    User account@yandex.ru
    # Pass ***************
    ## To store the password in an encrypted file use PassCmd instead of Pass
    # PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.authinfo.gpg | awk '/machine account@yandex.ru/ {print $6}'"
    # PassCmd "pass email/yandex.ru/account@yandex.ru@apppassword@mail"
    PassCmd "pass email/yandex.ru/account@yandex.ru"
    AuthMechs LOGIN
    SSLType IMAPS
    SSLVersion TLSv1.2
    # Increase timeout
    Timeout 120
    
    MaildirStore account@yandex.ru-local
    Path ~/Maildir/account@yandex.ru/
    Inbox ~/Maildir/account@yandex.ru/Inbox
    SubFolders Verbatim
    
    IMAPStore account@yandex.ru-remote
    Account account@yandex.ru
    
    Channel account@yandex.ru
    Far :account@yandex.ru-remote:
    Near :account@yandex.ru-local:
    Patterns "INBOX" "Archive" "Trash" "Spam" "Drafts" "Sent"
    CopyArrivalDate yes
    Create Both
    Expunge Both
    SyncState *
    

3.4.6 Mail.ru

  • Почта. Mail.ru. Настройка почтового клиента
  • Пароли приложений
    • При подключении паролей приложений обычные пароли использовать не получится. Придётся сгенерить пароль приложения (см. Пароли mail.ru).
    • Для паролей pass:
      • Пароль для приложения почты можно назвать account@mail.ru@apppassword@mail.
      • Пароль для smtp следует именовать как account@mail.ru@smtp.mail.ru (это тот же пароль для почтового приложения).
  • Конфигурация:
    ## IMAPAccount (Mail.ru)
    
    IMAPAccount account@mail.ru
    Host imap.mail.ru
    User account@mail.ru
    # Pass ***************
    ## To store the password in an encrypted file use PassCmd instead of Pass
    # PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.authinfo.gpg | awk '/machine account@mail.ru@apppassword@mail/ {print $6}'"
    PassCmd "pass email/mail.ru/account@mail.ru@apppassword@mail"
    AuthMechs LOGIN
    SSLType IMAPS
    SSLVersion TLSv1.2
    # Increase timeout
    Timeout 120
    
    MaildirStore account@mail.ru-local
    Path ~/Maildir/account@mail.ru/
    Inbox ~/Maildir/account@mail.ru/Inbox
    SubFolders Verbatim
    
    IMAPStore account@mail.ru-remote
    Account account@mail.ru
    
    Channel account@mail.ru-inbox
    Far :account@mail.ru-remote:"INBOX"
    Near :account@mail.ru-local:"INBOX"
    CopyArrivalDate yes
    Create Both
    Expunge Both
    SyncState *
    
    Channel account@mail.ru-trash
    Far :account@mail.ru-remote:"Корзина"
    Near :account@mail.ru-local:"Trash"
    CopyArrivalDate yes
    Create Both
    Expunge Both
    SyncState *
    
    Channel account@mail.ru-spam
    Far :account@mail.ru-remote:"Спам"
    Near :account@mail.ru-local:"Spam"
    CopyArrivalDate yes
    Create Both
    Expunge Both
    SyncState *
    
    Channel account@mail.ru-drafts
    Far :account@mail.ru-remote:"Черновики"
    Near :account@mail.ru-local:"Drafts"
    CopyArrivalDate yes
    Create Both
    Expunge Both
    SyncState *
    
    Channel account@mail.ru-archive
    Far :account@mail.ru-remote:"Архив"
    Near :account@mail.ru-local:"Archive"
    CopyArrivalDate yes
    Create Both
    Expunge Both
    SyncState *
    
    Channel account@mail.ru-sent
    Far :account@mail.ru-remote:"Отправленные"
    Near :account@mail.ru-local:"Sent"
    CopyArrivalDate yes
    Create Both
    Expunge Both
    SyncState *
    
    Group account@mail.ru
    Channel account@mail.ru-inbox
    Channel account@mail.ru-trash
    Channel account@mail.ru-spam
    Channel account@mail.ru-drafts
    Channel account@mail.ru-archive
    Channel account@mail.ru-sent
    

3.4.7 Office365

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

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

      ## IMAPAccount (outlook.office365.com)
      
      IMAPAccount account@example.com
      Host smtp.office365.com
      User account@example.com
      # Pass ***************
      ## To store the password in an encrypted file use PassCmd instead of Pass
      # PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.authinfo.gpg | awk '/machine account@example.com/ {print $6}'"
      PassCmd "pass email/example.com/account@example.com"
      AuthMechs LOGIN
      SSLType IMAPS
      SSLVersion TLSv1.2
      # Increase timeout
      Timeout 120
      PipelineDepth 50
      
      MaildirStore account@example.com-local
      Path ~/Maildir/account@example.com/
      Inbox ~/Maildir/account@example.com/Inbox
      SubFolders Verbatim
      
      IMAPStore account@example.com-remote
      Account account@example.com
      
      Channel account@example.com-inbox
      Far :account@example.com-remote:"INBOX"
      Near :account@example.com-local:"INBOX"
      CopyArrivalDate yes
      Create Both
      Expunge Both
      SyncState *
      
      Channel account@example.com-trash
      Far :account@example.com-remote:"&BCMENAQwBDsENQQ9BD0ESwQ1-"
      Near :account@example.com-local:"Trash"
      CopyArrivalDate yes
      Create Both
      Expunge Both
      SyncState *
      
      Channel account@example.com-spam
      Far :account@example.com-remote:"&BB0ENQQ2BDUEOwQwBEIENQQ7BEwEPQQwBE8- &BD8EPgRHBEIEMA-"
      Near :account@example.com-local:"Spam"
      CopyArrivalDate yes
      Create Both
      Expunge Both
      SyncState *
      
      Channel account@example.com-drafts
      Far :account@example.com-remote:"&BCcENQRABD0EPgQyBDgEOgQ4-"
      Near :account@example.com-local:"Drafts"
      CopyArrivalDate yes
      Create Both
      Expunge Both
      SyncState *
      
      Channel account@example.com-archive
      Far :account@example.com-remote:"Archive1"
      Near :account@example.com-local:"Archive"
      CopyArrivalDate yes
      Create Both
      Expunge Both
      SyncState *
      
      Channel account@example.com-sent
      Far :account@example.com-remote:"&BB4EQgQ,BEAEMAQyBDsENQQ9BD0ESwQ1-"
      Near :account@example.com-local:"Sent"
      CopyArrivalDate yes
      Create Both
      Expunge Both
      SyncState *
      
      Group account@example.com
      Channel account@example.com-inbox
      Channel account@example.com-trash
      Channel account@example.com-spam
      Channel account@example.com-drafts
      Channel account@example.com-archive
      Channel account@example.com-sent
      
    • Конфигурация SMTP для Emacs:

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

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

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

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

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

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

3.4.8 Yahoo.com

  • Почта. Yahoo.com. Настройка почтового клиента
  • Конфигурация:
    ## IMAPAccount (Yahoo.com)
    
    IMAPAccount account@yahoo.com
    Host imap.mail.yahoo.com
    User account@yahoo.com
    # PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.authinfo.gpg | awk '/machine account@yahoo.com/ {print $6}'"
    PassCmd "gopass email/yahoo.com/account@yahoo.com@apppassword"
    AuthMechs LOGIN
    SSLType IMAPS
    SSLVersion TLSv1.2
    # Increase timeout
    Timeout 120
    PipelineDepth 50
    
    MaildirStore account@yahoo.com-local
    Path ~/Maildir/account@yahoo.com/
    Inbox ~/Maildir/account@yahoo.com/Inbox
    SubFolders Verbatim
    
    IMAPStore account@yahoo.com-remote
    Account account@yahoo.com
    
    Channel account@yahoo.com-inbox
    Far :account@yahoo.com-remote:"INBOX"
    Near :account@yahoo.com-local:"INBOX"
    CopyArrivalDate yes
    Create Both
    Expunge Both
    SyncState *
    
    Channel account@yahoo.com-trash
    Far :account@yahoo.com-remote:"Trash"
    Near :account@yahoo.com-local:"Trash"
    CopyArrivalDate yes
    Create Both
    Expunge Both
    SyncState *
    
    Channel account@yahoo.com-spam
    Far :account@yahoo.com-remote:"Bulk"
    Near :account@yahoo.com-local:"Spam"
    CopyArrivalDate yes
    Create Both
    Expunge Both
    SyncState *
    
    Channel account@yahoo.com-drafts
    Far :account@yahoo.com-remote:"Draft"
    Near :account@yahoo.com-local:"Drafts"
    CopyArrivalDate yes
    Create Both
    Expunge Both
    SyncState *
    
    Channel account@yahoo.com-archive
    Far :account@yahoo.com-remote:"Archive"
    Near :account@yahoo.com-local:"Archive"
    CopyArrivalDate yes
    Create Both
    Expunge Both
    SyncState *
    
    Channel account@yahoo.com-sent
    Far :account@yahoo.com-remote:"Sent"
    Near :account@yahoo.com-local:"Sent"
    CopyArrivalDate yes
    Create Both
    Expunge Both
    SyncState *
    
    Group account@yahoo.com
    Channel account@yahoo.com-inbox
    Channel account@yahoo.com-trash
    Channel account@yahoo.com-spam
    Channel account@yahoo.com-drafts
    Channel account@yahoo.com-archive
    Channel account@yahoo.com-sent
    

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

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

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

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

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

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

    mbsync --all
    

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

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

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

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

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

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

    # ~/.config/systemd/user/mbsync.timer
    
    [Unit]
    Description=Mailbox synchronization timer
    
    [Timer]
    OnBootSec=2m
    OnUnitActiveSec=5m
    Unit=mbsync.service
    
    [Install]
    WantedBy=timers.target
    

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

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

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

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

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

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

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

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

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

Похожие