使用 AuthMech XOAUTH2 配置 mbsync

使用 AuthMech XOAUTH2 配置 mbsync

我似乎不知道如何使用mbsyncGmail 的 OAuth,因为我无法在 Ubuntu 上mbsync找到 xoauth2插件。sasl我相当有信心mbsyncOAuth 配置的所有内容都正常工作(例如,手动测试 PassCmd 成功生成访问令牌)

编辑:我已经sasl-bin通过 apt 安装了,并且https://github.com/robn/sasl2-oauth从源头。


问题

  • 如何手动“注册”sasl插件mbsync? (又名将其添加到下面粘贴的第一个日志中的“可用”SASL 机制列表中)
  • 此问题是否是由于我的“电子邮件堆栈”中的另一个组件造成的?我读过的一些线程建议从源代码重新编译 mutt,但我不明白为什么 mutt 会导致身份验证问题。

使用mbsync通过安装nix-env,我一直无法通过

C: 0/1  B: 0/0  M: +0/0 *0/0 #0/0  S: +0/0 *0/0 #0/0
IMAP error: selected SASL mechanism(s) not available;
   selected: XOAUTH2
   available: GS2-IAKERB GS2-KRB5 SCRAM-SHA-1 SCRAM-SHA-256 GSS-SPNEGO GSSAPI DIGEST-MD5 EXTERNAL OTP CRAM-MD5 PLAIN LOGIN ANONYMOUS
C: 1/1  B: 0/0  M: +0/0 *0/0 #0/0  S: +0/0 *0/0 #0/0

我还尝试mbsync/isync过从 apt 重新安装以及isync从源代码构建。这两者都会导致以下错误。

Notice: Master/Slave are deprecated; use Far/Near instead.
C: 0/1  B: 0/0  F: +0/0 *0/0 #0/0  N: +0/0 *0/0 #0/0
Error: SASL(-1): generic failure: Unable to find a callback: 32775
C: 1/1  B: 0/0  F: +0/0 *0/0 #0/0  N: +0/0 *0/0 #0/0

答案1

感谢您之前的提示。我已经设法让 XOAUTH2 在 SASL 中工作并将其与 mbsync 一起使用。以下是我如何让它在 Ubuntu 20.10 上运行:

安装赛勒斯 SASL OAuth2

# Clone the Cyrus SASL OAuth2 sources.
git clone https://github.com/moriyoshi/cyrus-sasl-xoauth2.git

# Configure and make.
cd cyrus-sasl-xoauth2
./autogen.sh
./configure

# SASL2 libraries on Ubuntu are in /usr/lib/x86_64-linux-gnu/; modify the Makefile accordingly
sed -i 's%pkglibdir = ${CYRUS_SASL_PREFIX}/lib/sasl2%pkglibdir = ${CYRUS_SASL_PREFIX}/lib/x86_64-linux-gnu/sasl2%' Makefile

make
sudo make install

# Verify XOAUTH2 is known to SASL.
saslpluginviewer | grep XOAUTH2

MB同步

旧版本(直到 1.3.1?)将 PassCmd 缓冲区设置为 80——这对于 OAuth2 令牌来说是不够的。我编译了当前的1.4.0:

# Clone the isync/mbsync 1.4 sources.
git clone --branch 1.4 --depth 1 https://git.code.sf.net/p/isync/isync isync-isync

# Configure and make.
cd isync-isync
./autogen.sh
./configure
make

mutt_oauth2.py

从以下位置下载 mutt_oauth2.pyhttps://gitlab.com/muttmua/mutt/-/blob/master/contrib/mutt_oauth2.py并使其可执行。

我有一个修改版本,可以使用 OAuth2 令牌创建套接字。这样我就可以通过套接字访问令牌:

curl --unix-socket ~/.mutt/oauth2.socket x

请注意,您的里程可能会有所不同,并且您将需要不同的 PassCmd 来访问 OAuth2 令牌。

mbsyncrc

配置 mbsync 使用 XOAUTH2 并设置 PassCmd 执行上述curl命令:

IMAPAccount <account-name>
Host outlook.office365.com
User <[email protected]>
AuthMechs XOAUTH2
PassCmd "curl --unix-socket ~/.mutt/oauth2.socket x"
SSLType IMAPS
SSLVersions TLSv1.1 TLSv1.2

mbsync 然后按预期工作;请注意下面curl 的输出:

$ mbsync -a
C: 0/1  B: 0/0  F: +0/0 *0/0 #0/0  N: +0/0 *0/0 #0/0  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1963    0  1963    0     0   479k      0 --:--:-- --:--:-- --:--:--  479k
C: 1/1  B: 15/15  F: +0/0 *0/0 #0/0  N: +847/847 *0/0 #0/0

答案2

在 Ubuntu 22.10 上安装libsasl2-modules-kdexoauth2解决了“IMAP 错误:选定的 SASL 机制不可用;”对我来说问题。

答案3

我正在努力解决同样的问题。以下是一些可能有帮助的资源。

  1. https://bbs.archlinux.org/viewtopic.php?id=238727
  2. https://isync-devel.narkive.com/i6h4k9hB/mbsync-xoauth2-and-gmail
  3. http://blog.onodera.asia/2020/06/how-to-use-google-g-suite-oauth2-with.html

我还没有成功修复错误,但看来你需要https://www.cyrusimap.org/sasl/安装。接下来,使用以下插件之一:

希望有帮助。我会继续努力看看是否能让这一切发挥作用。

相关内容