신규 설치에서 Discourse-Doctor의 SMTPAuthenticationError 발생

Digital Ocean Droplet에서 Discourse를 새로 설치했는데 과정은 꽤 순조로웠지만, 관리자 계정을 등록하려고 할 때 알림 이메일을 받지 못했습니다.

이메일 문제 해결 문서를 꼼꼼히 살펴봤지만, 다음 댓글을 볼 때까지 해결책을 찾지 못했습니다:

이중 인용부호는 작동합니다. 비밀번호에 특정 문자(역슬래시 등)가 포함된 경우 nano와 같은 편집기로 파일을 수정해야 합니다.

이 내용과 /containers/app.yml에서 “#” 기호가 문제를 일으킨다는 주의사항을 보고 비밀번호를 의심하게 되었습니다. 제 비밀번호에는 밑줄과 틸드(~)가 포함되어 있었습니다.

비밀번호에 영문과 숫자만 사용하도록 새 이메일 계정을 만들었더니 문제가 해결되었습니다. 이제 ./discourse-doctor에서 이메일이 정상 작동하며, 알림 이메일을 다시 보내고 수신하는 데 성공했습니다.

분명한 이유 없이 SMTPAuthenticationError로 고생하고 계신 분들을 위해 이 경험을 공유합니다. 비밀번호에 특수문자가 없는 계정을 사용해 보세요. :grinning:

저는 비밀번호에 -를 사용하고 있는데, 질문자님이 겪은 그런 문제는 전혀 없었습니다.

#은 yml 파일에서 코드 주석을 해제하는 역할을 하기 때문에 말이 됩니다. #은 줄의 어느 위치에서든 시작할 수 있으며, 줄의 끝까지 이어집니다 (YAML - Wikipedia).

@MarcP:

흥미롭네요. app.yml 파일의 SMTP 비밀번호가 이중 인용부호로 감싸져 있으므로, 이중 인용부호만 제외하고는 어떤 문자든 사용 가능할 것이라 추측했을 겁니다. 제가 다른什么地方을 잘못했을 수도 있다는 생각이 드네요.

추가 테스트를 진행한 후 결과를 다시 공유하겠습니다.

급하게 처리한 대가는 이런 거구나.

DISCOURSE_SMTP_USER_NAME과 DISCOURSE_SMTP_PASSWORD를 SMTP 인증 오류를 유발했던 원래 계정으로 되돌렸고, 앱을 삭제한 후 ./launcher start app을 실행했을 때 다음과 같은 오류가 발생했습니다:

found unknown escape character while parsing a quoted scalar at line 67 column 28 -e LANG=en_US.UTF-8
YAML syntax error. Please check your containers/*.yml config files.

역시나, 어제 눈치채지 못한 패스워드에 \가 들어 있었습니다.

확인하기 위해 새 계정의 이메일 주소를 사용하고, 해당 계정의 비밀번호를 오류가 발생했던 계정의 비밀번호에서 \를 제외한 것으로 변경한 후 app.yml에 저장하고 앱을 다시 시작했습니다. 그 결과 오류 메시지가 다시 발생하지 않았습니다. discourse-doctor를 사용한 이메일 테스트도 성공적으로 완료되었습니다. 그 후, #이나 \를 제외한 여러 특수 문자가 포함된 새 비밀번호를 생성하고 테스트를 반복했습니다. 이 역시 정상적으로 작동했습니다.

요약하자면, app.yml의 DISCOURSE_SMTP_PASSWORD 필드에는 특수 문자를 사용할 수 있지만, 숫자 기호 #, 백슬래시 \, 그리고 아마도 이중 인용부호 "는 제외되는 것 같습니다.

:+1: 마음에 들어요, 훌륭해요 :sunglasses: