이메일 주소 변경 시 이메일 커스터마이징으로 인해 2차 확인 실패

안녕하세요 - 이 문제에 대한 답변을 찾아보았지만 아무것도 찾지 못했습니다. 저는 우리 포럼의 관리자(Admin)이며, 평소에는 Google 인증을 통해 로그인합니다. 이메일 주소를 변경하려고 했는데, 설정 페이지에서 변경을 시작했습니다. 첫 번째 확인 이메일이 현재 이메일 주소로 도착했고, 확인을 완료했습니다. 그제까지는 문제가 없었고, 새 주소로 확인 이메일이 발송될 것이라고 안내되었습니다. 두 번째 확인 이메일이 새 주소로 도착했지만, 해당 확인 링크를 클릭하면 브라우저에서 다음과 같은 메시지가 표시됩니다:

죄송합니다! 해당 페이지가 존재하지 않거나 비공개입니다.

이 과정의 결과로 제 계정에는 여전히 기존 이메일 주소가 활성화된 상태로 남아 있습니다.

나도 비슷한 경험을 하고 있을 수 있습니다. 저는 우리 포럼의 관리자(Admin)입니다. 이메일 주소를 변경하고 인증 이메일을 받았어요 — 여기까지는 괜찮았습니다. 그런데 포럼에 다시 접속하니 자동으로 로그인되어 있었고, 설정을 확인해 보니 포럼 이메일은 새 주소로 설정되어 있었습니다. 하지만… 로그인 이메일은 처음 등록한 주소 그대로였어요. 조금 더 알아보니 관리자 계정에 로그인하려면 처음 등록할 때 사용한 주소를 사용해야 한다는 걸 알게 되었습니다. 완전히 로그아웃한 뒤 “새” 이메일 주소로 다시 로그인하려고 하면, 질문자님과 동일한 오류 메시지가 나타납니다.

환경 설정(Preferences)을 확인해서 포럼 이메일을 받을 주소를 새 주소로 설정해 두었는지 살펴보세요. 아마 그렇게 되어 있을 겁니다. 하지만 제 추측으로는 로그인에 사용되는 주소는 여전히 처음 관리자 계정을 만들 때 사용한 주소로 설정되어 있을 것입니다.

@dax님이나 다른 팀 멤버가 이것이 원래 그런 방식인지, 아니면 관리자 로그인 이메일을 다른 방법으로 초기화해야 하는지 설명해 주실 수 있을 것 같습니다.

월요일에 @tshenry 님과 재현해 볼 수 있을까요? 관리자 전용으로 설정할 예정입니다.

최신 tests-passed 버전의 Discourse에서 관리자 이메일 변경 프로세스를 테스트해 보았습니다. 일반 로그인 자격 증명 외에 Google 인증도 설정되어 있었습니다. 두 가지 다른 브라우저(Safari와 Chrome)를 사용하여 테스트했는데, 모두 제가 기대했던 대로 정상적으로 작동하는 것으로 확인되었습니다.

또한 약 11일 전 커밋에 있는 Discourse 사이트에서도 테스트해 보았습니다. 해당 관리자 계정은 2FA가 활성화된 표준 로그인이 설정되어 있었습니다. 이 커밋 이후 프로세스가 조금 변경되었지만, 여전히 문제없이 작동합니다.

Discourse 사이트가 완전히 최신 상태임에도 불구하고 이 문제를 계속 겪고 있다면, 재현 단계를 단계별로 게시하고 관련 브라우저 정보(버전, 운영체제, 기본 브라우저 vs 설치된 플러그인)를 함께 남겨 주세요. 저희가 호스팅을 제공하고 있고 현재 이 문제가 실제로 발생하고 있다면, 일반적인 지원 채널로 연락해 주시면 직접 소통하여 문제를 해결해 드리겠습니다.

여러 번 시도해 본 과정은 다음과 같습니다:

  • 대시보드에서 이메일 주소를 새 주소로 변경했습니다.
  • 포럼 소프트웨어에서 온 이메일을 받았고, 확인용 링크를 클릭했습니다.
  • 대시보드를 확인해 보니, 이메일 주소가 새 주소로 변경되어 표시되고 있었습니다. 이는 결제(Billing) 섹션에 표시됩니다.
  • 새 주소로 새 주제/게시물 알림도 정상적으로 받고 있습니다.

사용자 설정/계정(User Preferences/Account)(로그인용)을 확인해 보면, 처음 포럼 가입 시 사용했던 원래 이메일 주소가 여전히 표시되고 있습니다.

  • 해당 위치에서 이메일 주소를 새 주소로 수정했습니다.
  • *변경 사항 저장(Save Changes)*을 클릭하고 나갔습니다.
  • 나중에 다시 확인해 보니, 원래 이메일 주소가 다시 표시되고 있었습니다.

로그인할 때마다 로그인 메시지에 Discourse 설정 시 사용했던 주소를 사용하라고 나와 있습니다. 그래서 보안상의 이유라고 판단해 따로 보고하지 않았습니다. 그 외에는 새 이메일 주소로 알림, 결제 영수증 등 필요한 내용을 정상적으로 받고 있습니다.
(참고로, 저는 여전히 기존 메일함에 접근할 수 있습니다.)

죄송합니다. 우리가 이야기한 것은 호스팅된 이메일이 아니었습니다. 모든 사용자가 이메일을 변경할 때 보는 동일한 계정 편집 페이지를 통해 사용자(특히 관리자)가 계정에서 이메일 변경을 시작하는 것에 대해 이야기하고 있었습니다.

제 문제가 바로 그 지점에 있습니다. 저는 관리자입니다. 그 페이지에서 이메일을 변경할 수 없습니다. 제 사용자 계정 설정으로 가서 이메일 주소를 변경하고 저장 버튼을 클릭하면 인증 이메일이 발송되었다는 통지를 받고 나옵니다. 링크를 클릭하면 로그인 화면으로 이동하는데, 여기서 새 이메일 주소를 입력하면 최초 가입 시 사용했던 주소로 로그인하라는 통지가 나옵니다. 이메일 변경이 저장되지 않은 것입니다. 원래 가입할 때 사용했던 주소로 돌아갑니다. :neutral_face:

반면, 포럼과 동일한 도메인 이름이 아닌 제가 소유한 다른 도메인 이름의 이메일 주소를 사용하면 작동할까요? 어쨌든 제게는 문제가 아닙니다. 그대로 두는 것이 나을 것 같습니다.

문제의 원인이 될 수 있길래 구글 인증을 제거했습니다. 재현을 위해 제가 취한 단계를 94초짜리 스크린캐스트로 녹화했습니다:

https://drive.google.com/file/d/1eOE2Tptvyk2daWkvDYEFXY3qNKgnImPA/view

@David_Baker1, 시간을 내어 영상을 만들어 주셔서 감사합니다. 영상을 보고 Chrome에서 신중하게 따라 해 보았습니다. 모든 것이 완벽하게 작동했으니, 사용자의 환경에서 뭔가 독특한 상황이 있는 것 같습니다. 고려해 볼 수 있는 몇 가지 질문은 다음과 같습니다:

  • 사이트의 /logs 섹션에서 관련이 있어 보이는 오류가 있나요?
  • Chrome 브라우저 확장 프로그램을 사용 중인가요? 그렇다면 다른 브라우저에서 동일한 과정을 시도해 볼 수 있나요?
  • 공식이 아닌 Discourse 플러그인을 설치해 두셨나요?
  • 사이트를 생성할 때 discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub 문서를 따랐나요?

만약 실제로 문제가 발생하게 된다면, 편하게 이메일을 보내 주시면 직접 문제를 해결해 드릴 수 있는지 확인해 보겠습니다. 말씀해 주신 문제에 대해서는 처음 듣는 것입니다.

Firefox(70.0.1 64비트)에서도 동일한 작업을 수행했고, 동일한 결과를 얻었습니다. 답변:

  • 11월 4일 이후로 오류 로그가 없습니다.
  • Firefox에서 다시 시도했습니다.
  • 다음 플러그인이 설치되어 있습니다: discourse-assign; discourse-data-explorer; discourse-plugin-linkedin-auth; discourse-solved; docker_manager
  • 제 인스턴스는 이 메타 사이트의 주요 기여자가 설정하고 관리했으며, 이번까지 이상한 문제는 없었습니다.

음, 정말 이상하네요! 설정이 꽤 표준적인 것 같습니다. 다음 주에 기회가 되면 몇 가지 새로운 아이디어로 한 번 더 살펴보겠습니다. 그 이상은 문제를 재현할 수 없어서 더 이상 방법을 모르겠네요.

다시 인사드립니다. 더 조사해 본 결과 원인에 대한 단서를 찾았습니다. 제 계정 설정/환경 설정에서 이메일은 제가 변경하려고 하는 원래 이메일 주소로 표시되어 있습니다. 하지만 해당 화면 오른쪽 위 근처의 관리자(Admin) 버튼을 클릭하고 아래로 스크롤하여 SSO 설정 아래 맨 아래를 보면, 제가 변경하고자 하는 새 이메일 주소가 나열되어 있습니다. 이 주소는 처음 Discourse를 설정할 때 사용했던 주소입니다. 그 후 저는 새 직장으로 이직하여 계정 이메일을 변경했습니다. 그런데 이제 다시 원래 주소로 되돌리려 합니다.

즉, 제 계정에는 서로 다른 두 개의 이메일 주소가 연관되어 있는 것으로 보입니다.

이것이 해당 문제의 잠재적 원인을 가리키는 것일까요?

SSO는 비활성화되어 있으므로 SSO 관련 설정은 영향을 주지 않아야 합니다. 하지만 그쪽 문제일 수도 있겠네요.

변경하려는 이메일 주소가 이미 계정의 ‘보조’ 이메일일 수 있습니다. 그런 경우, 주 이메일 주소를 업데이트하려면 먼저 보조 이메일 주소를 삭제해야 합니다.

사이트 관리자로써, 관리 페이지로 이동하여 ‘보조 이메일’ 행의 표시(Show) 버튼을 클릭하면 해당 이메일이 보조 이메일인지 확인할 수 있습니다:

Rails 콘솔에서 보조 이메일 주소를 삭제하는 방법은 이 게시글을 참고하세요: https://meta.discourse.org/t/rake-task-for-merging-users/89086/33

제 상황과 정확히 같습니다. 관리자 화면에서는 제가 변경하고자 했던 이메일 주소가 표시되지만, 사용자 환경 설정에는 최초 로그인 시 사용했던 원래 주소가 그대로 남아 있습니다. 또한 제 계정에는 서로 다른 두 개의 이메일 주소가 연결되어 있는 것 같습니다… 아니면 사용자 계정과 관리자 계정을 서로 다른 두 개의 계정으로 취급하는 건가요?

방금 다시 확인해 보았습니다. 관리자 대시보드에 보조 이메일 계정은 표시되어 있지 않습니다.

이것이 문제가 아닌지 확인하기 위해, 해당 사이트에서 관리자 권한이 있으신가요? moderators view emails 설정이 활성화되지 않으면Moderators(모더레이터)는 이메일 필드를 볼 수 없습니다. 기본적으로 이 설정은 비활성화되어 있습니다.

네, 저는 관리자입니다.

저도 관리자입니다 - 이 메시지가 저에게도 향한 거라면 :slight_smile:

사이트에 대한 Rails 콘솔 접근 권한이 있다면, 아래 명령을 업데이트하려는 이메일 주소로 실행하여 해당 이메일 주소가 이미 사용 중인지 확인할 수 있습니다:

UserEmail.where(email: 'youremail@example.com')

사이트에 Data Explorer 플러그인이 설치되어 있다면, 콘솔을 사용해야 하는 대신 Data Explorer 쿼리로 이 내용을 확인할 수 있습니다.

결과가 반환되면, 그것이 문제의 원인이 됩니다. 다만, 업데이트하려는 이메일 주소가 Single Sign On(SSO) 기록에 존재한다고 해서 문제가 발생하는 것은 아닙니다.

수정: 찾았어요. user_notifications.confirm_new_email.text_body_template가 URL을 덮어쓰고 있었네요.
나머지는 무시하셔도 됩니다.

Simon, 도움 주셔서 감사합니다.

문제는 이렇습니다:

https://forum.xx.org/users/authorize-email/c7ed779eb28c049ec4a5105dd9e07013 같은 링크 대신 https://forum.xx.org/u/confirm-new-email/c15d4bc33211e586b70572195f7dac89 형식의 링크가 포함된 “새 이메일 주소 확인” 이메일을 보내고 있습니다.

링크를 올바른 URL과 토큰으로 다시 작성하면 정상적으로 작동하지만, 어째서인지 구식 링크 형식을 보내고 새로운 형식은 보내지 않는 것 같습니다! (아래에 설명한 grep 및 재부팅을 한 후에 두 번 시도해 보았습니다.)

방금 ./launcher rebuild를 실행했는데도 여전히 구식 형식의 링크를 보내고 있습니다. 광고된 대로, 설치된 것은 단단하고 공식적인 플러그인뿐입니다.

그리고 컨테이너에 들어가서 /var/www/discourse에서 grep -r authorize-email을 실행했는데 파일이 하나도 찾지지 않았습니다. 그 후 재부팅을 했습니다.

24시간 안에 두 번째로 정말 막막합니다.