BASE64_LENGTH_79_INF: SpamAssasin işlem e-postalarını cezalandırıyor


9

Bir Magento mağazasından gelen işlem e-postalarının genellikle spam olarak işaretlendiğini fark ettim. Apache SpamAssasin 2.0, BASE64_LENGTH_79_INF kuralından bir puan verir .

Kural açıklaması şunları belirtir:

Http://en.wikipedia.org/wiki/Base64'e göre , taban 64 yalnızca 76 karakter uzunluğunda olmalıdır, bu nedenle bunlar format dışıdır.

Bağlantılı Wikipedia makalesinden:

MIME, Base64 kodlu satırlar için sabit bir uzunluk belirtmez, ancak maksimum 76 karakterlik bir satır uzunluğu belirtir. Buna ek olarak, çoğu uygulamada kodlanmış satırları sınırlamak için bir CR / LF satırsonu çifti kullanılmasına rağmen, fazladan alfabetik karakterlerin uyumlu bir kod çözücü tarafından yoksayılması gerektiğini belirtir.

Base64 kodlu içeriğin beklendiği gibi satırlara bölünmemiş olduğu anlaşılıyor. Aynı karşılaşan var mı? Bu kötü formata ne sebep olabilir?

Yanıtlar:


9

Zend Framework'te magento/lib/Zend/Mime.phpbir const LINELENGTH = 72;sabitin üzerine yazılır app/code/core/Zend/Mime.phpve 200'e ayarlanır. app/code/core/Zend/Mime.phpMagento'nun düzenli mekanizmalarını kullanarak üzerine yazabilir ve encodeself :: LINELENGTH'i farklı bir sabitle değiştirerek yöntemin uygulanmasını değiştirebilirsiniz:

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;
    }
}

/ Edit: başlangıçta self :: LINELENGTH yerine Zend_Mime :: LINELENGTH; otomatik yükleyici her zaman Zend_Mime sınıfını her zaman lib / Zend yerine Magento çekirdeğinden yükleyecektir.


76'ya değil 72'ye sabit kodlamanın bir nedeni var mı?
raduparvan

1
Zend_Mime orijinal uygulaması const LINELENGTH = 72; (bkz lib/Zend/Mime.php) bu yüzden buna güvenmemek için hiçbir neden görmedim; muhtemelen 76 ile olan fark satır sonları için kullanılır. Düzgün bir sabit kullanmak yerine değeri kodlamak sadece noktayı göstermekti. Gerçek uygulamada, bu değer sabit bir şekilde yaşamalıdır. / Edit: Dizeyi $ chunklen'e ayıran Zend_Mime::encodeBase64()kullanımların uygulanması chunk_splitsonra $ end ekler (bkz. Php.net/manual/en/function.chunk-split.php )
Adi

1

Posta sunucunuz (SMTP) nasıl kurulur? SPF kaydınız doğru mu?

Postanın spam olarak işaretlememin çeşitli nedenleri olabilir, içerik bunun yalnızca bir parçasıdır.

Daha fazla bilgi için: https://blog.amasty.com/5-steps-for-no-spam-e-mails-in-magento/


Sadece içerikle ilgili olan bu özel sebebi arıyorum. Ancak bağlantılı makale faydalı bilgiler içerir: "Magento varsayılan olarak alıntı yapılabilir satır uzunluğu için 200 kullanır. Bu, Zend_Mime sınıfının geçersiz kılınmasıyla değiştirilebilir." - Teşekkürler!
Fabian Schmengler
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.