한동안 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_token
mutt
--quiet
mutt -d 5
GMail에 전달된 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'}
이것이 누군가에게 도움이 되기를 바랍니다!