BASE64_LENGTH_79_INF : SpamAssasin이 거래 이메일에 불이익을줍니다


9

Magento 상점의 거래 이메일이 스팸으로 표시되는 경우가 종종있었습니다. Apache SpamAssasin은 BASE64_LENGTH_79_INF 규칙 2.0에서 점수를 매 깁니다 .

규칙 설명은 다음과 같습니다.

http://en.wikipedia.org/wiki/Base64 에 따르면 기본 64의 길이는 76 자이므로 형식이 다릅니다.

링크 된 Wikipedia 기사에서 :

MIME은 Base64로 인코딩 된 줄에 고정 길이를 지정하지 않지만 최대 76 자 길이를 지정합니다. 또한 대부분의 구현에서는 CR / LF 줄 바꿈 쌍을 사용하여 인코딩 된 줄을 구분하지만 알파벳 이외의 문자는 호환 디코더에서 무시해야한다고 지정합니다.

따라서 base64로 인코딩 된 내용이 예상대로 줄 바꿈되지 않은 것처럼 보입니다. 같은 사람이 있습니까? 이 잘못된 형식의 원인은 무엇입니까?

답변:


9

Zend Framework에서는 magento/lib/Zend/Mime.phpa를 구현 const LINELENGTH = 72;하지만 상수를 덮어 쓰고 app/code/core/Zend/Mime.php200으로 설정합니다. app/code/core/Zend/Mime.phpMagento의 일반 메커니즘을 사용하여 덮어 쓰고 encodeself :: LINELENGTH를 다른 상수로 대체 하여 메소드 구현을 변경할 수 있습니다 .

public static function encode($str, $encoding, $EOL = self::LINEEND)
{
    switch ($encoding) {
        case self::ENCODING_BASE64:
           // original: return self::encodeBase64($str, self::LINELENGTH, $EOL);
           return self::encodeBase64($str, 72, $EOL); // hardcoded value, just to emphasize the meaning

        case self::ENCODING_QUOTEDPRINTABLE:
            return self::encodeQuotedPrintable($str, self::LINELENGTH, $EOL);

        default:
            /**
             * @todo 7Bit and 8Bit is currently handled the same way.
             */
            return $str;
    }
}

/ 편집 : 처음에는 self :: LINELENGTH를 Zend_Mime :: LINELENGTH로 바꿨습니다. 오토로더는 항상 lib / Zend가 아닌 Magento 코어에서 Zend_Mime 클래스를로드하기 때문에 작동하지 않습니다.


76이 아닌 72로 하드 코딩 해야하는 이유가 있습니까?
raduparvan

1
Zend_Mime의 원래 구현은 const LINELENGTH = 72; (참조 lib/Zend/Mime.php)이므로이를 신뢰하지 않을 이유가 없습니다. 아마도 76과의 차이는 줄 끝에 사용됩니다. 적절한 상수를 사용하는 대신 값을 하드 코딩하면 그 점을 보여주는 것입니다. 실제 구현에서는 해당 값이 일정하게 유지되어야합니다. / 편집 : $ chunklen에서 문자열을 분할 한 다음 $ end를 추가하는 Zend_Mime::encodeBase64()용도 구현 chunk_split( php.net/manual/en/function.chunk-split.php 참조 )
Adi

1

메일 서버 (SMTP)는 어떻게 설정됩니까? SPF 기록이 정확합니까?

메일이 스팸으로 표시 될 수있는 여러 가지 이유가 있습니다. 내용은 그 일부일뿐입니다.

자세한 내용은 여기 : https://blog.amasty.com/5-steps-for-no-spam-e-mails-in-magento/


콘텐츠와 관련된이 특별한 이유를 찾고 있습니다. 그러나 링크 된 아티클에는 유용한 정보가 포함되어 있습니다. "Magento는 기본적으로 인용 인쇄 가능한 줄 길이에 200을 사용합니다. Zend_Mime 클래스를 재정 의하여 변경할 수 있습니다." - 감사!
Fabian Schmengler
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.