[server] 이메일을 보내고 스팸으로 분류되는 것을 피하는 방법은 무엇입니까?

이것은이다 표준 질문 서버에서 보낸 이메일이 스팸으로 잘못 분류하고 처리하는 방법에 대한. 자세한 내용은 다음과 같은 유사한 질문이 도움이 될 수 있습니다.

때로는 고객에게 뉴스 레터를 보내려고합니다. 문제는 일부 이메일이 스팸 메시지로 걸러진다는 것입니다. 주로 클라이언트에서 Outlook을 사용합니다 (내 자신의 Outlook 2007에서도).

이제 “좋은”이메일을 만들기 위해 무엇을해야하는지 알고 싶습니다. 역방향 조회 등에 대해 알고 있지만 (예를 들어) 고유 ID를 가진 구독 취소 링크는 어떻습니까? 스팸 등급이 증가합니까?



답변

귀하의 이메일은 일반적인 스팸 이메일처럼 보이지 않아야합니다. 큰 이미지 만 삽입하지 마십시오. 문자 집합이 올바르게 설정되어 있는지 확인하십시오. “IP 주소 만”링크를 삽입하지 마십시오. 일반적인 이메일을 작성할 때 의사 소통을하십시오. 탈퇴 또는 탈퇴를 정말 쉽게합니다. 그렇지 않으면 사용자가“스팸”버튼을 눌러 구독을 취소하면 평판에 영향을 미칩니다.

기술적 인 측면에서 : SMTP 서버를 선택할 수 있으면 “깨끗한”SMTP 서버인지 확인하십시오. 스팸 SMTP 서버의 IP 주소는 종종 다른 공급자가 블랙리스트에 올립니다. SMTP 서버를 미리 모르는 경우 배치 크기 및 배치 간 지연을 제어하기 위해 응용 프로그램에 구성 옵션을 제공하는 것이 좋습니다. 일부 메일 서버는 대량 전송 일괄 처리 나 지속적인 활동을 허용하지 않습니다.

SPF도메인 키 와 같은 이메일 인증 방법을 사용 하여 이메일과 도메인 이름이 함께 속해 있음을 증명하십시오. 좋은 부작용은 이메일 도메인이 스푸핑되는 것을 방지하는 데 도움이된다는 것입니다. 또한 확인 하여 역 DNS를 메일을 보내는 데 사용하는 도메인 이름에 메일 서버 포인트의 확인 IP 주소를 확인합니다.

이메일의 회신 주소가 유효한 기존 주소인지 확인하십시오. 이메일 주소 (예 : 이메일 주소)뿐만 아니라받는 사람 필드에 주소의 전체 실명을 사용하고 abuse@example.compostmaster@example.com"John Doe" <john.doe@example.com>같은 남용 계정을 모니터링하십시오 .


답변

전자 메일 주소가 반송되는 메시지 수신자를 자동으로 수신 거부하고 주요 메일 제공 업체와 불만 피드백 루프를 설정하고 메시지를 스팸 / 정크로보고하는 수신자를 자동으로 수신 거부합니다. 이것은 평판과 배달 가능성을 향상시키는 데 먼 길을 갈 것입니다.


답변

이 질문은 기본 사항이 제자리에 있음을 언급하지만, 우리가 다른 사람들을 정식 질문으로 지적함에 따라 나는 우리가 우리의 기초를 덮고 있는지 확인하고 싶습니다.

요즘에는 이러한 최소값이 필요합니다.

  1. 정방향 및 역방향 DNS가 올바르게 구성되어 있는지 확인하십시오. 메일 서버는 HELO / EHLO 교환에서 자신을 식별해야하며 해당 이름은 서버가 사용중인 IP를 찾아야합니다. 마찬가지로 해당 IP의 역방향 조회는 이름을 반환해야합니다.

  2. 서버가 실제로 해당 핸드 쉐이크에서 호스트 이름을 전송하고 있는지 확인하십시오. 서버가 IP 주소를 보내지 않아야합니다.

  3. IP 주소가 DNSRBL (블랙리스트)에 없는지 확인하십시오. 그렇다면 돌보아주십시오.

  4. 보다 유명한 평판 서비스를 통해 IP의 평판을 확인하십시오 (SenderScore는 현재 큰 규모이지만 시간이 지나도 견딜 수는 없습니다). 이러한 서비스에는 일반적으로 평판 향상을위한 지침이 있지만 RBL과 같은 명백한 “go / no-go”는 아닙니다.

  5. 가짜 헤더, 헤더에 거짓말, 당신은 메시지에서 최소 헤더를 포함하고 있는지 확인하지 마십시오 ( DateFrom필요하는이 있어야한다 Subject, Sender, Reply-To, 및 To/ Cc/ Bcc[해당되는 경우). 이것은 Outlook Express 헤더를 위조하거나 날짜를 남기지 않기 때문에 정크로 끝나는 유효한 뉴스 레터가있는 가장 큰 애완 동물 친구 중 하나입니다.

선택적으로 SPF, DKIM 및 DMARC 설정을 고려해야합니다. 이는 배달 가능성에 도움이되지만 필수는 아닙니다 (대부분의 전자 메일 서버가 아님).


답변

불행히도 여러 가지 필터링 기술이 있으며 일부 주요 메일 제공 업체는 사용하는 내용 및 / 또는 다양한 테스트 / 필터에 부여 된 가중치를 게시하지 않으므로 통과 방법을 알기가 어렵습니다. 기본적으로 스팸은 ISP와 사용자를 합법적 인 메시지 (특히 뉴스 레터와 같은 대량 메시지)가 통과하기 어려운 상황으로 이끌었습니다. 더 이상 전자 메일을 이전의 반쯤 신뢰할 수있는 전송 방법으로 생각하지 않습니다.

좀 덜 부정적이고 더 도움이 되려면 … 특정 고객에게 특정 문제가있을 때 프로그램이 알려줄 수있는 것들이있을 수 있습니다. 나는 어디에서나 사용하지 않기 때문에 전망에 대해 구체적으로 알지 못하지만 많은 메일 필터는 헤더를 메시지에 삽입하여 사용 된 필터, 결과 및 해당 필터에 부여 된 가중치를 나열합니다. 따라서 메시지의 전체 소스를 보면 정크 폴더로 이동 한 경우 유용한 단서를 찾을 수 있습니다. 예를 들어 SpamAssassin 기반 필터는 다음 형식의 헤더를 삽입합니다.

X-Spam-Flag: YES
X-Spam-Score: 13.371
X-Spam-Level: *************
X-Spam-Status: Yes, score=13.371 tagged_above=-10 required=5.4
    tests=[BAYES_99=3.5, FB_GET_MEDS=0.803, RCVD_IN_SORBS_WEB=0.619,
    RCVD_IN_XBL=3.033, RDNS_NONE=0.1, URIBL_AB_SURBL=1.86,
    URIBL_BLACK=1.955, URIBL_JP_SURBL=1.501]

(이 예는 정크 파일에있는 진짜 스팸 메시지에서 뽑혔습니다)

베이지안 필터링 및 사용자 교육과 관련된 기타 방법이 일반적이므로 명확하지는 않습니다. 따라서 클라이언트가 동일하게 기본 구성되어 있어도 필터 통과 및 실패가 다른 사람과 크게 다를 수 있습니다. 뉴스에 대한 다른 정보를 고려해야 할 수도 있습니다 (많은 사람들이 다양한 성공률로 소셜 네트워킹 프로토콜을 사용하려고합니다).


답변

다른 사람들이 말했듯이, 전자 메일을 보낼 때 스팸 메시지처럼 “보이지 않는”것을 피하고 싶지만 기술이 다양하기 때문에 스팸처럼 보일 수있는 것과 그렇지 않은 것을 반드시 말할 수는 없습니다.

한 가지 고려해야 할 것은 실제로는 빠른 설명 / 인사를 포함하고 “최신 뉴스 레터를 보려면 여기를 클릭하십시오!”가 포함 된 각 뉴스 레터마다 일반 텍스트 전자 메일을 고객에게 보내는 것입니다. 메시지; 이렇게하면 웹 서버에서 메시지를 호스팅 할 수 있고 전자 메일의 크기가 줄어들고 (메일 서버에로드 됨) 웹 서버의 로그를 확인하여 몇 명의 고객인지에 대한 피드백을 얻을 수 있습니다 실제로 메시지를 읽고 삭제하는 것입니다.


답변

이메일이 스팸으로 식별되거나 수신자에게 도착하지 않도록하는 자세한 솔루션

상황 예 : 이메일example.com보내야 하는 PHP 웹 사이트를 실행하는 서버가 있습니다 . 이메일이 항상 배달되는 것은 아닙니다. (점 주인이고 구매 후 고객에게 이메일을받지 못하면 큰 문제가됩니다!).

모든 다음 단계를 수행하면, 그것은 해야 문제의 99,9 %를 해결한다. (처음에는 몇 가지 작업 만 수행하고 DKIM을 건너 뛸 수 있다고 생각했지만 마지막으로 모든 문제를 해결해야했습니다.)

  1. 우선, 누가 이메일을 보내고 있습니까?

    PHP 코드가 이메일을 보낼 때 종종 유명한 PHP 함수를 사용 mail(...)합니다. 그러나이 기능은 후드에서 무엇을합니까? 가 test.php포함 된 페이지를 실행 해 봅시다 <?php echo ini_get('sendmail_path'); ?>. 예를 들면 다음과 같습니다 /usr/sbin/sendmail -t -i.. 좋은 소식입니다. 이제 어떤 프로그램이 실제로 이메일을 처리 하는지 알고 있습니다 !
    이제 까다로운 정보 : 이름 sendmail다양한 프로그램 이 될 수 있습니다 . sendmail이전 단계에서 보더라도 sendmail , postfix 또는 exim 또는 qmail 등이 설치되어있을 수 있습니다. 하자 dpkg -S /usr/sbin/sendmail. 대답은 postfix: /usr/sbin/sendmail, 우리가 postfix설치 했음을 의미 합니다.

  2. /var/mail/www-data제대로 전송되지 않은 전자 메일과 그 이유 를 확인하려면 로그 파일 을 확인하십시오. 다음 단계에서 유용 할 수 있습니다.

  3. Jeff Atwood의 블로그 에서 언급했듯이 역 PTR 레코드를 살펴볼 차례입니다. (자세한 내용은 여기에 추가).

  4. postfix 구성 파일 /etc/postfix/main.cf파일 에 다음 행을 추가 하십시오.

    inet_protocols=ipv4
    

    그런 다음으로 postfix를 다시 시작하십시오 service restart postfix. 왜? 수신자가 Gmail 일 때 이와 같은 문제가 발생했기 때문에

    Google 시스템에서이 메시지가 550-5.7.1이 PTR 레코드 및 550-5.7.1 인증에 관한 IPv6 전송 지침을 충족하지 않음을 감지했습니다. 550-5.7.1에 대한 자세한 내용은 550-5.7.1 https://support.google.com/mail/?p=ipv6_authentication_error 를 참조하십시오.

    쉬운 솔루션을 전환 한 후였다 postfix, IPv4 만하는 것이이 단계 4 (당신을 위해 불필요한 될 수 있을까?).

  5. SPF DNS 레코드 . 에서 전자 메일을 보낼 수 있음을 증명하기 위해 @example.com도메인의 DNS 레코드에 SPF 레코드를 추가 할 수 있습니다 example.com. 어딘가에서 찾았 The DNS record type 99 (SPF) has been deprecated으므로 TXT 레코드를 대신 사용합니다. 이것을 TXT DNS 레코드로 추가합시다 (주 1 참조) .

    v=spf1 a mx include:_spf.google.com include:sendgrid.net ~all
    

    왜 이것들이 포함됩니까? @ example.com에서 이메일을 보내는 유일한 서버는 아니기 때문입니다! 신뢰할 수있는 SMTP 제공 업체 인 Sendgrid를 사용하여 contact@example.com으로 메일보내 도록 Gmail을 구성했습니다 ( 여기의 스크린 샷 참조 ) . 를 추가하지 않으면 Gmail에서 님에게 이메일을 보낼 수 없습니다 .include:@example.com

  6. DKIM 디지털 서명. 여기 에 언급 된 것처럼 DKIM의 목표는 전송 중에 메일 내용이 변경되지 않도록하는 것입니다. 여기에 우분투 설치 과정 (유용한 가이드는 여기에 너무) :

    • apt-get install opendkim opendkim-tools

    • 키를 작성하십시오 ( http://dkimcore.org/tools/를 사용 하여 키 및 관련 DNS TXT 레코드를 생성 할 수도 있음 ).

      mkdir /etc/opendkim
      cd /etc/opendkim
      opendkim-genkey -t -s mail -d example.com
      
    • 이것을 넣어 보자 /etc/opendkim.conf.

      Syslog                 yes
      Domain                 *
      KeyFile                /etc/opendkim/mail.private
      Selector               mail
      AutoRestart            yes
      Background             yes
      Canonicalization       relaxed/relaxed
      DNSTimeout             5
      Mode                   sv
      SubDomains             no
      

      이것에 /etc/default/opendkim:

      SOCKET="inet:8891@localhost" # Ubuntu default - listen on loopback on port 8891
      

      마지막으로 postfix 구성 파일 끝에 이것을 추가하십시오 /etc/postfix/main.cf:

      # DKIM
      milter_default_action = accept
      milter_protocol = 2
      smtpd_milters = inet:localhost:8891
      non_smtpd_milters = inet:localhost:8891
      
    • 이제 공개 키 ( /etc/opendkim/mail.txt)를 도메인의 DNS 레코드에 추가해 보겠습니다 .

      mail._domainkey.example.com. IN TXT "v=DKIM1; k=rsa; p=OqYHd...waPaQAX"
      

      내 등록 기관인 Namelynx의 모습은 다음과 같습니다.

    • DKIM의 마지막 단계 :로 메일 서비스를 다시 시작하십시오 service restart opendkim ; service restart postfix.

  7. 모든 것이 작동하는지 테스트하십시오. 가장 쉬운 방법은 PHP를 통해 이메일을 보내는 것입니다 auth-results@verifier.port25.com(이 매우 유용한 도구는 Port25 Solutions에서 제공됨).

    $emailfrom = "Example <contact@example.com>";
    $headers  = "MIME-Version: 1.0 \n";
    $headers .= "Content-Transfer-Encoding: 8bit \n";
    $headers .= "Content-type: text/plain; charset=utf-8\n";
    $headers .= "Reply-To: " . $emailfrom . "\n";
    $headers .= "From: " . $emailfrom . "\n";
    $headers .= "Bcc: example@gmail.com\n";
    mail("check-auth@verifier.port25.com", "Hello", "Hello!", $headers);
    

    그런 다음이 도구의 답변을 참조하십시오.

    ==========================================================
    Summary of Results
    ==========================================================
    SPF check:          pass
    DKIM check:         pass
    SpamAssassin check: ham
    

    mail-tester.com 서비스 도 유용합니다.

  8. (선택 사항) postmaster.google.com을 사용해보십시오. 나는 그것을 사용했지만 그것이 도움이되었는지 기억이 나지 않습니다.

  9. 그래도 문제가 해결되지 않으면 해결책은 전자 메일을 전문적인 솔루션으로 아웃소싱하여 밤낮으로 (실패한) 디버깅을 피할 수 있습니다. 여기 에 좋은 기사가 있습니다. “앱에서 이메일을 보내는 것은 *** 일 수 있습니다. 절반 만, 자신의 서버에서 보낸 메시지는받는 사람의 정크 폴더로 보내집니다.” 몇 주간의 조정 끝에 슬프게도 사실을 발견했습니다.


추가 사항 :

(1)

-all : Fail: All mail servers not listed in the SPF record are explicitly not authorized to send mail using the sender’s domain.
~all : Soft Fail: All mail servers not listed in the SPF record are not authorized to send mail using the sender’s domain, but the owner of the domain is unwilling to make a strong assertion to that effect.
?all : Neutral: The domain controller cannot or does not want to assert whether or not all mail servers not listed in the SPF record are authorized to send mail using the sender’s domain.
+all : Pass: All mail servers are authorized to send mail on behalf of the sender’s domain.


답변

온라인 비즈니스에서 주문 확인 이메일이 스팸으로 보내지거나 심지어 메일 서버를 통해 전송되지 않는 문제가있었습니다. 사이트 도메인으로 연결되는 링크가 포함 된 간단한 “주문 요약”이메일입니다. 결국 비즈니스 용 Google Apps 계정을 몇 개 구매했습니다. SMTP 서버로 작동하도록 이들 중 하나를 설정할 수 있습니다. Google을 메일 발신자로 설정하면 이러한 모든 문제가 해결되었습니다.

이메일 뉴스 레터에 대해서는 귀하를위한 옵트 인 / 아웃을 처리하는 서비스를 사용하십시오. 서비스 이외의 다른 사람을 사용하여 대량 메일을 보내면 아마도 금지 될 것입니다.