이메일로 답장 시 오류 메시지에 혼란

이것은 내 개인적인 실수일 수도 있지만, 이메일로 답글 보내기(reply-by-email)를 설정한 후 받는 일부 오류 보고에 대해 조금 혼란스럽습니다.

누군가가 자신의 계정에 연결된 이메일 주소가 아닌 다른 주소에서 답글을 보낼 때, 오류 메시지(자체 호스팅 Discourse 인스턴스에서)가 잘못된 것일 수 있습니다. 잘못된 주소로 보낸 경우에 받아야 할 메시지가 아니라, 알 수 없는 주소에서 보낸 경우에 받아야 할 메시지처럼 보입니다.

그 경우 제가 받는 메시지의 제목은 이메일 문제 – 알 수 없는 To: 주소이며, 본문은 다음과 같습니다:


죄송합니다. [“SNIP”](제목: Re: Help Please)로 보낸 이메일 메시지가 작동하지 않았습니다.

목적지 이메일 주소가 인식되지 않거나, 이메일의 Message-ID 헤더가 수정되었습니다. 스태프가 제공한 올바른 이메일 주소로 보내는지 확인해 주세요.


답글의 From: 주소를 계정에 연결된 주소와 일치하도록 변경하면 문제가 해결되는 것 같습니다.

이 동작을 수정하는 쉬운 방법이 있을까요? 제가 무언가를 잘못 설정한 건가요?

(실제로 제가 정말 바라는 것은 From: 헤더를 완전히 무시하고, 대신 여기에서 논의된 대로 답글 키(reply key)만 사용하는 옵션입니다. 그런 가능성이 있을까요?)

아, 어쩌면 이게 공개 주제에 대한 응답이 아니라 개인 메시지(PM)에 대한 응답이기 때문일까요? 그래서 Discourse가 이메일을 보낸 사람(유효한 사용자로 인식되지 않는 경우)이 해당 주소로 보낼 수 있어야 한다고 생각하지 않는 것일 수도 있습니다.

이것이 To: 주소를 From: 주소가 아닌 무효로 표시하는 이유를 설명할 수 있을 것 같습니다.

그동안 해당 메시지의 텍스트를 수정하여 From: 또는 To:의 문제일 수 있음을 명확히 했습니다.

왜 Discourse는 대상 사이트의 유효한 사용자 계정과 일치하지 않는 임의의 이메일 주소를 허용할까요? :thinking:

Discourse에서 아무 내용을 게시하려면 항상 유효하고 인증된 계정이 있어야 합니다.

(단계적 사용자(staged users)의 경우 예외가 있지만, 이는 Discourse PM을 통해 이메일 받은 편지함을 처리하는 데 특화된 경우입니다)

이는 권한 오류가 스택 어딘가에서 “not found” 오류로 변환되고, 이후 이메일 코드가 “not found” 메시지를 사용하기 때문일 것입니다…

reply_id(주제와 답글을 작성하는 사람을 모두 매핑하는 것으로 보입니다)만으로도 식별자로서 충분하다고 볼 수 있고, reply_id를 위조하는 것은 이메일 주소를 위조하는 것보다 더 어렵기 때문에, 올바른 이메일 주소에서 왔든 아니든 사실상 동일한 수준의 강도를 가진다고 주장할 수도 있습니다.

하지만 제가 실제로 그렇게 주장하려는 것은 아닙니다. 여기서 말씀하신 내용은 전혀 합리적입니다. 그리고 곰곰이 생각해 보니, 이 동작을 유발하는 것은 확실히 예외적인 경우(edge case)임을 깨달았습니다(우리는 SSO를 통해 대학 이메일 주소로 계정을 생성하지만, 사람들은 때때로 해당 주소를 다른 주소로 전달하고, 그 다른 주소에서 답글을 보냅니다).

제 진짜 질문은, 그런 경우 사람들이 받는 오류 이메일의 내용입니다. 이 내용은 오해의 소지가 있어 보입니다. 제가 파악한 바로는, 이 경우 오류 이메일을 받는 사람이 통제할 수 있는 실제 문제, 또는 적어도 핵심은 “To” 주소가 아니라 “From” 주소(그리고 해당 계정에 연결된 주소)입니다.

어쨌든, 저는 이미 다음을 통해 우회 조치를 마련했습니다:

  • 해당 메시지의 내용을 변경하는 것(Discourse가 이렇게 커스터마이징할 수 있다는 점이 좋습니다!) 그리고
  • 이메일로 답글 기능을 사용하려면 이메일 주소를 변경하라고 사람들에게 알려주는 것

하지만 이러한 혼란 가능성을 고려할 때, 어떤 상황에서 어떤 오류 메시지가 전송되는지에 대해 무언가를 변경하는 것이 합리적인지 궁금할 뿐입니다.

그 질문에 대한 답이 "아니요, 현재 상태 그대로 괜찮습니다"라면, 그것도 전혀 괜찮습니다.

사용자별 대체 이메일 주소에 대한 예비 지원은 이미 제공하고 있습니다.

@sam님과 @eviltrout님은 이 기능이 좀 더 정식화되어 사용자가 보조 이메일 주소를 추가할 수 있도록 언제 진행할 계획인지 궁금합니다. 2.5 로드맵에 이 항목을 추가해야 할까요?

우선 관리자 사용자 페이지에서 이를 노출하여 2.5에서 이메일 주소를 확인하고 추가할 수 있도록 시작하는 것이 좋겠습니다. 그다음, 이제 잘 테스트된 rake 태스크를 가지고 있으므로, 관리자 페이지에서 사용자를 병합하기 위한 기본적인 UX를 추가하는 것이 다음 단계가 될 수 있습니다.

각 주소를 검증해야겠죠?

From: 헤더는 너무 쉽게 위장(spoof)할 수 있는데, Discourse가 이 헤더를 왜 신뢰하거나 검증하는지 여전히 이해하기 어렵습니다.

답장 ID(reply id) 헤더는 악의적인 사용자가 추측하거나 알 수 없는 값이므로 유용한 검증 수단으로 작용합니다.

From: 헤더를 검증하는 것은 사용자가 다른 이메일 주소에서 답장을 보낸 경우(예상보다 더 흔한 엣지 케이스) 이메일로 게시글을 작성하려는 정당한 사용자가 혼란스러운 거부 응답을 받게 되는 문제를 초래할 뿐입니다.

이메일은 신원입니다. "다른 이메일 주소"라고 하는 것은 "다른 DNA"라고 하는 것과 같습니다.

저는 이메일 주소를 많이 가지고 있고, 제 사용자 중 일부도 마찬가지입니다.

진심으로 다툼을挑고 싶은 게 아닙니다. 다만 이 문제가 제 포럼 중 하나에서 매우 중요한 멤버가 더 이상 포럼에 기여하지 않기로 결심하는 데 영향을 미쳤기 때문에, 이 문제로 인해 조금 지쳐 있는 상태입니다.

그렇다면 사용자당 여러 이메일 주소를 설정할 수 있도록 하는 움직임에 대해 주장해야 하지 않나요? 위로 스크롤해서 좀 읽어보시는 건 어떨까요?

불행히도 제안된 기능이 제 Discourse 인스턴스에서 경험한 문제를 해결할 수 있는지 알 수 없습니다.

제 경우, 해당 사용자는 시민 사회 단체의 의장입니다. 그녀는 두 개의 이메일 주소와 두 개의 Discourse 계정(각 주소당 하나)을 가지고 있었습니다. 한 계정은 그녀의 개인적 정체성을 나타냈고, 다른 계단은 시민 사회 단체를 대표하는 “공식” 게시물을 위해 사용되었습니다.

이메일로 답장할 때 그녀는 자주 “잘못된” 이메일 주소에서 답장을 보냈기 때문에 답장이 거부되었습니다.

위에서 논의 중인 기능은 하나의 Discourse 계정에 여러 이메일 주소를 허용하는 것을 포함할 것으로 보이지만, (당연히) 하나의 이메일 주소당 여러 Discourse 계정은 허용하지 않을 것입니다. 따라서 불행히도 제 사용 사례에는 적용되지 않습니다.

계정을 병합해서 이메일 주소 중 하나를 보조 이메일로 설정할 수는 없나요?

그렇지 않다면, 안타깝게도 현재 Discourse에는 사용자가 어떤 역할을 하고 있는지 기억하는 데 도움이 되는 도구가 없습니다.

기술적으로는 가능하지만, 사용자가 두 가지 별개의 정체성(개인 / 시민사회 대변)으로 게시물을 올릴 수 있도록 의도적으로 설계되었습니다.

네. 가끔 사람들이 그런 상황에 빠지긴 하죠. 하지만 저는 그것을 엣지 케이스보다는 코너 케이스라고 부를 것 같습니다 :smile:

제가 이해한 바로는, 이 사람은 사실상 두 개의 정체성을 가지고 있지만, 어떤 이유에서인지 둘 다 같은 이메일 계정으로 들어오고 있다는 건가요? 만약 그렇다면, 이 문제적인 시나리오는 Discourse 외에도 더 많은 곳에서 발생했을 가능성이 높아 보입니다. 아마 이메일 클라이언트에서 처리하는 것이 더 적합하지 않을까요?

저는 업무용 이메일 계정에 몇 가지 업무 관련 별칭(aliases)을 사용하는데, 클라이언트가 답장 시 ‘발신자’ 주소를 메일이 발송된 주소와 일치시켜 줍니다…

동의합니다. 이건 코너 케이스이고, 그녀가 그렇게 유명한 사용자가 아니었다면 그렇게 큰 문제가 되지 않았을 것입니다.

두 개의 Discourse 계정을 만들기 위해 gmail dot hack을 사용했습니다. 이를 통해 그녀는 자신의 Gmail 메일박스에서 두 개의 이메일 주소를 생성할 수 있었고, 덕분에 두 개의 Discourse 계정을 만들 수 있었습니다.

그녀가 포럼의 게시물에 이메일로 답변을 보낼 때, Gmail은 반드시 Discourse가 기대하는 동일한 이메일 주소 변형을 사용하지는 않습니다.

제 생각에는, 답변 ID가 유효하다면 Discourse가 해당 답변을 받아들이는 것이 맞습니다.

닷 해킹(dot hack)은 매우 취약하며, 플러스 어드레싱을 사용하는 것이 훨씬 나은 선택일 것입니다.

https://webapps.stackexchange.com/a/3603/36245

두 계정 모두 플러스 어드레스를 사용하고 맨 주소(bare address)로 등록된 계정이 없다면, From: 주소 전환기가 정상적으로 작동하며 설정을 잊어버려도 이메일이 잘못된 계정으로 제출되는 대신 거부됩니다.

닷 대신 +를 사용하면 필터 설정도 훨씬 명확해집니다 :sweat_smile:

@dan, 이 내용을 작업 목록에 추가해 주시겠어요?

여러 이메일 주소에 대한 지원을 개선하기 위해 풀 리퀘스트를 제출했습니다: