이 기능에 대한 최초의 논의는 여기에서 시작되었습니다: Two emails for one user. 이후 논의는 여기에서 계속되었습니다: Additional email address per user account support.
이 기능이 주로 구현된 이유는 사용자가 여러 이메일 계정을 보유하고 있을 때, 이메일을 통해 Discourse에 게시물을 작성하는 경우를 처리하기 위해서였습니다.
주 이메일 주소로 전송된 이메일이 반송(bounce)될 때 Discourse가 보조 이메일 주소로 이메일을 보내도록 하는 기능은 현재 존재하지 않습니다. 이러한 기능이 특정 상황에서 유용할 수 있다는 점은 이해할 수 있습니다.
기술적으로, Discourse가 이메일 주소를 기반으로 사용자를 찾을 때 User.find_by_email 메서드가 호출되는 모든 시점에서 보조 이메일을 사용하여 사용자를 찾을 수 있습니다.
사용자는 보조 이메일 주소를 사용하여 Discourse에 로그인할 수 있습니다.
외부 인증 제공자를 사용하여 Discourse에 로그인할 때, 인증 제공자가 제공하는 이메일 주소와 보조 이메일 주소가 일치하면 해당 사용자를 찾을 수 있습니다.
흥미롭게도, auth overrides email 사이트 설정이 활성화되어 있고 사이트의 외부 인증 제공자가 사용자의 보조 이메일을 공급하는 경우, 보조 이메일이 주 이메일이 되고 원래의 주 이메일은 삭제됩니다. 이 경우 과거에는 로그인 오류가 발생했기 때문에, 이 동작은 의도적으로 설계된 것으로 보입니다. 이 동작이 발생하는 위치를 파악하는 데 너무 오랜 시간을 보냈습니다: discourse/app/models/user.rb at main · discourse/discourse · GitHub. (사용자가 저장될 때旧的 주 이메일이 삭제됩니다.)