https://meta.discourse.org/t/mirrored-mailing-list-is-rejecting-registered-forum-users/376808와 유사합니다
그렇지 않은 것 같습니다. 참조된 주제는 잘못된 설정으로 인해 발생한 권한 문제로 보입니다.
실수했습니다. 불편을 드려 죄송합니다.
발견한 문제에 대한 수정안을 제안했지만, 지금까지 파악한 바에 따르면 문자열을 망가뜨리는 해당 컴포넌트는 저장된 레코드에만 영향을 미치며, 처리 중인 수신 메일에는 영향을 주지 않습니다.
문제의 원인은 다른 곳에 있을 것으로 상당히 확신하지만, 아직 그것이 무엇인지 알지 못합니다.
이 변경 사항이 병합되었다는 것을 보고, 오늘 저희의 Discourse 인스턴스를 업그레이드했으며, 앞으로 며칠 동안 이메일 거절 로그를 주시할 것입니다.
업그레이드 이후로 이미 세 번의 InvalidPost 오류가 기록되었지만, 거부 세부 정보가 다릅니다: 세 오류 모두 올바른 메시지 본문을 표시합니다(이전에는 메일링 리스트 서명이 표시되었음), 그리고 거부 사유는 이제 Access Denied입니다.
적어도 개선은 된 것 같다.
오류 사유가 사용자에게 유지되는가?
오류가 잘못된 것임을 확신하는가? 해당 사용자에게 카테고리에 게시물을 올릴 권한이 있는가? 사용자는 활성 상태인가?
대충 보았을 때 그 이유는 설득력이 없어 보입니다. 계정은 활성 상태이며, 정지나 무음 처리가 되어 있지 않으니까요. 하지만 해당 계정이 ‘staged’(검토 대기) 상태가 아니라는 점을 발견했습니다. 메일링 리스트 게시글이 Discourse에 실제로 반영되는 대부분의 계정은 ‘staged’ 상태입니다. ‘staged’ 상태가 아닌 사용자들의 모든 게시글은 모더레이션 팀 멤버들로부터 온 것이었습니다.
우리의 메일링 리스트 미러 카테고리는 다음 가이드를 참고하여 초기 설정되었습니다: Mirroring a read-only mailing list in Discourse
하지만 방금 카테고리에서 설정된 권한을 다시 검토해 보니, 우리 모더레이터 그룹이 추가되어 있었고 everyone에게 reply 권한이 부여되어 있었습니다.
이러한 추가 권한을 제거하고 everyone에게 see 권한만 남겼습니다. 혹시 이러한 ‘추가’ 권한들이 Discourse가 이러한 특수한 ‘메일링 리스트 미러’ 카테고리를 처리하는 방식에 간섭을 일으키는 것일까요?
사용자가 스테이지(Staged) 상태가 아닌 것이 문제일 수 있습니다. 스테이지 상태의 사용자는 해당 카테고리에서 게시할 권한이 있는지 확인되지 않지만, 등록된 사용자는 확인됩니다. 따라서 사용자가 해당 카테고리에서 주제에 답글을 달 수 있는 권한이 있는 그룹에 속하지 않는 경우, 권한이 없어 답글이 거부됩니다. 새 주제 생성 시에도 ‘생성’ 권한에 대해 동일한 규칙이 적용됩니다.
이 문제에 대한 주제는 다음 링크에서 확인할 수 있습니다: Category not accepting "anonymous email" from known users
그러나 방금 해당 카테고리의 설정된 권한을 검토해 보니, 우리 모더레이터 그룹이 추가되어 있었고
everyone에게reply권한이 부여되어 있는 것 같습니다.이 추가된 권한들을 제거하고
everyone에게see권한만 남겨 두었습니다. 아마도 이러한 “추가” 권한들이 Discourse가 이러한 특수한 “메일링 리스트 미러” 카테고리를 처리하는 방식에 간섭을 일으키고 있는 것일까요?
실제로, 그건 아닙니다. 다른 카테고리를 보고 있었던 것 같습니다. 메일링 리스트 미러 카테고리의 권한은 예상대로 everyone에게만 see 권한이 부여되어 있습니다. 다만, 제 관찰에 따르면 모더레이터가 아닌 스테이지드(staged) 상태의 사용자가 아닌 사용자들의 게시물이 일관되게 거부되는 것 같습니다.
제가 확인한 내용 기준으로 이 설명은 충분히 타당해 보입니다. 하지만 만약 이 설명이 맞다면, 이는 분명히 예상치 못하고 혼란스러운 동작입니다: 미러링된 메일링 리스트에 게시하는 사람이 해당 이메일 주소로 이미 Discourse 계정을 가지고 있다면, “이 카테고리는 메일링 리스트를 미러링합니다” 설정이 활성화된 카테고리에서 게시할 수 있어야 합니다.
Discourse가 Mailman 팀(또는 비슷한 팀)의 누군가를 설득하거나 비용을 지불하여 Discourse의 이메일 처리 방식을 개선해 준다면 정말 훌륭할 것입니다.
우리는 메일링 리스트를 미러링하는 읽기 전용 카테고리에 대해 메일을 수신할 수 있도록 Discourse를 보장하는 테스트를 가지고 있습니다:
이를 지원하기 위해, 메일링 리스트 미러로 전송된 게시물은 몇 가지 검사를 우회합니다:
def create_post(options = {})
…
if sent_to_mailinglist_mirror?
options[:skip_validations] = true
options[:skip_guardian] = true
else
options[:email_spam] = is_spam?
options[:first_post_checks] = true if is_spam?
options[:email_auth_res_action] = auth_res_action
end
def sent_to_mailinglist_mirror?
@sent_to_mailinglist_mirror ||=
begin
destinations.each do |destination|
return true if destination.is_a?(Category) && destination.mailinglist_mirror?
end
false
end
end
추측컨대, 당신의 설정과 관련된 어떤 부분이 메일링 리스트 미러라는 사실이 감지되지 않는 조건을 만들 수 있을 것입니다. 참고로, 이러한 검사를 우회하려면 메일이 사이트의 reply_by_email_address가 아닌 카테고리 이메일 주소로 전송되어야 합니다.
흥미롭네요. 그리고 메일링 리스트 미러를 설정하는 방법에 대한 여기 게시된 안내와 모순되는 것 같습니다:
디스코urs 이메일 주소(예:
discourse@example.com)를 사용하여 메일링 리스트에 구독하세요.
디스코urs를 대신해 메일링 리스트에 구독된 이메일 주소를 확인해 보니 실제로 discourse@forum.torproject.org입니다.
여기서 다른 이메일 주소를 사용해야 하나요? 그렇다면 어느 주소를 사용해야 하나요?
아니요, 지금 상태로는 모두 문제없습니다.
있을 수 있는 누락된 부분은 이 부분입니다:
(Discourse는 메시지 헤더(To/CC)만 사용하며, envelope-to 주소를 알지 못한다는 점을 기억하세요)
tor-relays 카테고리의 경우, 사용자 지정 수신 이메일 주소를 tor-relays@lists.torproject.org로 설정해 두었는데, 이는 Mailman이 보내는 메일의 To: 헤더와 일치한다고 생각합니다.