Синхронизируйте Gmail с помощью mbsync (isync) на Debian Linux, используя XOAUTH2.

Вопрос или проблема

Я пытаюсь синхронизировать свои письма из gmail на мой локальный почтовый сервер, используя mbsync. Но я постоянно получаю ошибку Error: SASL(-4): no mechanism available: No worthy mechs found

Вот мой файл .mbsyncrc:

#IMAP сервер, с которого вы хотите скопировать письма.
IMAPAccount original
Host imap.gmail.com
User [email protected]
AuthMechs XOAUTH2
Pass access_token_recieved_from_google
UseIMAPS yes
CertificateFile /etc/ssl/certs/ca-certificates.crt

# IMAP сервер, на который вы хотите скопировать письма.
IMAPAccount target
Host local.mail.server.host
User local_user
Pass somepass
AuthMechs LOGIN
UseIMAPS yes
CertificateFile /etc/ssl/certs/ca-certificates.crt

# Связывает IMAP сервер с удаленным, используемым ниже. Обратите внимание, что Account сейчас установлен на 'original' -- мы установим его на 'target' позже!
IMAPStore my-remote
Account original

# Локальное хранилище, которое мы будем использовать. Обратите внимание на слеш в конце Path!
MaildirStore my-local
Path ~/mail/
Inbox ~/mail/INBOX/

# Здесь происходит волшебство. Обратите внимание, что Sync сейчас установлен на 'Pull' -- позже мы установим его на 'Push'!
Channel my-channel
Master :my-remote:
Slave :my-local:
Patterns *
Create Both
Sync Pull
SyncState *

система: Linux stretch 4.9.0-7-amd64 #1 SMP Debian 4.9.110-1 (2018-07-05) x86_64 GNU/Linux

mbsync –version isync 1.2.1

похоже, mbsync не распознает XOAUTH2 для ключевого слова AuthMechs. Если я изменяю тип AuthMech на LOGIN, я получаю ошибку invalid credentials. (это логично, я ввел токен аутентификации вместо пароля).

Есть идеи?

.

Ответ или решение

Для синхронизации электронной почты с сервиса Gmail на локальный почтовый сервер в Debian Linux, используя mbsync (isync) и аутентификацию XOAUTH2, необходимо учитывать ряд важных аспектов. Прежде всего, проблема, с которой вы столкнулись, связана с отсутствием доступных механизмов аутентификации в mbsync версии 1.2.1 для использования XOAUTH2, что приводит к ошибке "Error: SASL(-4): no mechanism available: No worthy mechs found". Ниже я подробно объясню, как можно решить эту проблему.

Теория

XOAUTH2 – это механизм аутентификации, используемый Google для обеспечения дополнительной безопасности и упрощения процесса входа в учетную запись без передачи реального пароля. Вместо пароля используется токен доступа, который выдается после успешной OAuth2 аутентификации. Ваш текущий конфигурационный файл .mbsyncrc указывает на отсутствие поддержки XOAUTH2 в вашей версии mbsync, что означает необходимость в обновлении или изменении подхода аутентификации.

Пример

Конфигурационный файл .mbsyncrc, который вы предоставили, пытается использовать XOAUTH2 в AuthMechs для Gmail, однако ваша текущая версия mbsync, похоже, не поддерживает данный механизм напрямую. Для использования XOAUTH2, вам необходимо установить PLAIN механизм аутентификации и использовать внешний инструмент, чтобы передавать токен в качестве пароля.

Приложение

  1. Установка необходимых пакетов

    Убедитесь, что у вас установлены все необходимые библиотеки для работы с SASL. Выполните следующую команду, чтобы установить соответствующие пакеты:

    sudo apt-get install libsasl2-modules
  2. Обновление mbsync

    Ваша версия mbsync (1.2.1) может не поддерживать все необходимые механизмы. Рассмотрите возможность обновления mbsync до более новой версии, если это возможно через официальный репозиторий Backports Debian или сборку из исходников.

  3. Настройка OAuth2 с помощью msmtp

    Пользователи часто комбинируют msmtp с mbsync для использования OAuth2. Вам нужно будет установить и настроить msmtp, чтобы он работал как передаточный агент:

    Установите msmtp, если он еще не установлен:

    sudo apt-get install msmtp

    Создайте или отредактируйте файл настроек ~/.msmtprc:

    defaults
    auth           on
    tls            on
    tls_trust_file /etc/ssl/certs/ca-certificates.crt
    logfile        ~/.msmtp.log
    
    account gmail
    host smtp.gmail.com
    port 587
    from [email protected]
    auth xoauth2
    user [email protected]
    passwordeval "gcloud auth print-access-token"

    В этом примере используется команда gcloud для получения токена доступа. Вы можете вместо этого использовать другой способ получения токена, если предпочитаете.

  4. Поддержка XOAUTH2 в mbsync

    Если обновление mbsync не решает проблему, вам возможно потребуется использовать патчи или форки, поддерживающие XOAUTH2. Например, поиск в репозиториях GitHub может дать альтернативные версии mbsync с поддержкой нужного механизма.

  5. Последняя проверка и тестирование

    После того как все зависимости установлены и конфигурации настроены, протестируйте вашу конфигурацию с последней версией mbsync. Убедитесь, что каждый компонент (OAuth2, mbsync, msmtp) взаимодействует корректно и почта успешно синхронизируется.

Обратив внимание на все перечисленные шаги и нюансы, вы сможете успешно интегрировать XOAUTH2 аутентификацию в процессе синхронизации почты через mbsync. Это не только обеспечит надежную синхронизацию почты, но и повысит безопасность ваших рабочих процессов, минимизируя риски, связанные с передачей паролей.

Оцените материал
Добавить комментарий

Капча загружается...