애플리케이션에서 깨끗한 이메일 메시지를 보내는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/108292

  •  01-07-2019
  •  | 
  •  

문제

알림 이메일 메시지를 보내는 애플리케이션을 개발할 때 다음에 대한 모범 사례는 무엇입니까?

  1. 호스팅 회사에서 스팸 발송자로 표시되지 않습니다.(다음 중 하나를 다룹니다:)
    • 메일 서버가 넘치지 않게 하는 최고의 기술
    • 최고의 메일 서버 제품을 직접 설정하려는 경우
    • 좋은 이메일 예절을 어기지 않고 특정 사용자가 보낸 것처럼 메시지를 보내지만 여전히 애플리케이션에서 명확하게 전송합니다(불만 사항 등이 다시 수신되도록 하기 위해).
    • 그 외 배운 교훈
  2. 수신자의 클라이언트가 스팸으로 신고하지 않습니까?(다음 중 하나를 다룹니다:)
    • 이메일이 올바르게 식별되도록 발신자 ID, 도메인 키, SPF, 역방향 DNS 등을 구성하고 사용합니다.
    • 사용자에게 이메일을 보낼 때 스팸으로 표시되는 것을 방지하는 최고의 SMTP 헤더 기술(예: Sender 및 From 헤더를 함께 사용)
    • 그 외 배운 교훈

추가 요구사항:이 애플리케이션은 이벤트를 기반으로 단일 수신자에게 단일 메시지를 보냅니다.따라서 동일한 메시지를 여러 수신자에게 보내는 기술은 적용되지 않습니다.

도움이 되었습니까?

해결책

메일 서버가 넘치지 않게 하는 최고의 기술

메일 서버 관리자에게 확인하는 것 외에는 할 수 있는 일이 많지 않습니다(공유 호스팅 계정이거나 사용자가 제어할 수 없는 경우).그러나 요구 사항이 이벤트당 단일 수신자에게 보내는 하나의 이메일이라면 그다지 문제가 되지 않습니다.메일 시스템을 방해하는 경향이 있는 것은 수백 명(또는 그 이상)의 수신자가 포함된 이메일입니다.

이벤트가 항상 발생하는 경우 이벤트를 통합하고 정기적으로 요약하는 이메일을 보내는 것을 고려해 보세요.

좋은 이메일 예절을 어기지 않고 특정 사용자가 보낸 것처럼 메시지를 보내지만 여전히 애플리케이션에서 명확하게 전송합니다(불만 사항 등이 다시 수신되도록 하기 위해).

"Reply-To" 헤더를 사용하면 이 작업을 수행할 수 있습니다. 그러면 이메일 메시지를 작성할 때 클라이언트가 보낸 사람 주소 대신 해당 주소를 사용하게 됩니다.

또한 이메일의 "Return-Path" 헤더를 설정해야 합니다. 이 헤더가 없는 이메일은 필터링되는 경우가 많기 때문입니다.

전.

From: me@me.com
Return-Path: me@me.com
Reply-To: auto@myapp.com

이메일이 올바르게 식별되도록 발신자 ID, 도메인 키, SPF, 역방향 DNS 등을 구성하고 사용합니다.

이는 모두 메일 및 DNS 서버에 대한 소유권이 얼마나 많은지에 따라 크게 달라집니다.spf/발신자 ID 등...모두 DNS 문제이므로 DNS에 액세스할 수 있어야 합니다.

귀하의 예에서는 상당한 문제가 발생할 수 있습니다.특정 사용자가 메일을 보내도록 설정하면 해당 사용자는 메일 서버를 유효한 발신자로 허용하기 위해 DNS에 SPF(예:)를 설정해야 합니다.다양한 도메인 이름을 가진 많은 사용자에게 이것이 얼마나 지저분한지(완전히 불가능하지는 않더라도) 상상할 수 있습니다.

역방향 DNS 등은 실제로 다릅니다.대부분의 클라이언트 ISP 등...역방향 DNS가 설정되어 있는지 확인합니다.(즉, host.here.domain.com이 1.2.3.4로 다시 확인되지 않더라도 1.2.3.4는 host.here.domain.com으로 확인됩니다.)이는 공유 호스팅의 양 때문입니다(메일 서버는 실제 메일 서버가 아닌 클라이언트의 도메인 이름으로 보고되는 경우가 많습니다).

역방향 DNS 일치를 요구하는 몇 가지 엄격한 네트워크가 있지만 이를 위해서는 처음에 일치하지 않는 경우 메일 서버를 제어할 수 있어야 합니다.

좀 더 구체적으로 설명할 수 있다면 좀 더 많은 조언을 드릴 수 있겠지만, 일반적으로 애플리케이션 메일을 보내야 하고 환경을 제어할 능력이 없는 사람들에게는 다음을 제안합니다. :

  • "Return-Path"를 설정했는지 확인하십시오.
  • 헤더에 앱과 악용 정보를 추가하는 것이 좋습니다. 즉:"X-Mailer" 및 "X-Abuse-To"(이들은 정보 제공 목적으로만 사용되는 사용자 정의 헤더입니다.)
  • 보내는 메일 서버의 IP 주소에 역방향 DNS가 설정되어 있는지 확인하세요.

다른 팁

먼저 이전에 대한 빠른 수정

복귀 경로:수신 메시지의 봉투 발신자를 기준으로 수신 시스템에서 추가한 헤더입니다.

spf가 작동하려면 return-path/envelope-sender가 yourapp@yourdomain.com이어야 합니다.

yourdomain.com에 대한 spf 레코드(또는 yourapp@yourdomain.com에 대한 사용자별 spf인 경우)가 메일이 앱을 호스팅하는 서버에서 시작되거나 이메일을 보내는 것을 허용하는지 확인하세요.

이 봉투 발신자는 모든 반송/오류를 수신할 주소입니다.

이제 Sender-ID는 완전히 다릅니다. Return-Path/Envelope-Sender를 확인합니다.주소를 보내는 경우 {메시지 내부에 저장} : :hisname yousapp@yourdomain.com 답장 :그의 이름 그의주소@hisdomain.com

다음은 발송하는 경우 문제가되지 않습니다.그의 이름 그의주소@hisdomain.com

그럴 것입니다.hisname yousapp@yourdomain.com 으로서는 다음을 무시하도록 지정합니다.발신자 ID 확인을 위해 귀하가 그를 대신하여 보낸 것이므로 이를 대신 사용하십시오.

이제 가치 있는 다른 부분을 살펴보겠습니다.

언급된 IP는 메일 서버입니다.

A 귀하의 IP의 PTR 포인트는 동일한 IP FQDNS로 해결되는 이름으로 표시됩니다.

b 서버 helo/ehlo를 everything.domain.com으로 설정하세요. 여기서 domain.com은 A 단계의 이름 도메인과 동일합니다. {아래 resons의 이름은 동일하지 않음}

c 해당 helo/ehlo 서버 이름도 서버의 IP로 확인되도록 합니다.

d 헬로/ehlo 이름 "v = spf1 a -all"에 다음 spf 레코드를 추가하십시오.

e 다음 sender-id 줄을 Helo/ehlo 이름에 추가하십시오 {Pritely for Completences "Spf2.0/mfrom, pra-all"{ie@this-domain}가 없습니다}

f 다음 spf를 FQDNS-Name에 추가하고 서버의 다른 호스트 이름 "v = spf1 -all"{즉, 기계는이 이름으로 헬로/ehlo가없고 사용자@this-domain}

{fqdns 이름은 봇/감염에 의해 결정될 수 있으므로 이 이름이 helo/ehlo 인사말에 직접 사용되는 것을 허용하지 않는 것이 좋습니다. 두 이름의 유효성을 증명하려면 helo/ehlo ID와 동일한 도메인에 있는 것만으로도 충분합니다. }

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top