보안 문제가 있는 메일링 리스트 미러링 버그

메시지가 동일하므로 메시지 ID가 하나라고 주장할 수 있습니다. 실제로 해당 예시에서 원포스터는 Gmail(메시지 ID를 할당하는 도구)에서 메시지를 작성했으며, 이는 동일한 서버의 두 개의 리스트서브(listserv) 주소로 전송되었습니다. 이는 드문 일이 아닙니다. 예를 들어, 관리자들과 임상 전문가들 각각이 별도의 메일링 리스트에 속해 있는 경우, 그들에게 공통으로 배포되는 뉴스 릴리스일 수 있습니다. 뉴스 릴리스에는 논의가 필요한 의학적 문제가 포함되어 있을 수 있으므로, 임상 전문가가 답장을 보낼 수 있습니다(To: 헤더에는 여전히 두 메일링 리스트가 언급되어 있지만, Reply-to: 주소는 임상 전문가 리스트로 설정되어 있을 것입니다). 마찬가지로, 관리자들은 뉴스에 대한 자신의 관점을 논의하고 싶을 수 있습니다. 그들은 답장을 보내고, 관련 Reply-to: 헤더는 관리자의 리스트를 반영하도록 사용될 것입니다. 만약 어떤 포스터가 To: 주소를 사용하여 '모두에게 답장’을 했다면, 해당 포스터가 멤버가 아닌 리스트에서 바운스(bounce) 메시지가 생성되었을 것입니다.

위와 같은 동작은 그다지 비일상적이지 않지만, Discourse가 메일링 리스트 미러로 사용될 때 이를 올바르게 처리하지 못하는 것으로 보입니다. 이는 포크된(forked) 답장들이 모두 원래의 메시지 ID에 고정되고, 해당 게시물이 처음 등장한 카테고리에 묶이기 때문입니다.

이 경우, 예를 들어 임상 전문가가 임상 전문가 리스트에 응답한 게시물이 Discourse의 메시지 파일링 방식 때문에 관리자의 리스트 미러에 표시되어, 관리자들이 임상 전문가들의 게시물을 볼 수 있게 될 수 있습니다.

해결책으로는, 수신 메시지의 To: 헤더에 있는 각 주소를 확인하여 각 카테고리 설정의 메일링 리스트 미러 주소와 일치하는지 검사하는 것입니다. 일치하는 경우, 해당 메시지의 사본을 각 일치하는 카테고리에 게시할 수 있으며, 게시물이 서로 다른 카테고리에 여러 사본으로 게시될 수도 있습니다. 그런 다음, 답장이 들어오면 현재와 마찬가지로 메시지 ID를 사용할 수 있지만, To: 줄이 해당 카테고리와도 일치할 때만 사용할 수 있습니다.