셀프호스팅 Discourse 인스턴스를 테스트해 줄 의사를 밝힌 11명의 동료에게 이메일 초대장을 보냈습니다. 그중 한 명을 제외한 대부분은 문제없이 계정을 생성했습니다.
그에게 첫 번째 초대 이메일을 보냈을 때 소프트 바운스(soft-bounce)가 발생했습니다(발신 이메일에는 MailJet을 사용 중이며, 그의 이메일 도메인은 mac.com입니다). 8일 후 재송신했으나 다시 소프트 바운스가 발생했습니다. 이 기간 동안 개인 계정에서 그에게 이메일을 성공적으로 보냈던 적이 있으므로, 초대 링크를 생성하여 그에게 보냈습니다.
링크를 클릭해 계정과 비밀번호를 생성할 수는 있었지만, 활성화 이메일을 받지 못했습니다. 관리자 패널을 확인해 보니 활성화 이메일이 “Skipped” 탭에 표시되어 있었고, "Skip Reason"에는 "User is anonymous"라고 나와 있었습니다.
이 맥락에서 "anonymous"가 무엇을 의미하는지 모르겠습니다. 링크를 통해 초대된 사용자는 이메일 주소를 확인하기 위해 활성화 이메일을 받는 것이 일반적이라고 생각했습니다. 프로필에 “이름 필수” 옵션이 체크되어 있으며, 그는 해당 필드를 채워 넣었습니다.
익명 모드가 활성화되어 있나요? Discourse에서는 기본적으로 비활성화되어 있습니다.
기본값에서 변경한 "anonymous"가 포함된 설정은 다음과 같습니다:
“로그인 필요”: 체크됨
“가입 CTA 활성화”: 체크 해제됨
“익명 게시 허용”: 체크됨
이러한 익명 계정은 모두 임시이며, 로그인된 사용자가 ‘익명 모드 사용’ 옵션을 선택할 때 요청에 따라 생성된다는 점을 기억하세요.
음, 이건 흥미롭네요. 그는 활성화되지도 않았고 로그인도 불가능했기 때문에 익명 모드로 진입할 수 있을 거라고는 생각하지 못했어요.
데이터 탐색기(Data Explorer)로 데이터베이스를 조회해 어떤 익명 사용자가 어떤 원래 사용자와 연결되어 있는지 확인해 봤습니다. 그의 계정은 제 관리자 계정에 연결된 익명 사용자로 표시되고 있습니다.
그가 anonymous_users 테이블에 있는 이유는 제게 명확하지 않습니다.
SSO 코드에 문제가 있는 것 같습니다. SSO를 사용하고 계신가요?
그 외에도 설치 환경이 어떤 식으로든 손상된 것으로 보입니다.
SSO를 사용하지 않고 내장된 사용자 인증만 사용하고 있습니다.
설치가 손상된 경우, 재빌드를 통해 해결될 수 있을까요?
또한 2.4.0.beta6로 업데이트한 이후 초대하는 첫 번째 사용자이며, 이메일 대신 링크를 통해 초대하는 유일한 사용자이기도 합니다.
익명 모드였을 때 그들을 초대(초대 링크 생성)하셨나요? 
링크를 생성할 당시 저는 관리자 계정에 로그인된 상태였습니다(익명 모드가 아닙니다).
업데이트: 다른 이메일 주소로 문제를 재현해 보기 위해, 제 개인 iCloud 이메일을 사용하여 제 부 이메일 주소(Gmail에서 호스팅되는 .edu 주소)로 초대 링크를 보내 보았습니다.
초대 링크를 클릭하여 가입한 후, Discourse가 해당 .edu 주소로 활성화 이메일을 보냈습니다. 저는 관리자 계정에 로그인하여 새로운 사용자 계정이 anonymous_users에 없음을 확인한 뒤, 관리자에서 로그아웃했습니다. 그런 다음 활성화 이메일의 링크를 통해 계정을 활성화할 수 있었습니다.
해당 사용자를 삭제한 후, 자동으로 생성된 초대 이메일을 사용하여 동일한 과정을 다시 시도해 보았으며, 모든 것이 예상대로 정상적으로 작동했습니다.
제가 직접 관리하는 다른 이메일로는 문제를 재현할 수 없었기 때문에, 이는 해당 사용자의 이메일 계정과/또는 이메일 제공업체와 관련된 문제일 수 있을까요? 이전에 보낸 초대 이메일 2통 모두 시점별로 소프트 바운스(soft-bounce)가 발생했는데, 그 당시에는 제 개인 계정으로 해당 사용자에게 이메일을 보내면 정상적으로 전달되었습니다. (저와 해당 사용자 모두 Mac - Apple 사용하고 있으며, Discourse를 통해 제 개인 계정으로 이메일을 보내면 정상적으로 전달되므로 이메일 제공업체 문제라고 생각하지 않습니다.)
또한, 전달성 문제를 해결하기 위해 방금 관리자/이메일(admin/email)을 통해 해당 사용자에게 전달성 테스트(Deliverability Test) 이메일을 보냈고, MailJet에서는 해당 이메일이 전달된 것으로 표시됩니다. 마지막으로 시스템으로 이메일을 보낸 시점과 현재 사이에 변경된 유일한 사항은 DNS에 DMARC 레코드를 추가했다는 것입니다(SPF와 DKIM은 이미 설정해 두었지만 DMARC는 없었습니다).