배포 목록을 사용할 때 감지된 헤더 구문 오류로 인해 다양한 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 웹메일)에서 "Everyone"에 응답하면 분명히 잘못된 헤더가 표시됩니다(예: 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

(이것은 틀렸을 수도 있지만 아래에 유용한 토론이 있으므로 그대로 두십시오)

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

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

명시적인 공백을 인용하거나 이스케이프해야 하는지 파악하려면 많은 독서가 필요합니다(메일함 이름의 "@" 문자가 그렇습니다). 따라서 이것이 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은 로컬로 해석된 문자열, at 기호("@", ASCII 값 64), 마지막으로 인터넷 도메인으로 구성된 특정 인터넷 식별자입니다. [...] 주소 지정에서 "@" 주위에 주석과 접는 공백을 사용하면 안 됩니다.

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];

그러므로 문제가 되는 것은 수신 시스템이다. (또는 공격적인 헤더 재작성을 갖춘 중개 시스템. 방화벽 장치를 통해 이메일을 보내거나 클라이언트가 방화벽 장치를 통해 이메일을 받는 경우 이를 확인하겠습니다.)

관련 정보