배포 목록을 사용할 때 감지된 헤더 구문 오류로 인해 다양한 Linux 기반 시스템에서 이메일이 거부되었습니다.

배포 목록을 사용할 때 감지된 헤더 구문 오류로 인해 다양한 Linux 기반 시스템에서 이메일이 거부되었습니다.

내가 뭘 놓치고 있는 걸까...

주어진 내용: 웹메일 구성 요소가 포함된 Linux 스택 기반 이메일 서버 시스템(호스팅).다양한이메일 클라이언트 및 기타 웹메일 시스템과 관련되어 테스트되었습니다.

우리는 웹메일 클라이언트를 사용하여 배포 목록을 통해 이메일을 배포하고 있습니다. 메일 시스템은 다음 예(소스 이메일 헤더에서 복사)와 유사한 이메일을 보냅니다. organisation배포 목록 이름은 어디에 있습니까?

Date: Sat, 20 Apr 2024 18:35:45 +0200
Message-ID: <[email protected]>
From: [email protected]
To: organisation: [email protected], [email protected];
Subject: here goes the subject

지금까지는 이메일이 정상적으로 전달되었으며(GMX 사서함으로도) "배달할 수 없는 이메일" 메시지가 수신되지 않았습니다.

문제

다음으로 특정 이메일 클라이언트 또는 웹메일 시스템(예: GMX 웹메일)에서 "모두에게" 응답하면 분명히 잘못된 헤더가 생성됩니다(예: Thunderbird를 사용하면 올바른 형식이 생성됨). 이러한 응답은 특정 시스템에서 거부됩니다. 예시 메시지:

이메일 헤더에 제공된 정보가 RFC 5322 및 RFC 2047의 사양을 준수하지 않기 때문에 귀하의 이메일이 당사 메일 시스템에서 거부되었습니다. 헤더 필드 "To"가 구문상 올바르지 않습니다.

문제의 이메일 헤더는 다음과 같습니다(받는 사람: 줄에 특히 주의하세요).

Received: from ...
Reply-To: ...
From: <[email protected]>
To: <[email protected]>, <organisation: [email protected]>;
References: <[email protected]>
In-Reply-To: <[email protected]>
Subject: AW: here goes the subject

분명히 특정 메일 클라이언트는 제공된 배포 목록 이름을 첫 번째 수신자의 이메일 주소의 일부로 해석하고 있습니다.

(1) 범인은 누구인가? (2) 올바른 형식은 무엇입니까? (3) 서버가 특정 RFC를 따르지 않고 원본 메시지를 배포하고 있습니까? 아니면 메일 클라이언트나 메일 시스템의 오류입니까?

===== 최종 수정 =====

이건 호드의 버그인 것 같습니다. 티켓이 제기되었습니다.

답변1

(이것은 아마도 잘못된 것일 수 있지만 아래에 유용한 토론이 있으므로 그대로 둡니다)

여기서 조직은 배포 목록의 이름입니다.

원본 이메일을 생성하는 모든 것이 여기서 잘못되었습니다. 사서함 이름(@domain 앞의 비트)에는 공백, @ 문자 및 기타 모든 종류의 이상한 내용이 포함될 수 있습니다. 따라서 전달에서는 To: 헤더의 첫 번째 항목을 "organisation:[이메일 보호됨]".

명시적인 공백에 인용 또는 이스케이프가 필요한지 확인하려면 많은 읽기 작업을 수행해야 합니다(메일함 이름의 '@' 문자가 그렇습니다). 따라서 이것이 RFC를 준수하지 않는다고 주장하는 오류가 정확한지 여부는 알 수 없습니다. 그러나 이것이 필요하지 않더라도 이는 의도한 동작이 아니기 때문에 이 점은 논쟁의 여지가 있습니다.

답변2

RFC 5322그룹 주소에 대한 현재 사양입니다. 부록 A.1.3에 설명되어 있습니다.

From: Pete <[email protected]>
To: A Group:Ed Jones <[email protected]>,[email protected],John <[email protected]>;
[…]

이 메시지의 To:필드에는 '라는 이름의 단일 그룹 수신자가 있습니다.그룹", 3개의 주소가 포함되어 있습니다 [...]

주소 사양은 섹션 3.4에 공식적으로 정의되어 있으며 여기에서는 관련 부분만 선택하겠습니다.

3.4. 주소 사양

주소는 개별 사서함일 수도 있고 사서함 그룹일 수도 있습니다.

group           =   display-name ":" [group-list] ";" [CFWS]
group-list      =   mailbox-list / CFWS
mailbox-list    =   (mailbox *("," mailbox))
mailbox         =   name-addr / addr-spec
name-addr       =   [display-name] angle-addr
angle-addr      =   [CFWS] "<" addr-spec ">" [CFWS]

그리고

3.4.1. Addr-Spec 사양

addr-spec은 로컬로 해석된 문자열, at 기호 문자("@", ASCII 값 64), 인터넷 도메인을 포함하는 특정 인터넷 식별자입니다. [...] 주석과 접는 공백은 addr-spec의 "@" 주위에 사용되어서는 안 됩니다.

addr-spec       =   local-part "@" domain
local-part      =   dot-atom / quoted-string
domain          =   dot-atom / domain-literal

그리고

3.2.3. 원자

dot-atom        =   [CFWS] dot-atom-text [CFWS]

obs-*RFC 5322의 공식 사양에 존재하는 항목은 더 이상 사용되지 않는 패턴을 참조하므로 생략했습니다 . CFWS주석 및/또는 접는 공백이 허용됨을 나타냅니다.

따라서 이 두 형식은 모두 다음 정의에 따라 허용되어야 합니다 group-list.

A Group:Ed Jones <[email protected]>,[email protected],John <[email protected]>;
A Bare Group:[email protected],[email protected],[email protected];

이 해석을 귀하의 그룹 목록에 적용하면 귀하가 가지고 있는 것이 유효하다고 말할 수 있습니다.

To: organisation: [email protected], [email protected];

따라서 문제가 있는 것은 수신자 시스템입니다. (또는 공격적인 헤더 재작성을 갖춘 중간 시스템입니다. 방화벽 어플라이언스를 통해 이메일을 보내거나 클라이언트가 방화벽 어플라이언스를 통해 이메일을 받는 경우 이를 확인하겠습니다.)

관련 정보