mutt에서 OAUTHBEARER 인증이 실패했습니다.

mutt에서 OAUTHBEARER 인증이 실패했습니다.

한동안 OAUTHBEARER인증을 위해 GMail을 사용해왔는데 해결할 수 없는 문제에 봉착했습니다. mutt실행하면 다음 과 같은 mutt결과가 나타납니다 OAUTHBEARER authentication failed..muttdebug0

[2020-08-27 10:38:59] TLSv1.3 connection using TLSv1.3 (TLS_AES_256_GCM_SHA384)
[2020-08-27 10:39:00] Connected to imap.gmail.com:993 on fd=7
[2020-08-27 10:39:00] imap_cmd_step: grew buffer to 512 bytes
[2020-08-27 10:39:00] 7< * OK Gimap ready for requests from XX.XX.XX.XX r65mb112981108pjg
[2020-08-27 10:39:00] IMAP queue drained
[2020-08-27 10:39:00] 7> a0000 CAPABILITY
[2020-08-27 10:39:00] 7< * CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 XYZZY SASL-IR AUTH=XOAUTH2 AUTH=PLAIN AUTH=PLAIN-CLIENTTOKEN AUTH=OAUTHBEARER AUTH=XOAUTH
[2020-08-27 10:39:00] Handling CAPABILITY
[2020-08-27 10:39:00] 7< a0000 OK Thats all she wrote! r65mb112981108pjg
[2020-08-27 10:39:00] IMAP queue drained
[2020-08-27 10:39:00] imap_authenticate: Trying method oauthbearer
[2020-08-27 10:39:00] Authenticating (OAUTHBEARER)...
[2020-08-27 10:39:00] 7> a0001 AUTHENTICATE OAUTHBEARER bixhPWN3YWxrYXRyb25AZ21haWwuXXXXX=
[2020-08-27 10:39:01] 7< + eyJXXXXXXX29nbGUuY29tLyJ9
[2020-08-27 10:39:01] 7> [2020-08-27 10:39:01] OAUTHBEARER authentication failed.

나는 프로젝트를 설정했습니다Google 개발 콘솔그리고 client_id그리고 client_secret. 내 Google 개발자 애플리케이션을 특별히 무시해야 한다는 경고가 표시됩니다.확인되지 않음명시적으로 허용해야 합니다. 과거에는 이것이 문제가 되었던 것으로 기억되지 않습니다. 다음 명령을 사용하여 성공적으로 로그인할 수 있습니다.

oauth2.py [email protected] --client_id=56843257498 --client_secret=fjdksla --generate_oauth2_token

이 내 꺼야 .muttrc:

set imap_oauth_refresh_command="~me/bin/oauth2.py \
    --user [email protected] \
    --client_id=60080XXX.apps.googleusercontent.com \
    --client_secret=AZXXXX \
    --refresh_token=1//XXXXAYSNwF"
set smtp_oauth_refresh_command="~me/bin/oauth2.py \
    [email protected] \
    --client_id=60080XXX.apps.googleusercontent.com \
    --client_secret=AZXXXX \
    --refresh_token=1//XXXXAYSNwF"

위 명령은 셸에서 제대로 실행됩니다. 추가적으로 테스트도 진행되었습니다oauth2.py 성공뿐만 아니라 (이것은 테스트 중이지 XOAUTH2가 아님에도 불구하고 OAUTHBEARER).

  10:30.51 > HNNF1 AUTHENTICATE XOAUTH2
  10:30.54 < +
  10:30.54 write literal size 280
  10:31.24 < * CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 UIDPLUS COMPRESS=DEFLATE ENABLE MOVE CONDSTORE ESEARCH UTF8=ACCEPT LIST-EXTENDED LIST-STATUS LITERAL- SPECIAL-USE APPENDLIMIT=35651584
  10:31.24 < HNNF1 OK [email protected] authenticated (Success)
  10:31.24 > HNNF2 SELECT INBOX
  10:31.50 < * FLAGS (\Answered \Flagged \Draft \Deleted \Seen $Forwarded $Junk $NotJunk $NotPhishing $Phishing)
  10:31.50 < * OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen $Forwarded $Junk $NotJunk $NotPhishing $Phishing \*)] Flags permitted.
  10:31.50 < * OK [UIDVALIDITY 2] UIDs valid.
  10:31.50 < * 1060 EXISTS
  10:31.50 < * 0 RECENT
  10:31.50 < * OK [UIDNEXT 51915] Predicted next UID.
  10:31.50 < * OK [HIGHESTMODSEQ 5748372]
  10:31.50 < HNNF2 OK [READ-WRITE] INBOX selected. (Success)

저는 이 모든 것을 업무용 이메일로 설정하고 작업하고 있지만 개인 이메일은 그렇지 않습니다. 나는 단순한 것을 놓치고 있는 것 같은 느낌이 든다. 누구든지 내 실수를 볼 수 있도록 도와줄 수 있나요?

답변1

나는 이것을 이해합니다. base64로 인코딩된 json을 잘못된 전달자 토큰으로 전달하는 oauth2.py대신 json 응답을 인쇄하도록 변경했습니다 . 이 옵션을 알려준 @jakub-jindra에게 감사드립니다 .access_tokenmutt--quiet

mutt -d 5GMail에 전달된 base64로 인코딩된 페이로드를 보여주는 다음을 실행하여 이 문제를 해결했습니다 .

[2020-08-28 10:00:54] Authenticating (OAUTHBEARER)...
[2020-08-28 10:00:54] 7> a0001 AUTHENTICATE OAUTHBEARER XXXXXXXXXX$XXXXInfQEB
[2020-08-28 10:00:55] 7< + XXXXXXXXXX
[2020-08-28 10:00:55] 7> [2020-08-28 10:00:55] OAUTHBEARER authentication failed.

나는 그것을 Base-64로 디코딩하여 다음을 얻었습니다.

n,[email protected],host=imap.gmail.comport=993auth=Bearer {u'access_token': u'ya29.a0XXXXXX', u'scope': u'https://mail.google.com/', u'expires_in': 3599, u'token_type': u'Bearer'}

이것이 누군가에게 도움이 되기를 바랍니다!

답변2

예에 따르면바보또는네오무트문서의 oauth2.py 스크립트에는 옵션이 {smtp,imap,pop}_oauth_refresh_command포함되어야 합니다 --quiet.

문서에는 이것이 중요하다는 것이 명확하지 않습니다. 하지만 방금 SMTP 설정에서 테스트했습니다. 해당 옵션이 없으면 인증 오류도 발생합니다.

관련 정보