SMTP "Sender"헤더를 올바르게 사용 하시겠습니까?


20

우리의 웹 애플리케이션은 누군가가 새로운 컨텐츠를 게시 할 때 사람들에게 이메일 메시지를 보냅니다. 발신자와 수신자 모두 애플리케이션에서 이메일 메시지를 수신하도록 선택했습니다. 이러한 메시지를 준비 할 때 다음과 같은 SMTP 헤더를 설정합니다.

FROM : author@example.com
받는 사람 : recipient@example.com
발신자 : webapp@mycompany.com

우리는 수신자에게 최상의 경험을 제공하기 위해 FROM 헤더에 저자의 이메일 주소를 사용하기로 결정했습니다. 메일 클라이언트에서 메시지를 볼 때 작성자는 분명합니다. 스푸핑이 발생하지 않도록 SENDER 헤더 (회사 이메일 주소 포함)를 추가하여 저자를 대신하여 메시지를 보냈 음을 분명히했습니다. RFC 822 및 2822를 읽은 후 이것은 발신자 헤더의 의도 된 사용으로 보입니다.

대부분의 수신 메일 서버는이를 잘 처리하는 것 같습니다. 전자 메일 메시지는 정상적으로 배달됩니다 (받는 사람 사서함이 있고 할당량이 초과되지 않은 것으로 가정). 그러나 도메인의 주소에서 동일한 도메인의 주소로 메시지를 보낼 때 일부 수신 도메인은 다음과 같은 응답으로 메시지를 거부합니다.

571 잘못된 IP-psmtp (RCPT TO 명령에 대한 응답)

이는 수신 서버가 FROM 헤더 주소가 자체 도메인에 있고 해당 메시지가 해당 도메인에 대해 메시지를 보낼 수있는 것으로 간주되지 않은 서버에서 보낸 것만 보았 음을 의미합니다. 즉, 수신 서버가 SENDER 헤더를 무시했습니다.

우리는 해결 방법이 있습니다 .webapp는 SENDER 헤더를 무시하는 것으로 보이는 도메인 목록을 유지하고 FROM 및 TO 헤더가 이러한 도메인에 있으면 대신 FROM 헤더를 자체 이메일 주소로 설정합니다. 그러나이 목록에는 유지 관리가 필요합니다.

원하는 경험을 얻는 더 좋은 방법이 있습니까? 우리는 인터넷의 "좋은 시민"이 되고자하는 모든 관련 당사자 (발신자와 수신자)가이 메시지에 참여하고 받기를 원합니다. 한 가지 대안은 항상 회사 이메일 주소를 FROM 헤더에 사용하고 저자 이름 / 주소를 제목 앞에 추가하는 것입니다.


From: author대신에 사용 하지 From: author@example.com않습니까?
Pacerier 2019

답변:


16

당신은 잘못된 것을보고 있습니다. 이것들은 메시지 헤더 입니다. SMTP 봉투를 보고 있어야합니다 . (봉투 지정 방법은 응용 프로그램이 메일 시스템에 메일을 제출하는 방법에 따라 다릅니다. 많은 시스템에서 봉투는 명령 행 인수로 메일 제출 유틸리티 프로그램에 지정됩니다.) 프로토콜 트랜잭션의 정확한 시점에 따라 다름 571 응답을 발행하기로 결정하면 SMTP 릴레이 서버가 메시지 헤더를 전혀 보지 못할 수도 있습니다.

응답 텍스트는 대화중인 특정 SMTP 릴레이 서버의 관리자가 SMTP 봉투에 넣을 수있는 내용을 제한했음을 나타냅니다. 봉투의 수신자 부분에 대해 불평하는 것 같습니다. 그러나 첫 번째 수신자의 사양이 지정 될 때까지 봉투 발신자의 유효성 검사가 지연 될 수 있으므로 발신자에 대해 불평 할 수 있습니다.

봉투 발신자는 배달 상태 메시지가 전송되는 곳이므로 전 세계의 임의의 사람 에게 전달되는 메시지를 원하지 않을 것 입니다. (많은 사람들이이 점을 좋아하지 않는다는 사실 외에도, 메일의 배달 상태 메시지는 본인 이외의 다른 사람에게 돌려주는 것은 의미가 없습니다 .) 자신을 봉투 발신자로 지정하십시오.

MX그런데 리소스 레코드 를 요구하는 것은 잘못 입니다. 의 SMTP 릴레이 서버에서 찾을 수 있습니다 A그리고 AAAA어떤의 부재에서 리소스 레코드 MX리소스 레코드. RFC 5321 § 5.1을 참조하십시오.


MX 레코드 확인을 구현하기 전에 RFC를 확인하고 같은 것을 배웠습니다. MX 레코드가없는 경우 폴백 A 레코드를 확인하십시오. SMTP 봉투를 살펴 보겠습니다. 제안 해 주셔서 감사합니다.
Eric Rath

SMTP 봉투를 조사하여 테스트했습니다. 당신이 맞습니다-모든 발신 검사에서 "보낸 사람"메시지 헤더를 사용한다고 잘못 가정했지만 봉투가 대신 사용되는 것처럼 보입니다.
Eric Rath

5

내가 틀렸을 수도 있지만, 특히 Postini의 경우 위의 오류의 가장 큰 원인은 거부 된 도메인에 엄격한 SPF 정책이 있기 때문입니다. SPF 검사 기능이있는 대부분의 메일 서버는 From : 헤더 만 검사하므로 Sender 헤더는 신경 쓰지 않습니다.

이런 경우인지 확인하려면 "dig + short TXT domain.com"을 실행하십시오. 여기서 domain.com은 오류 메시지를 표시합니다. 다음과 같은 것을 다시 가져와야합니다.

"v = spf1 mx -all"

중요한 부분은 -all입니다. 이는 도메인 소유자가 메일 서버 역할을하는 서버로부터 만 전자 메일을 보내겠다고 명시 했으므로 다른 모든 메일은 거부됩니다.

다행히도이 경우 전자 메일을 보내기 전에 적극적으로 확인할 수 있습니다! 사용자가 이메일 주소를 입력 할 때 웹 애플리케이션에서 SPF 확인을 수행하도록하십시오. 엄격한 정책이있는 경우 도메인을 목록에 추가하십시오. SPF 검사를 수행 할 수있는 모든 언어에 대해 라이브러리가 부족하지 않습니다.


고마워, 좋은 생각이야 나는 이미 원하지 않는 행동을 보여준 소수의 도메인을 확인했다. 따라서 완전한 해결책은 아니지만이 문제에 대한 완전한 해결책을 찾기가 어렵다고 생각합니다. 다른 사람들도 동일한 기본 논리를 시행하지만 SPF 레코드에 정보를 저장 / 게시하지 않고 있다고 생각합니다.
Eric Rath

주소 도메인에 유효한 MX 레코드가 있어야합니다. 누군가 이메일 주소를 잘못 입력하고 주소의 도메인 부분에 오류가 발생하면 (예 : person@domainn.com) 도메인에 대한 MX 레코드를 찾을 수 없기 때문에 전송이 실패합니다 (오류로 인해 다르지만 여전히 유효한 도메인).
Eric Rath

"수락 된 답변"을 JdeBP의 아래로 변경했습니다. 메시지 헤더와 봉투 헤더의 차이점이 실제로 그 문제를 해결했습니다. 그러나 피드백 주셔서 감사합니다.
Eric Rath

5
수정 : SPF는 봉투의 "보낸 사람"또는 "보낸 사람"헤더가 아닌 "MAIL FROM"을 확인합니다 .
Simon East
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.