Gmail IMAP `[AUTHENTICATIONFAILED] Invalid credentials` — 비밀번호 오타가 아니다
배포 · 인프라
증상
imaplib 로그인이 [AUTHENTICATIONFAILED] Invalid credentials로 떨어진다. 비밀번호를 다시 확인해도 같다. 매번 같은 자리에서 시간을 쓴다.
원인
비밀번호가 틀린 게 아닐 수 있다. 원인은 셋이다.
- 계정 비밀번호를 넣었다. Gmail은 일반 비밀번호로 IMAP 로그인을 막는다. 2단계 인증을 켠 뒤 앱 비밀번호(16자)를 발급해야 한다.
- IMAP이 꺼져 있다. 설정 → 전달 및 POP/IMAP → IMAP 사용. 최신 Gmail은 기본 활성이라 토글이 안 보일 수 있고, 그러면 이 원인은 아니다.
- 앱 비밀번호가 폐기됐다. 노출돼서 재발급했는데 환경 파일을 안 고쳤다. 코드는 옛 값을 그대로 보낸다.
해법
- 앱 비밀번호는 공백 없이 16자로 저장한다. 발급 화면은 4자씩 띄워 보여주지만 붙여넣을 땐 뺀다.
- 재발급하면 같은 자리에서 환경 파일까지 고친다. 발급과 반영을 한 작업으로 묶는다.
imap.gmail.com:993(SSL)이 맞는지 확인한다. STARTTLS 포트를 쓰면 다른 에러가 난다.
검증
셸에서 imaplib.IMAP4_SSL('imap.gmail.com', 993).login(...) 한 줄을 직접 친다. 앱에서 도는 코드가 아니라 환경 파일에 든 값 그대로로. 통과하면 앱 쪽, 실패하면 자격증명 쪽이다.
★ "Invalid credentials"는 "값이 틀렸다"보다 "이 방식으로는 안 받는다"일 때가 더 많다.