BASE64_LENGTH_79_INF:SpamAssasinがトランザクションメールにペナルティを課す


9

Magentoショップからのトランザクションメールがスパムとしてマークされることが多いことに気付きました。Apache SpamAssasinは2.0BASE64_LENGTH_79_INFルールからスコアを提供します。

ルールの説明は次のとおりです。

http://en.wikipedia.org/wiki/Base64によると、base 64の長さは76文字のみにする必要があるため、これらの形式は不適切です。

リンクされているウィキペディアの記事から:

MIMEでは、Base64でエンコードされた行の固定長は指定されていませんが、最大行長は76文字です。さらに、ほとんどの実装ではエンコードされた行を区切るためにCR / LF改行ペアを使用しますが、準拠するデコーダーではアルファベット以外の文字を無視する必要があることを指定します。

そのため、base64でエンコードされたコンテンツが期待どおりに行に分割されていないようです。誰かが同じことに遭遇しましたか?この不正なフォーマットの原因は何ですか?

回答:


9

Zend Frameworkでは、magento/lib/Zend/Mime.phpaを実装しますconst LINELENGTH = 72;が、定数は上書きさapp/code/core/Zend/Mime.phpれ、200に設定されます。Magento app/code/core/Zend/Mime.phpの通常のメカニズムを使用して上書きし、encodeメソッドの実装を変更して、self :: 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 2015

1
Zend_Mimeの元の実装はconst LINELENGTH = 72; (を参照lib/Zend/Mime.php)であるため、これを信頼しない理由はありませんでした。おそらく76との違いが行末に使用されます。適切な定数を使用する代わりに値をハードコーディングすることは、要点を示すことだけでした。実際の実装では、その値は定数に含まれている必要があります。/編集:の実装Zend_Mime::encodeBase64()用途chunk_splitその後、$ chunklenで文字列を分割$エンドが追加されます(参照php.net/manual/en/function.chunk-split.phpを
アディ

1

メールサーバー(SMTP)はどのように設定されていますか?SPFレコードは正しいですか?

メールがスパムとしてマークされる理由はさまざまですが、内容はその一部にすぎません。

詳細はこちら:https : //blog.amasty.com/5-steps-for-no-spam-e-mails-in-magento/


コンテンツにのみ関連するこの特定の理由を探しています。しかし、リンクされた記事には有用な情報が含まれています。「Magentoはデフォルトでquote-printable行の長さとして200を使用します。これはZend_Mimeクラスをオーバーライドすることで変更できます。」-ありがとう!
Fabian Schmengler、2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.