# 이유 없는 Email::Receiver::InvalidPost 오류

**URL:** https://meta.discourse.org/t/unexplained-email-invalidpost-errors/377793
**Category:** Bug
**Created:** [8월 7, 2025, 8:31오후 UTC](https://meta.discourse.org/t/unexplained-email-invalidpost-errors/377793 "2025-08-07T20:31:32Z")
**Posts on this page:** 16
**Page:** 2

<div class="post-metadata">

### Author: ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)
#### Post date: [1월 13, 2026, 11:35오후 UTC](https://meta.discourse.org/t/unexplained-email-invalidpost-errors/377793/22 "2026-01-13T23:35:33Z")

</div>

[https://meta.discourse.org/t/mirrored-mailing-list-is-rejecting-registered-forum-users/376808와](https://meta.discourse.org/t/mirrored-mailing-list-is-rejecting-registered-forum-users/376808%EC%99%80) 유사합니다

---

<div class="post-metadata">

### Author: ![supermathie](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/supermathie/32/507518_2.png) [@supermathie](https://meta.discourse.org/u/supermathie)
#### Post date: [1월 13, 2026, 11:47오후 UTC](https://meta.discourse.org/t/unexplained-email-invalidpost-errors/377793/23 "2026-01-13T23:47:40Z")

</div>

그렇지 않은 것 같습니다. 참조된 주제는 잘못된 설정으로 인해 발생한 권한 문제로 보입니다.

---

<div class="post-metadata">

### Author: ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)
#### Post date: [1월 14, 2026, 6:33오전 UTC](https://meta.discourse.org/t/unexplained-email-invalidpost-errors/377793/24 "2026-01-14T06:33:00Z")

</div>

실수했습니다. 불편을 드려 죄송합니다.

---

<div class="post-metadata">

### Author: ![supermathie](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/supermathie/32/507518_2.png) [@supermathie](https://meta.discourse.org/u/supermathie)
#### Post date: [1월 15, 2026, 12:17오전 UTC](https://meta.discourse.org/t/unexplained-email-invalidpost-errors/377793/25 "2026-01-15T00:17:51Z")

</div>

발견한 문제에 대한 수정안을 제안했지만, 지금까지 파악한 바에 따르면 문자열을 망가뜨리는 해당 컴포넌트는 _저장된 레코드에만 영향을 미치며_, 처리 중인 수신 메일에는 영향을 주지 않습니다.

> <https://github.com/discourse/discourse/pull/37125>
>
> \- \*\*FIX: tell Mail to not sort body parts on serialisation\*\*
> \- \*\*FIX: Email::Cle…aner must clear the encoding of replaced bodies\*\*

문제의 원인은 다른 곳에 있을 것으로 상당히 확신하지만, 아직 그것이 무엇인지 알지 못합니다.

---

<div class="post-metadata">

### Author: ![lavamind](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/lavamind/32/237909_2.png) [@lavamind](https://meta.discourse.org/u/lavamind)
#### Post date: [1월 16, 2026, 4:39오후 UTC](https://meta.discourse.org/t/unexplained-email-invalidpost-errors/377793/26 "2026-01-16T16:39:32Z")

</div>

이 변경 사항이 병합되었다는 것을 보고, 오늘 저희의 Discourse 인스턴스를 업그레이드했으며, 앞으로 며칠 동안 이메일 거절 로그를 주시할 것입니다.

---

<div class="post-metadata">

### Author: ![lavamind](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/lavamind/32/237909_2.png) [@lavamind](https://meta.discourse.org/u/lavamind)
#### Post date: [1월 19, 2026, 2:19오전 UTC](https://meta.discourse.org/t/unexplained-email-invalidpost-errors/377793/27 "2026-01-19T02:19:47Z")

</div>

업그레이드 이후로 이미 세 번의 `InvalidPost` 오류가 기록되었지만, 거부 세부 정보가 다릅니다: 세 오류 모두 올바른 메시지 본문을 표시합니다(이전에는 메일링 리스트 서명이 표시되었음), 그리고 거부 사유는 이제 `Access Denied`입니다.

---

<div class="post-metadata">

### Author: ![supermathie](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/supermathie/32/507518_2.png) [@supermathie](https://meta.discourse.org/u/supermathie)
#### Post date: [1월 20, 2026, 5:51오전 UTC](https://meta.discourse.org/t/unexplained-email-invalidpost-errors/377793/28 "2026-01-20T05:51:24Z")

</div>

적어도 개선은 된 것 같다.

오류 사유가 사용자에게 유지되는가?

오류가 잘못된 것임을 확신하는가? 해당 사용자에게 카테고리에 게시물을 올릴 권한이 있는가? 사용자는 활성 상태인가?

---

<div class="post-metadata">

### Author: ![lavamind](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/lavamind/32/237909_2.png) [@lavamind](https://meta.discourse.org/u/lavamind)
#### Post date: [1월 21, 2026, 5:08오후 UTC](https://meta.discourse.org/t/unexplained-email-invalidpost-errors/377793/29 "2026-01-21T17:08:37Z")

</div>

대충 보았을 때 그 이유는 설득력이 없어 보입니다. 계정은 활성 상태이며, 정지나 무음 처리가 되어 있지 않으니까요. 하지만 해당 계정이 ‘staged’(검토 대기) 상태가 _아니라는_ 점을 발견했습니다. 메일링 리스트 게시글이 Discourse에 실제로 반영되는 대부분의 계정은 ‘staged’ 상태입니다. ‘staged’ 상태가 아닌 사용자들의 모든 게시글은 모더레이션 팀 멤버들로부터 온 것이었습니다.

우리의 메일링 리스트 미러 카테고리는 다음 가이드를 참고하여 초기 설정되었습니다: [Mirroring a read-only mailing list in Discourse](https://meta.discourse.org/t/mirroring-a-read-only-mailing-list-in-discourse/77990)

하지만 방금 카테고리에서 설정된 권한을 다시 검토해 보니, 우리 모더레이터 그룹이 추가되어 있었고 `everyone`에게 `reply` 권한이 부여되어 있었습니다.

이러한 추가 권한을 제거하고 `everyone`에게 `see` 권한만 남겼습니다. 혹시 이러한 ‘추가’ 권한들이 Discourse가 이러한 특수한 ‘메일링 리스트 미러’ 카테고리를 처리하는 방식에 간섭을 일으키는 것일까요?

---

<div class="post-metadata">

### Author: ![Moin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/moin/32/554653_2.png) [@Moin](https://meta.discourse.org/u/Moin)
#### Post date: [1월 21, 2026, 5:14오후 UTC](https://meta.discourse.org/t/unexplained-email-invalidpost-errors/377793/30 "2026-01-21T17:14:40Z")

</div>

사용자가 스테이지(Staged) 상태가 아닌 것이 문제일 수 있습니다. 스테이지 상태의 사용자는 해당 카테고리에서 게시할 권한이 있는지 확인되지 않지만, 등록된 사용자는 확인됩니다. 따라서 사용자가 해당 카테고리에서 주제에 답글을 달 수 있는 권한이 있는 그룹에 속하지 않는 경우, 권한이 없어 답글이 거부됩니다. 새 주제 생성 시에도 ‘생성’ 권한에 대해 동일한 규칙이 적용됩니다.

이 문제에 대한 주제는 다음 링크에서 확인할 수 있습니다: [Category not accepting "anonymous email" from known users](https://meta.discourse.org/t/category-not-accepting-anonymous-email-from-known-users/42871)

---

<div class="post-metadata">

### Author: ![lavamind](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/lavamind/32/237909_2.png) [@lavamind](https://meta.discourse.org/u/lavamind)
#### Post date: [1월 21, 2026, 5:15오후 UTC](https://meta.discourse.org/t/unexplained-email-invalidpost-errors/377793/31 "2026-01-21T17:15:36Z")

</div>

> 그러나 방금 해당 카테고리의 설정된 권한을 검토해 보니, 우리 모더레이터 그룹이 추가되어 있었고 `everyone`에게 `reply` 권한이 부여되어 있는 것 같습니다.
> 
> 이 추가된 권한들을 제거하고 `everyone`에게 `see` 권한만 남겨 두었습니다. 아마도 이러한 “추가” 권한들이 Discourse가 이러한 특수한 “메일링 리스트 미러” 카테고리를 처리하는 방식에 간섭을 일으키고 있는 것일까요?

실제로, 그건 아닙니다. 다른 카테고리를 보고 있었던 것 같습니다. 메일링 리스트 미러 카테고리의 권한은 예상대로 `everyone`에게만 `see` 권한이 부여되어 있습니다. 다만, 제 관찰에 따르면 모더레이터가 아닌 스테이지드(staged) 상태의 사용자가 아닌 사용자들의 게시물이 일관되게 거부되는 것 같습니다.

---

<div class="post-metadata">

### Author: ![lavamind](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/lavamind/32/237909_2.png) [@lavamind](https://meta.discourse.org/u/lavamind)
#### Post date: [1월 21, 2026, 5:23오후 UTC](https://meta.discourse.org/t/unexplained-email-invalidpost-errors/377793/32 "2026-01-21T17:23:16Z")

</div>

> [@Moin](#):
>
> 사용자가 스테이지드(staged) 상태가 아닌 것이 문제일 수 있습니다. 스테이지드 사용자는 해당 카테고리에서 게시할 권한이 있는지 확인되지 않지만, 등록 사용자는 확인됩니다. 따라서 사용자가 해당 카테고리에서 주제에 답글을 달 수 있는 권한이 있는 그룹에 속하지 않으면, 권한이 없어 답글이 거부됩니다. 새 주제와 ‘생성(create)’ 권한에도 동일한 원리가 적용됩니다.

제가 확인한 내용 기준으로 이 설명은 충분히 타당해 보입니다. 하지만 만약 이 설명이 맞다면, 이는 분명히 예상치 못하고 혼란스러운 동작입니다: 미러링된 메일링 리스트에 게시하는 사람이 해당 이메일 주소로 이미 Discourse 계정을 가지고 있다면, “이 카테고리는 메일링 리스트를 미러링합니다” 설정이 활성화된 카테고리에서 게시할 수 있어야 합니다.

---

<div class="post-metadata">

### Author: ![Jonathan5](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jonathan5/32/197134_2.png) [@Jonathan5](https://meta.discourse.org/u/Jonathan5)
#### Post date: [2월 4, 2026, 4:07오후 UTC](https://meta.discourse.org/t/unexplained-email-invalidpost-errors/377793/33 "2026-02-04T16:07:05Z")

</div>

Discourse가 Mailman 팀(또는 비슷한 팀)의 누군가를 설득하거나 비용을 지불하여 Discourse의 이메일 처리 방식을 개선해 준다면 정말 훌륭할 것입니다.

---

<div class="post-metadata">

### Author: ![supermathie](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/supermathie/32/507518_2.png) [@supermathie](https://meta.discourse.org/u/supermathie)
#### Post date: [2월 4, 2026, 5:44오후 UTC](https://meta.discourse.org/t/unexplained-email-invalidpost-errors/377793/34 "2026-02-04T17:44:35Z")

</div>

> [@lavamind](#):
>
> 이러한 “추가” 권한들이 Discourse가 이러한 특수한 “메일링 리스트 미러” 카테고리를 처리하는 방식에 간섭을 일으키고 있는 것일까요?

> [@Moin](#):
>
> 즉, 사용자가 해당 카테고리의 주제에 답글을 작성할 권한이 있는 그룹에 속하지 않으면, 권한이 없기 때문에 답글이 거부됩니다.

우리는 메일링 리스트를 미러링하는 읽기 전용 카테고리에 대해 메일을 수신할 수 있도록 Discourse를 보장하는 테스트를 가지고 있습니다:

> <https://github.com/discourse/discourse/blob/1284bbf4b0a129e865ff7beda0f8fcf5d58e07c7/spec/lib/email/receiver_spec.rb#L1412>

이를 지원하기 위해, 메일링 리스트 미러로 전송된 게시물은 몇 가지 검사를 우회합니다:

```ruby
    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

```

```ruby
    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`가 아닌 _카테고리_ 이메일 주소로 전송되어야 합니다.

---

<div class="post-metadata">

### Author: ![lavamind](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/lavamind/32/237909_2.png) [@lavamind](https://meta.discourse.org/u/lavamind)
#### Post date: [2월 4, 2026, 6:14오후 UTC](https://meta.discourse.org/t/unexplained-email-invalidpost-errors/377793/35 "2026-02-04T18:14:53Z")

</div>

> [@supermathie](#):
>
> 이러한 확인을 우회하려면 메일을 사이트의 `reply_by_email_address`가 아닌 _카테고리_ 이메일 주소로 보내야 한다는 점에 유의하세요.

흥미롭네요. 그리고 메일링 리스트 미러를 설정하는 방법에 대한 [여기 게시된 안내](https://meta.discourse.org/t/mirroring-a-read-only-mailing-list-in-discourse/77990#p-370863-subscribing-to-the-mailing-list-4)와 모순되는 것 같습니다:

> 디스코urs 이메일 주소(예: `discourse@example.com`)를 사용하여 메일링 리스트에 구독하세요.

디스코urs를 대신해 메일링 리스트에 구독된 이메일 주소를 확인해 보니 실제로 `discourse@forum.torproject.org`입니다.

여기서 다른 이메일 주소를 사용해야 하나요? 그렇다면 어느 주소를 사용해야 하나요?

---

<div class="post-metadata">

### Author: ![supermathie](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/supermathie/32/507518_2.png) [@supermathie](https://meta.discourse.org/u/supermathie)
#### Post date: [2월 4, 2026, 6:18오후 UTC](https://meta.discourse.org/t/unexplained-email-invalidpost-errors/377793/36 "2026-02-04T18:18:06Z")

</div>

> [@lavamind](#):
>
> 여기에는 다른 이메일 주소를 사용해야 하나요? 그렇다면 어떤 주소인가요?

아니요, 지금 상태로는 모두 문제없습니다.

_있을 수_ 있는 누락된 부분은 이 부분입니다:

> [@Discourse](#):
>
> "사용자 지정 수신 이메일 주소"를 메일링 리스트의 이메일 주소(예: `mailing-list@foo.test`)로 설정하세요.

(Discourse는 메시지 헤더(To/CC)만 사용하며, _envelope-to_ 주소를 알지 못한다는 점을 기억하세요)

---

<div class="post-metadata">

### Author: ![lavamind](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/lavamind/32/237909_2.png) [@lavamind](https://meta.discourse.org/u/lavamind)
#### Post date: [2월 4, 2026, 6:36오후 UTC](https://meta.discourse.org/t/unexplained-email-invalidpost-errors/377793/37 "2026-02-04T18:36:06Z")

</div>

> [@supermathie](#):
>
> 누락되었을 수 있는 부분이 바로 이것입니다:
> 
> > [@Discourse](#):
> >
> > “사용자 지정 수신 이메일 주소”를 메일링 리스트의 이메일 주소(예: `mailing-list@foo.test`)로 설정하세요.
> 
> (Discourse는 메시지 헤더(To/CC)만 사용하며, _envelope-to_ 주소를 인식하지 못한다는 점을 기억하세요)

tor-relays 카테고리의 경우, `사용자 지정 수신 이메일 주소`를 `tor-relays@lists.torproject.org`로 설정해 두었는데, 이는 Mailman이 보내는 메일의 `To:` 헤더와 일치한다고 생각합니다.

[Previous page](https://meta.discourse.org/t/unexplained-email-invalidpost-errors/377793.md?page=1)
