프로그래밍 방식으로 보낸 이메일이 자동으로 스팸으로 표시되지 않도록하려면 어떻게합니까?


434

이것은 까다로운 것이며 항상 권한 기반 전자 메일 (예 : 전송 권한이있는 사람에게만 보내기)과 같은 기술에 의존하고 뻔뻔 스런 스팸 용어를 사용하지 않습니다 .

최근에 프로그래밍 방식으로 발송 한 이메일 중 일부가 사람들의 스팸 폴더에 자동으로 섞이기 시작했으며, 내가 할 수있는 일이 궁금합니다.

이러한 특정 전자 메일은 사람이 스팸으로 표시하는 전자 메일이 아니며, 특히 사람들이 돈을 많이 지불 한 라이센스 키가 포함 된 전자 메일이기 때문에 스팸으로 간주 할 것이라고 생각하지 않습니다.

나는 이것이 본질적으로 무지한 단순 인 큰 주제라고 생각합니다.

답변:


338

SPFDKIM 과 같은 이메일 인증 방법을 사용 하여 이메일과 도메인 이름이 함께 속해 있음을 증명하고 도메인 이름 스푸핑을 방지하십시오. SPF 웹 사이트에는 사이트의 DNS 정보를 생성하는 마법사가 포함되어 있습니다.

확인 하여 역 DNS를 메일을 보내는 데 사용하는 도메인 이름에 확인 메일 서버 포인트의 IP 주소를 확인합니다.

사용중인 IP 주소가 블랙리스트에 없는지 확인하십시오

회신 주소가 유효한 기존 주소인지 확인하십시오.

이메일 주소뿐만 아니라받는 사람 필드에 주소의 실제 이름을 사용하십시오 (예 :) "John Smith" <john@blacksmiths-international.com>.

abuse@yourdomain.com 및 postmaster@yourdomain.com과 같은 남용 계정을 모니터링하십시오. 즉, 이러한 계정이 존재하는지 확인하고 전송 된 내용을 읽고 불만에 대해 조치를 취하십시오.

마지막으로 구독을 취소하기가 정말 쉽습니다. 그렇지 않으면 스팸 버튼 을 눌러 사용자의 구독을 취소 하면 평판에 영향을 미칩니다.

즉, Hotmail이 귀하의 이메일을 수락하도록하는 것은 검은 예술입니다.


악용 계정에 대해 자세히 설명해 주시겠습니까? 무슨 말인지 잘 모르겠습니다
marcgg

26
brandonchecketts.com/emailtest.php 메일 서버 설정이 DomainKeys, DKIM, SPF 및 기타 스팸 방지 방법을 준수하는지 테스트 할 수 있습니다.
Jonas

3
또한 반송 된 이메일 탐지 알고리즘을 사용하여 잘못된 이메일 주소를 확인하십시오 (예 : 메일이 3 번 반송되면 해당 주소로 메일 발송을 중지)
clyfe

11
"핫메일이 귀하의 이메일을 수락하도록하는 것은 검은 색의 예술입니다." 핫메일은 스팸과 비 스팸을 구분하지 않습니다. 모든 것이받은 편지함 또는 스팸 저장소에 있습니다 (설정에 따라).
Halil Özgür

2
: 브랜든 Checketts는 자신의 메일 서버 적합성 도구를 이동 dkimvalidator.com
다나 휠러

30

가능한 많은 주요 이메일 제공 업체 (gmail / yahoo / hotmail / aol / etc)에 계정을 등록하십시오. 주요 단어 변경, 이메일을 보내는 코드 변경, 이메일 서버 변경 등 이메일을 변경하는 경우 테스트 계정을 모든 계정에 전송하고 스팸으로 표시되지 않았는지 확인하십시오.


2
일부 스팸 시스템은 개별 읽기 습관을 고려합니다. (이 발신자의 이메일을 읽거나 읽지 않고 삭제합니까? 등) 이렇게하면 이메일을 신고하는 시점 (진정한 음성)을 찾는 데 도움이되지만이 단계는 다른 사용자에게 해당되지 않는다는 것을 증명하지는 않습니다. 동일한 시스템에서 (가양 성).
Jon Adams

26

사용자가 주문을 완료 할 때 보낸 사람 주소를 연락처에 추가하도록 지시 할 수 있습니다. 그렇게하면 많은 도움이됩니다.

그렇지 않으면 일부 사용자로부터 로그를 얻으려고합니다. 메시지 헤더에 스팸으로 표시된 이유에 대한 세부 정보가있는 경우가 있는데,이를 통해 텍스트를 조정할 수 있습니다.

당신이 시도 할 수있는 다른 것들 :

  • 제목에 사이트 이름 또는 주소를 입력하십시오
  • 메시지의 모든 링크가 귀하의 도메인을 가리 키도록하십시오 (email.com이 아님)
  • 이메일에 주소 또는 기타 연락처 정보를 입력하십시오

24

이전 답변 의 몇 가지 요점 :

  • 가장 중요 : 보낸 사람 주소 ( "보낸 사람")는 전자 메일을 보내는 서버에서 실행되는 도메인에 속합니까? 그렇지 않다면 그렇게하십시오. 과 같은 발신자 주소를 사용하지 마십시오 xxx@gmail.com. reply-to다른 주소로 답장을 보내려면 사용자 가 필요합니다.

  • 서버가 블랙리스트에 있습니까 (예 : spamhaus.org에서 IP 확인)? 이웃이 잘못 행동 할 때 공유 호스팅을 사용하는 경우 가능성이 있습니다.

  • 스팸 필터로 메일을 필터링합니까? 스팸 폴더가있는 freemailer로 계정을 열고 찾으십시오. 또한 스팸 필터링없이 주소로 메일을 보내십시오.

  • 발신자 주소를 추가하려면 mail ()의 다섯 번째 매개 변수 "-f"가 필요합니까? (PHP 매뉴얼의 mail () 명령 참조)

  • 로그 파일에 액세스 할 수 있으면 물론 확인하십시오.

  • 반송 메일 ( "발신인에게 반송")에 대해 "보낸 사람 :"주소를 확인합니까? 별도의 "오류"주소를 설정할 수도 있습니다.

22

이메일을 보내기 전에 정확한 이메일 주소를 가지고 있는지 확인하십시오. 누군가 가입시 잘못된 이메일 주소를 제공 한 경우 최대한 빨리 이메일을 보내십시오.

모든 이메일에 항상 명확한 "탈퇴 방법"정보를 포함하십시오. 구독을 취소하기 위해 사용자가 로그인하지 않아도되며, 한 번 클릭으로 구독을 취소하려면 고유 한 URL이어야합니다.

이렇게하면 '가입 취소'가 너무 어려워 사람들이 메일을 스팸으로 표시하지 못하게됩니다.


11
원 클릭 탈퇴를위한 고유 URL의 경우 +1 구독을 취소하려면 로그인이 싫습니다. 나는 스팸으로 표시했습니다!
Shyju

16

다른 모든 답변 외에도 URL을 연결 텍스트로 포함하는 HTML 전자 메일을 보내는 경우 URL이 연결 텍스트와 일치하는지 확인하십시오. 썬더 버드가 자동으로 사기가 아닌 것으로 표시합니다.

잘못된 방법 :

Go to your account now: <a href="http://www.paypal.com.phishers-anonymous.org/">http://www.paypal.com</a>

옳은 길:

Go to your account now: <a href="http://www.yourdomain.org/">http://www.yourdomain.org</a>

또는 URL 대신 관련없는 링크 텍스트를 사용하십시오.

<a href="http://www.yourdomain.org/">Click here to go to your account</a>

1
Mike 안녕하세요, domain1.com과 domain2.com의 두 도메인이 있습니다. 코드가 domain1.com에서는 작동하지만 domain2.com에서는 작동하지 않습니다. 왜 그런지 모르겠어요? 나는 생각을 바꾸지 않았습니다. stackoverflow.com/questions/42200904/…
Naren Verma 2012

1
@NarendraVerma이 경우 내 대답이 당신에게 적용되는 것처럼 보이지 않습니다. 다른 답변을보고 다른 것이 당신에게 도움이되는지 확인하는 것이 좋습니다. 결국, 스팸으로 간주되는 대상과 전달할 대상을 결정하는 것은 전자 메일 공급자의 책임입니다. Gmail은 실제로 스팸 메시지를 클릭하면 메시지가 스팸으로 표시되는 이유에 대한 간략한 설명을 제공합니다 .
Mike

1
Mr.Mike에게 답장을 보내 주셔서 감사합니다. 실제로 domain1에 귀하의 답변을 적용했으며 정상적으로 작동합니다. PHpMailer를 사용하고 있으며 $ email_body = "<a href=' domain1.com'>보기 </ a >" 와 같이 추가했습니다 . 이것은 완벽하게 작동합니다.
Naren Verma

1
두 번째 domain2가 작동하지 않는 이유를 모르겠습니다. 물론 Gmail 팀에 연락하겠습니다. 이 코드에 더 이상 제안이 있으십니까?
Naren Verma

@NarendraVerma 코드에는 아무런 문제가 없습니다.
Mike

15

배달 문제를 처리하는 타사 전자 메일 서비스를 고려할 수 있습니다.

  • 정확한 목표
  • 수직 응답
  • 지속적인 연락
  • 캠페인 모니터
  • 엠마
  • 복귀 경로
  • IntelliContact
  • 실버 팝

15

이메일을 제공하는 것은 때때로 마술처럼 보일 수 있습니다. 역 DNS는 정말 중요합니다.

NDR을 신중하게 추적하는 것이 매우 도움이된다는 것을 알게되었습니다. 모든 NDR을 단일 주소로 보내고 Windows 서비스를 파싱하는 서비스가 있습니다 (Google ListNanny). 데이터베이스에 최대한 많은 정보를 NDR에 넣은 다음 특정 도메인에 의해 갑자기 차단되기 시작했는지 확인하기 위해 보고서를 실행합니다. 또한 일반적으로 스팸을 나타내는 것이기 때문에 이전에 NDR로 표시된 주소로 전자 메일을 보내지 않아야합니다.

한 번에 여러 고객 서비스 이메일을 발송해야하는 경우 한 번에 하나의 도메인에 거의 동일한 이메일을 너무 많이 보내는 경우에는 한 번에 하나의 도메인에 너무 많은 이메일을 보내야합니다. 블랙리스트.

일부 도메인은 때때로 전달하기가 불가능합니다. Comcast.net이 최악입니다.

IP가 http://www.mxtoolbox.com/blacklists.aspx 와 같은 사이트에 나열되어 있지 않은지 확인 하십시오 .


2
NDR이란 무엇입니까? 자세히 설명해 주시겠습니까?
Pykih

2
비 배달 보고서, 일명 반송 메시지 .
tripleee

14

나는 당신에게 말하기를 싫어하지만 나와 다른 사람들은 화이트리스트 기본값을 사용하여 스팸 필터링을 제어 할 수 있습니다.

이는 알 수없는 출처의 모든 전자 메일이 자동으로 스팸으로 만들어 스팸 폴더로 전환됨을 의미합니다. (전자 메일 서비스에서 스팸을 삭제하도록 허용하지 않습니다. 항상 오 탐지에 대한 도착을 검토하고 있기 때문에 폴더를 빠르게 스캔하면 쉽게 수행 할 수 있습니다.)

(1) 나는 보통 자신에게 이메일을 보내지 않으며 (2) 스팸으로 반송 주소를 속이는 스패머가 있기 때문에 나 자신의 이메일도 스팸 버킷으로 이동합니다.

따라서 스팸 지정을 피하려면 귀하의 메일이 발신자 및 제목 정보에서 합법적 일 수 있으며 일반 텍스트 (모든 수신 메일, 스팸의 기본 여부)로 먼저 열어야 합법적인지 확인할 수 있습니다. . 내 스팸 폴더는 전자 메일의 링크를 사용하지 않으므로 까다로운 이미지 링크 및 기타 오작동으로부터 보호됩니다.

나중에 동일한 소스에서 도착하여받은 편지함으로 이동하고 스팸 검토를 위해 전환하지 않으려면 전자 메일 클라이언트로 지정합니다. 대량 메일 전달자와 메일 조각 당 고유 한 발신자 주소를 사용하는 조직에게는 너무 나쁩니다. 그들은 내 승인을 얻지 못하고 항상 스팸 폴더에 표시되며, 바쁘면 절대 보지 않을 것입니다.

마지막으로, 전자 메일을 일반 텍스트로 읽을 수없는 경우 HTML로 전송 된 경우에도 소스 및 이전의 소중한 경험으로 인해 내가 관심이있는 것이 아니라면 삭제하는 것 같습니다.

보시다시피, 그것은 궁극적으로 사용자 제어하에 있으며 시스템이 메일 자체만으로 합법적이라고 시스템을 설득하는 자동화 된 조치는 없습니다. 이 경우, 좋은 플레이를해야하고 피싱과 비슷한 것을하지 말고 메일을 신뢰하는 사용자가 자신을 허용 목록에 추가 할 수 있도록하십시오.


13

내 응용 프로그램의 전자 메일 중 하나가 지속적으로 스팸으로 태그되었습니다. 그것은 하나의 링크가있는 html이었습니다. 텍스트 / html 콘텐츠 유형으로 본문에 html로 보냈습니다.

이 문제에 대한 가장 성공적인 해결책은 이메일을 작성하여 이메일 클라이언트가 생성 한 것처럼 보였습니다.

전자 메일을 다중 부분 / 대안 마임 문서로 변경했으며 이제 텍스트 / 일반 및 텍스트 / html 부분을 모두 생성합니다.

전망에서 전자 메일이 더 이상 정크 메일로 감지되지 않습니다.


이 방법은 HTML 가능 이메일 클라이언트를 사용하지 않는 보안 의식에 도움이됩니다.
Jasen

13

Yahoo는 SPF 설정 마법사 에서 구성하고 DNS에 입력 할 수있는 발신자 ID라는 방법을 사용합니다 . 또한 Exchange, Hotmail, AOL, Yahoo 등의 중요한 도메인 중 하나는 도메인의 역방향 DNS를 사용하는 것입니다. 그것들은 대부분의 문제를 해결할 것입니다. 그러나 사용자가 자신의 규칙 또는 사용자 지정 규칙을 의도적으로 차단하는 것을 막을 수는 없습니다.


3
Yahoo는 SPF 레코드와 DomainKeys를 사용합니다. SenderID는 다른 (그리고 여러 가지면에서 호환되지 않거나 안전하지 않으며 디자인이 잘못된) 기술이므로 사용해서는 안됩니다.
Dan Udey

11

역방향 DNS 항목이 필요합니다. 동일한 콘텐츠를 동일한 사용자에게 두 번 보낼 필요는 없습니다. 일반적인 웹 메일 및 이메일 클라이언트로 테스트해야합니다. 개인적으로 새로 설치 한 스팸 암살자, 훈련 된 스팸 암살자 및 여러 개의 핫메일, Gmail 및 AOL 계정을 통해 광산을 운영했습니다.

그러나 스팸으로 연결되거나 광고되지 않는 스팸을 보셨습니까? 그것은 베이지안 필터에 영향을 미치는 스패머입니다. 그가 높은 평가를 받고 향후 이메일에 포함될 단어를 포함 시키면 자동으로 학습 될 수 있습니다. 따라서 메일을 보낼 때 사용자의 필터가 어떻게 설정 될지 추측 할 수 없습니다.

마지막으로 도메인별로 목록을 정렬하지 않고 무작위로 정렬했습니다.


10

본문에서 수신자의 실제 이름과 성을 사용하는 것이 스팸 필터를 통과하는 확실한 방법이라는 것을 알았습니다.


8

영국에서는 회사의 실제 주소와 등록 번호를 포함하는 것이 좋습니다.

그렇게하면 공개적이고 정직하며 수동으로 스팸으로 표시 할 가능성이 줄어 듭니다.


7

나는 추가 할 것이다 :

"구독 취소"를 클릭하면 실제 탈퇴를 제공합니다. 클릭시 "구독이 성공적으로 취소되었습니다"라는 더미 수신 거부 링크를 제공하는 실제 뉴스 레터를 보았지만 여전히 추가 뉴스 레터를 받게됩니다.


7

당신이 할 수있는 가장 중요한 일은 이메일을 보내는 사람들이 이메일을받을 때 "스팸"버튼을 누르지 않도록하는 것입니다. 따라서 다음과 같은 경험 법칙을 따르십시오.

  • 이메일을 보내는 사람들의 허락을 받아야합니다. 귀하에게 요청하지 않은 사람에게 이메일을 보내지 마십시오.

  • 각 메시지의 상단에있는 사람과 이메일을받는 이유를 명확하게 식별하십시오.

  • 적어도 한 달에 한 번, 목록에있는 사람들 (목록을 실행중인 경우)에게 미리 알림 전자 메일을 보내서 계속해서 연락을 받기 위해 목록에 다시 참여하도록합니다. 예, 이는 목록이 시간이 지남에 따라 짧아지는 것을 의미하지만, 장점은 목록에있는 사람들이 "매입"되어 이메일에 플래그를 지정할 가능성이 적다는 것입니다.

  • 콘텐츠를 관련성이 높고 유용하게 유지하십시오.

  • 사람들에게 추가 커뮤니케이션을 거부 할 수있는 쉬운 방법을 제공하십시오.

  • 좋은 IP 평판을 유지하기 위해 열심히 노력하는 SendGrid와 같은 이메일 전송 서비스를 사용하십시오.

  • 짧은 링크를 사용하지 마십시오.이 링크는 종종 블랙리스트에 추가됩니다.

이러한 경험 규칙을 따르면 먼 길을 갈 것입니다.


6

나는 직장에서 여기에서 한 많은 사이트에서 과거에 같은 문제를 겪었습니다. 사용자가 이메일을 받도록 보장하는 유일한 방법은 사용자를 안전한 목록에 추가하도록 조언하는 것입니다. 다른 방법은 실제로 도움이 될만한 방법 일 뿐이며 보장되지는 않습니다.


6

귀하의 서비스에 가입 한 사람들이 잘못 입력 한 실수로 이메일을 입력하는 경우가 많습니다. 예를 들어 chris @ gmial.com 또는 james @ hotnail.com 입니다.

이러한 도메인은 스팸 트랩 으로 사용되도록 구성되어 이메일 서버의 IP 및 / 또는 도메인에 자동으로 플래그를 지정하고 평판을 손상시킵니다.

이를 피하려면 제품 가입시 입력 한 이메일 주소를 다시 확인하십시오. 또한 확인 이메일을 보내 제품 키를 보내거나 구독을 수락하기 전에 확인 이메일을 입력하는 사람이이 이메일 주소를 100 % 검증했는지 확인하십시오. 사서함 소유자가 가입 한 사람인지 실제로 확인하려면 확인 이메일에 수신자가 링크를 클릭하거나 회신해야합니다.


1
이. 우선 기본 가입 위생을 연습하지 않으면 현재 허용되는 답변에 아무런 차이가 없습니다.
tripleee

4

수신 측에 붙어있는 것을 결정하기 위해 일부 피드백에 의존하는 것처럼 들립니다. 명백한 "스팸"에 대해 아웃 바운드 메일을 직접 확인해야합니다.

괜찮은 스팸 제어 시스템을 구입하고이를 통해 발신 메일을 보내십시오. 적절한 양의 메일을 보내면 아웃 바운드 바이러스를 보낼 위험이 있기 때문에 특히 데스크톱 Windows 사용자가있는 경우이 작업을 수행해야합니다.

예를 들어 Proofpoint는 단일 배포에서 스팸 + 바이러스 백신 + 평판 서비스를 사용했습니다. (저는 그곳에서 일 했었기 때문에이 문제를 제 머리 꼭대기에서 알게되었습니다.이 분야의 다른 벤더들도 비슷한 기능을 가지고 있다고 확신합니다.)하지만 아이디어를 얻습니다. 기본 상용 스팸 제어 설정을 통해 메일을 보내는데 통과되지 않으면 네트워크를 벗어나지 않아야합니다.

또한 Habeas와 같이 스팸이 아닌 아웃 바운드 전자 메일의 전송 속도를 높이는 데 도움을 줄 수있는 회사가 있습니다.


3

Google에는이를위한 도구와 지침이 있습니다. https://postmaster.google.com/ 에서 찾을 수 있습니다. 도메인 이름을 등록하고 확인하면 Google은 해당 IP 주소와 도메인의 개별 점수를 제공합니다.

로부터 대량 발신자 가이드 라인 :

인증을 통해 메시지를 올바르게 분류 할 수 있습니다. 피싱 사기에 사용되는 메시지가 위조 될 가능성이 높기 때문에 인증이없는 전자 메일은 거부되거나 스팸 폴더에 저장 될 수 있습니다. 또한 보안상의 이유로 첨부 파일이있는 인증되지 않은 전자 메일은 완전히 거부 될 수 있습니다.

Gmail에서 사용자를 식별 할 수있게하려면 다음 단계를 따르십시오.

  • 대량의 메일을 보내려면 일관된 IP 주소를 사용하십시오.
  • 도메인을 가리키는 메일을 보내는 IP 주소에 대해 유효한 역방향 DNS 레코드를 유지하십시오.
  • 발송하는 모든 대량 메일의 '보낸 사람 :'헤더에 동일한 주소를 사용하십시오. 다음 사항도 권장합니다.

  • DKIM으로 메시지에 서명하십시오. 1024 비트 미만을 사용하여 키로 서명 된 메시지는 인증하지 않습니다.

  • SPF 레코드를 게시하십시오.
  • DMARC 정책을 게시하십시오.

1

나는 항상 다음을 사용합니다 : https://www.mail-tester.com/

전자 메일 보내기의 기술적 부분에 대한 피드백을 제공합니다. SPF 레코드, DKIM, Spamassassin 점수 등. 필요한 것을 알고 있지만 계속 오류가 발생하고 mail-tester.com을 통해 무엇이 잘못 될 수 있는지 쉽게 알 수 있습니다.


0

허용하려면 DMARC의 SPF에 대한 검사가 될 수도 통과하고 정렬 센드 메일을 사용하는 경우, 당신이 봉투의 보낸 사람 주소 (설정되어 있는지 확인 -f또는 -r의 도메인과 일치 뭔가 매개 변수) From:헤더 주소를.

PHP로 :

mail()5 번째 매개 변수를 설정하지 않고 PHP의 내장 함수를 사용하면 올바르게 수행되지 않으면 DMARC SPF 검사가 정렬되지 않습니다. 기본적으로 sendmail은 웹 서버 사용자와 함께 RFC5321 .MailFrom / Return Path 헤더 로 이메일을 보냅니다 .

예를 들어 웹 서버 domain.com에서 host.com웹 사이트 를 호스팅한다고 가정 해보십시오 . 추가 매개 변수 매개 변수를 설정하지 않은 경우 :

mail($to,$subject,$message,$headers); // Wrong way

이메일 수신자는 다음과 같은 메일 헤더가 포함 된 이메일을받습니다.

Return-Path: <your-website-user@server.host.com>
From: <your-website-user@domain.com>

이것이 SPF 검사를 통과하더라도 정렬되지 않습니다 (domain.com과 host.com이 일치하지 않기 때문에). DMARC SPF 검사가 정렬되지 않은 것으로 실패합니다.

대신 PHP 함수 에 5 번째 매개 변수를 포함시켜 봉투 발신자 주소를 sendmail에 전달 해야합니다mail() . 예를 들면 다음과 같습니다.

mail($to,$subject,$message,$headers, '-r bounce_email@domain.com'); // Right way

이 경우 전자 메일 수신자는 다음과 같은 메일 헤더가 포함 된 전자 메일을받습니다.

Return-Path: <bounce_email@domain.com>
From: <your-website-user@domain.com>

이 두 헤더 모두의 주소를 포함하므로 domain.comSPF가 전달되고 정렬되므로 DMARC도 SPF 검사를 전달합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.