왜 당신의 메일이 반등 & 당신은 무엇을 할 수 있습니까

최근에 Giant Machines에서, 나는 우리의 고객 프로젝트의 몇 통의 이메일을 조사하고 있는데, 이 메일들은 특정한 인터넷 서비스 제공자 (ISP) 에게 정확하게 발송되지 않았다.그들의 전자메일 설정과 설정에 대해 몇 가지 연구를 한 후에, 나는 ISP의 스팸메일 스캔 설정이 고객에게 무해한 전자메일을 잘못 차단한 것을 발견했다.따라서, 이 전자메일들이 발송되지 않은 원인을 확인하기 위해 로컬에서 고장 제거와 디버깅을 해야 한다.로컬 디버깅에 대해 spamscanner라는 npm 패키지를 사용했습니다. 다음에 더 깊이 있게 소개하겠습니다.
55% to 85% 모든 전자메일 데이터 중 일부는 스팸메일로 인한 것입니다!따라서 이메일 클라이언트는 잠재적으로 유해한 스팸메일이 사용자에게 도착하는 것을 막으려고 끊임없이 시도하고 있다.그러나 때때로 완전히 유효한 (스팸메일이 아닌) 전자메일이 잘못 표시될 수도 있다.
이 글에서 ISP가 악성 전자메일을 감지하기 위해 스팸 스캐너를 어떻게 사용하는지 소개할 것이다.스팸메일 스캐너를 로컬에서 설정하는 방법을 보여 드리겠습니다. 스팸메일을 디버깅하고 해결할 수 있습니다.이 문제 해결은 e-메일이 예상 수신자에게 전달되지 않을 수 있는 이유를 확인하는 데 도움이 됩니다!이 문서에서는 JavaScript, 터미널, 코드 편집기에 대해 기본적으로 알고 있다고 가정합니다.

이메일 기본 사항


전자메일이 탄생한 이래 전자메일을 보내고 받는 과정에 큰 변화가 생겼지만 그 기본 원칙은 여전히 존재한다.본고에서 당신이 알아야 할 것은 인터넷 메일 클라이언트(예를 들어 Gmail, Outlook 등)와 전용 메일 서버가 왕복 통신하는 것뿐입니다.이메일의 배후 작동 방식에 대한 자세한 내용은 "How Does Email Work."기사를 참조하십시오.

이메일 인증


대량의 스팸메일로 인해 여러 해 동안 몇 가지 협의를 실시하여 각종 프로그램 검사를 통해 스팸메일을 완화시키려고 시도하였다.
세 가지 주요 프로토콜은 다음과 같습니다.

  • SPF(발송자 정책 틀): 발송자가 그들이 주장하는 사람입니까?

  • DKIM(도메인 키 식별 메일): 개인 키로 메일 헤더를 암호화합니다.그리고 서버는 헤더를 복호화하고 메시지를 검증하기 위해 공개된 키를 사용합니다.

  • DMARC(역 메시지 인증 보고서와 일치성): SPF와 DKIM 위에 구축;보낸 사람은 SPF/DKIM 처리 방법과 실패한 체크를 처리하는 방법을 결정하는 정책을 설정할 수 있습니다.
  • 이러한 이메일 인증 프로토콜에 대한 자세한 내용은 "How Email Authentication Works"기사를 참조하십시오.

    스팸 스캐너


    받은 전자메일이 악의적인지 확인하기 위해 메일 서버는 아파치의 popularSpamAssasin 같은 스팸메일 스캐너를 사용한다.이러한 스팸메일 스캐너의 내부 작업은 좀 복잡할 수 있다. (궁금한 것은 Naive Bayes Classifiers on trained, large datasets 과 관련이 있지만, 주요한 수확은 이러한 분류 시스템은 일반적으로 전송된 전자메일의 유효성을 확인하기 위해 수치를 분배한다는 것이다.점수가 높을수록 이메일은 스팸메일일 가능성이 높다.참고로 ISPstates는 다음과 같은 스팸 필터링 정보를 제공합니다.

    All incoming emails are evaluated against these spam rules and are assigned a "spam score". This score determines whether the message will be classified as spam. For standard filtering, the threshold is set at 5, meaning any message with a score of 5 or higher is classified as spam. Messages scoring between 5 and 10 will be delivered, but will include a spam notification in the subject of the email so that you can immediately identify and delete these messages.


    서로 다른 ISP는 그들이 선택한 스팸메일 스캐너에 서로 다른 정책 설정을 가지고 있지만, 같은 생각도 적용된다.

    Litmus와 같은 서비스는 각종 스팸메일 스캐너가 전자메일을 어떻게 정렬하는지 보는 기능을 제공한다.
    위의 캡처에서 보듯이, 내가 조사하고 있는 전자 우편 템플릿은 각종 스팸 스캔 프로그램에서 낮은 점수를 받았다.그것은 또 무슨 좋은 점이 있습니까?비록 점수가 매우 낮지만, 왜 이 메일들은 반등합니까?다음에 우리는 이 구체적인 문제를 더욱 상세하게 이해할 것이다.

    첫걸음


    스팸 스캐너를 사용하여 전자 우편 템플릿의 고장을 조사하고 제거하기 전에 this article에 열거된 조언을 따라 점수를 빠르게 낮출 수 있다.

    그럼... 로컬 스팸 스팸 스캐너에 대한 설정은?


    초기 설정


    npm 구성 요소spamscanner의 설치 설명은 docs를 참조하십시오.

    간단한 서버 및 로컬 이메일 템플릿


    전자 메일 클라이언트에서 전자 메일 메시지를 다운로드할 수 있습니다(파일 확장자는.eml).이 로컬 저장 정보가 있으면, 우리는 그것들에 대해spamscanner를 실행해서 그것들의 내용을 더욱 검사할 수 있다.
    spamscanner가 설치되어 있고 노드가 있다고 가정하십시오.js Local setup - 다음과 같은 기본 스크립트를 사용하여 로컬에 저장된 전자 메일 메시지를 스캐너로 실행할 수 있습니다.
    // in a file called index.js
    const fs = require("fs");
    const path = require("path");
    // Make sure to install spamscanner in your package.json
    const SpamScanner = require("spamscanner");
    
    const scanEmail = async () => {
      // For a list of all options & their defaults, see:
      // https://www.npmjs.com/package/spamscanner#api
      const scanner = new SpamScanner({ debug: true });
    
      // Swap out the "Your_locally_saved_message_here.eml" file with the actual filename in the directory
      // containing this script
      const source = fs.readFileSync(
        path.join(__dirname, "Your_locally_saved_message_here.eml")
      );
    
      try {
        const scanResult = await scanner.scan(source);
    
        // For a list of properties available for inspection, see:
        // https://www.npmjs.com/package/spamscanner#scannerscansource
        console.log("Scan results, scanResult.mail:", scanResult.mail);
      } catch (err) {
        console.error("Error in scanEmail:\n", err);
      }
    };
    
    scanEmail();
    
    // To run this script, run `node index.js` in your terminal where this script resides.
    
    또한 전체 SMTP 메시지인 경우 문자열이나 버퍼에서 검색 프로그램을 실행할 수도 있습니다. 즉, 제목과 전체 메일 내용을 포함합니다.
    이 스크립트를 실행한 결과는 다음과 같이 반환됩니다.
    interface ScanResult {
      is_spam: boolean;
      message: string;
      results: {
        classification: Object;
        phishing: Array;
        executables: Array;
        arbitrary: Array;
      };
      links: Array;
      tokens: Array;
      mail: Object;
    }
    
    이러한 필드에 대한 자세한 내용은 docs를 참조하십시오.일반적으로 is_spam 필드의 결과는 메일이 스팸메일로 표시되지 않을 것이라고 확신할 수 있을 것입니다.spamscanner는 수치를 지정하지 않고 브리 값을 되돌려 줍니다.
    그러나 ISP마다 스팸 스캐너를 다르게 사용하기 때문에 이메일을 더 조사할 필요가 있을 수 있습니다.이 동작을 실행하려면 위의 코드 예시에 따라 'debug' 로고를 true 로 설정해야 합니다.그리고 전자 우편 내용에 대한 더 자세한 디버깅 정보를 포함하는 scanResult.mail 의 내용을 검사할 수 있습니다.
    이.mail 객체는 다음 모양을 반환합니다.
    interface ParsedMail {
      attachments: Attachment[];
      bcc?: AddressObject | AddressObject[];
      cc?: AddressObject | AddressObject[];
      date?: Date;
      from?: AddressObject;
      headerLines: HeaderLines;
      headers: Headers;
      html: string | false;
      inReplyTo?: string;
      messageId?: string;
      priority?: "normal" | "low" | "high";
      references?: string[] | string;
      replyTo?: AddressObject;
      subject?: string;
      text?: string;
      textAsHtml?: string;
      to?: AddressObject | AddressObject[];
    }
    
    그것은 전자 우편에 대한 더 구체적인 정보를 얻을 수 있다.
    다음은'.mail'대상의 일부'headers'필드의 예시 화면 캡처를 보여 줍니다.
    내가 조사한 전자메일에서 스팸메일 스캔 분류기는 전자메일을'비스팸메일'로 표시하지만 Optimal은 전자메일을 받을 때 다음과 같은 제목X-Optimum-spam: yes을 추가했다.

    전자 우편 파일에 존재하는 제목들최고의 스팸메일 제목을 주의하세요.
    이로 인해 이 메일들은 스팸메일로 표시될 뿐만 아니라 완전히 막히거나 반등된다!

    모든 다른 방법이 실패했을 때 수동으로 디버깅을 시도해 보십시오.


    만약 당신의 메일이 여전히 차단된다면, 스팸메일 스캔 점수가 매우 낮거나 is_spamfalse 이지만,spamscanner 를 사용한다면, 더 수동적인 방법을 취해야 할 수도 있습니다.이를 위해 나는 일부 전자메일을 점차 삭제하고 삭제된 전자메일을 우리 ISP를 막는 데 다시 보냈다.나는 결국 문제를 이 줄로 거슬러 올라갈 수 있다.
    <a href="mailto:[email protected]">Contact customer support</a>
    
    구체적으로 말하면 템플릿 mailto: 에서 Optimium의 전자메일 설정은 전자메일을 스팸메일로 표시하고 직접 메일을 거부한다. 비록 메일토 라벨이 다른 ISP가 우리의 메일을 스팸메일로 표시하지 않더라도.
    또한 다음과 같은 (수정된) 사본으로 인해 다른 e-메일도 바뀝니다.

    If this email change request wasn't authorized by you, please click the link below to cancel. If you have any questions, you can contact support via [email protected] or by calling +1 555-555-5555.


    구체적으로 템플릿 +1 에서 Optimium의 스팸메일 스캐너 설정은 전자메일을 스팸메일로 표시하고 이 메일을 직접 거부했다. 비록 이 메일은 유효하고 다른 ISP나 스팸메일로 표시되지 않았지만.
    Optimal의 독특한 Spam Assassin 설정으로 인해, 우리는 고객들에게 문제가 존재하는 것을 발견했습니다. 그들은 가장 좋은 지역 전자메일을 가지고 있으며, 'mailto:' 또는 '+1' 이 있는 전자메일을 받으려고 합니다.Optimal이 왜 다른 ISP에서 이 전자메일을 차단하지 않은 상태에서 차단하는지는 아직 알 수 없지만, 이들의 설정이 매우 민감해서 잠재적인 안전 위험을 완화하려고 할 때 신중한 오류가 있었기 때문일 것이다.
    당신의 전자메일에 영향을 줄 수 있는 문제는 다를 수 있지만, 여기에서 사용하는 기술은 전자메일의 반등 범위를 좁히는 데 도움을 줄 수 있습니다.

    TL;박사 01 명

  • 이메일 서버는 메시지를 수신, 전달 및 전달합니다.
  • 이메일이 제대로 인증되지 않은 경우 이메일 서버는 실패한 "반등"메시지를 반환해야 합니다.
  • 스팸 스캐너는 보통 스팸메일이나 비스팸메일로 분류할 수 있는 점수를 전자메일에 분배한다.핫도그🌭
  • 스팸메일로 분류되는지 확인하려면 전자 우편 템플릿에 npm 패키지spamscanner를 로컬로 사용할 수 있습니다.
  • 다른 모든 방법이 실패할 경우 ISP의 가장자리에 특정한 디버깅을 위해 더 수동적인 디버깅 방법을 시도해야 할 수도 있습니다.
  • 추가 자원

  • https://spamassassin.apache.org/
  • https://sendgrid.com/blog/10-tips-to-keep-email-out-of-the-spam-folder/
  • https://sendgrid.com/docs/glossary/spam/
  • 무슨 문제라도 있습니까?다음은 댓글과 즐거움의 코드!

    좋은 웹페이지 즐겨찾기