# 受信メールのMessage-Idが部分的に解析される

**URL:** https://meta.discourse.org/t/the-message-id-of-an-incoming-mail-is-partially-parsed/212436
**Category:** Support
**Created:** [2021 年 12 月 17 日午後 1:08 UTC](https://meta.discourse.org/t/the-message-id-of-an-incoming-mail-is-partially-parsed/212436 "2021-12-17T13:08:19Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![dachary](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/dachary/32/119731_2.png) [@dachary](https://meta.discourse.org/u/dachary)
#### Post date: [2021 年 12 月 17 日午後 1:08 UTC](https://meta.discourse.org/t/the-message-id-of-an-incoming-mail-is-partially-parsed/212436/1 "2021-12-17T13:08:19Z")

</div>

Bonjour,

添付された2つのメールでは、 **Message-Id** フィールドは次のようになっています。

```plaintext
Message-Id: =?us-ascii?Q?\u003c937921.143a05a8b3cfad92dd74ccf3c20c29a0@seenth?=\n =?us-ascii?Q?is.net\u003e?=

```

2.7.9および2.8.0では、 **Email::Receiver** によって\*\*=?us-ascii?Q? **として解析されます。つまり、2行目の一部のみが解析されます。その結果、最初のメッセージ以降のすべてのメッセージは、同じ** Message-Id\*\*を持っていると誤解されるため、サイレントに破棄されます。

**mail1.txt** （以下）をpython3で解析すると、次の **Message-Id** が表示されます。

```plaintext
$ ( echo import email ; echo 'print(email.message_from_string(open(\"mail1.txt\").read())[\"Message-Id\"])' ) | python3
=?us-ascii?Q?\u003c937921.143a05a8b3cfad92dd74ccf3c20c29a0@seenth?=\n =?us-ascii?Q?is.net\u003e?=

```

これは、discourseでここで使用されている **Mail** パーサークラスのバグのようです。

> <https://github.com/discourse/discourse/blob/main/lib/email/receiver.rb#L57-L58>

この問題の修正または回避策に関するアドバイスがあれば、よろしくお願いします。

[mail1.txt](https://meta.discourse.org/uploads/short-url/hLoZFqE1BEfgIBTWfkSUMHu8vDm.txt) (3.6 KB)  
[mail2.txt](https://meta.discourse.org/uploads/short-url/5HISGRuyeVDYljb7TN9g1x58vxU.txt) (3.6 KB)
