1

PHPMailer を使用して、自分の Web サイトから SPF/DKIM メールを送信することに成功しています。成功したように、そのスパム評価は事実上ゼロになりました。

ただし、その値の信頼性を確保するために、署名にカスタム メール ヘッダーを追加したいと考えています。

  1. これはできますか?
  2. これは PHPMailer で実行できますか?
  3. はいの場合:どのように?

図:

カスタム フィールドがあるとしますX-app-originalSender

送信メール メッセージのソースを見ると、

Delivered-To: example@internet.com
Received: by 10.10.10.10 with SMTP id v7csp230623wjf;
        Tue, 6 May 2014 05:20:04 -0700 (PDT)
X-Received: by 10.10.10.10 with SMTP id v2mr38890846oer.37.1399378803091;
        Tue, 06 May 2014 05:20:03 -0700 (PDT)
Return-Path: <mister+caf_=example=internet.com@example.com>
Received: from mail-oa0-x22e.gogol.com (mail-oa0-x22e.gogol.com [2607:f8b0:4003:c02::22e])
        by mx.gogol.com with ESMTPS id vj5si8402166obb.10.10.10.10.05.20.02
        for <example@internet.com>
        (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
        Tue, 06 May 2014 05:20:03 -0700 (PDT)
Received-SPF: none (gogol.com: mister+caf_=example=internet.com@example.com does not designate permitted sender hosts) client-ip=2607:f8b0:4003:c02::22e;
Authentication-Results: mx.gogol.com;
       spf=neutral (gogol.com: mister+caf_=example=internet.com@example.com does not designate permitted sender hosts) smtp.mail=mister+caf_=example=internet.com@example.com;
       dkim=pass header.i=@website.com
Received: by mail-oa0-x22e.gogol.com with SMTP id i4so9294020oah.19
        for <example@internet.com>; Tue, 06 May 2014 05:20:02 -0700 (PDT)
X-gogol-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20130820;
        h=x-gm-message-state:delivered-to:to:subject:dkim-signature:date:from
         :reply-to:message-id:mime-version:content-type;
        bh=ObNkr4SNFALRke4Aa0VT3bZmEq19ZIWHnngz5uCPG3U=;
        b=hbiSE6cEr+FEAIGUCqsCfNOQq9SYsYZ9fa4lC333uWyUY9x6srMgwHeOa28IoKxD31
         76LnRKfqc3YZBqMFKJ37plvyVXdaRsPCwLdYrNNMxmvNVVb5siC8r6Frx6v2QCBPcPEQ
         U+c6Qn/Rl9dHYHD9GCoC346DWkC8CcAF/MG6oipVcf9kojwfuYR/UgzpjmVMKcueUpEy
         nHKKGmfVT9RcqHgPMsOj1/W8/k/drKRUk2QlzLH8anR6foeWqjNtyUmHYxo/Qc6eKoxh
         Zua23/rTAgb/1SF4yalyeaeTa9xWO07bHeDwgknvg7QuYBSjDt+7iIXngkZXVYaSNAEJ
         xZIw==
X-Gm-Message-State: ALoCoQmfamLXlJ4EXccj5awNP/G2qU/uIZcjuLJKrB+5YOVHQsc1ARYlMw6wxCDTCchbQnufkN4N
X-Received: by 10.10.10.10 with SMTP id my9mr1885484obb.61.1399378802595;
        Tue, 06 May 2014 05:20:02 -0700 (PDT)
X-Forwarded-To: example@internet.com
X-Forwarded-For: mister@example.com example@internet.com
Delivered-To: mister@example.com
Received: by 10.10.10.10 with SMTP id hd5csp216265obb;
        Tue, 6 May 2014 05:20:01 -0700 (PDT)
X-Received: by 10.10.10.10 with SMTP id a49mr10690110eei.46.1399378800211;
        Tue, 06 May 2014 05:20:00 -0700 (PDT)
Return-Path: <server@website.com>
Received: from rembrandt.net.de (rembrandt.net.de. [10.10.10.10])
        by mx.gogol.com with ESMTPS id n46si13234148eeo.10.10.10.10.05.19.59
        for <mister@example.com>
        (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
        Tue, 06 May 2014 05:20:00 -0700 (PDT)
Received-SPF: pass (gogol.com: domain of server@website.com designates 10.10.10.10 as permitted sender) client-ip=10.10.10.10;
Received: (qmail 29290 invoked by uid 10269); 6 May 2014 14:19:59 +0200
To: mister@example.com
Subject: Whatever
X-app-originalSender: Roger Rabbit
X-PHP-Originating-Script: 10269:class.phpmailer.php
DKIM-Signature: v=1; a=rsa-sha1; q=dns/txt; l=937; s=website;
  t=1399378799; c=relaxed/simple;
  h=From:To:Subject;
  d=website.com;
  z=From:=20"website.com=20Warning"=20<server@website.com>
  |To:=20mister@example.com
  |Subject:=20Whatever;
  bh=Yvxg9fVS37EmFVuVWzUji3Wry5Q=;
  b=JmNeGJsvhhC5s/rTLfXPSBte2NfYCPLNiNrNi4/bbjcdKvPNt/LvySGOpD+4hIAxsjwGtknsz7CMDOhcmJLPK/FHge18q+Dw1j0chtRehIZUdEHKcHDU5n2X2/x+ja+EohtfNFwCfjm3Zyfjf+cDyvsKUrf8l6mtWqK9oWpjyrg=
Date: Tue, 6 May 2014 14:19:59 +0200
From: "website.com Warning" <server@website.com>
Reply-To: "website.com Warnung" <server@website.com>
Message-ID: <59052014140619-L73ESg5cau@website.com>
X-Priority: 3
X-Mailer: website.com platform (https://website.com)
MIME-Version: 1.0
Content-Type: multipart/alternative;

私はこの行に最も興味をそそられh=From:To:Subject;、カスタム フィールドを追加する方法があるに違いないと考えています。

どのように?

DKIM 仕様

http://dkim.org/specs/draft-allman-dkim-base-01.html#rfc.section.3.5から

署名されたヘッダー フィールド (プレーン テキスト、ただし説明を参照してください。必須)。署名アルゴリズムに提示されるヘッダー フィールドを識別するヘッダー フィールド名のコロンで区切られたリスト >。フィールドには、署名アルゴリズムに提示された順序でヘッダー フィールドの完全なリストが含まれている必要があります。フィールドには、署名されたときに存在しないヘッダー フィールドの名前が含まれる場合があります。存在しないヘッダー フィールドは、署名の計算に寄与しません (つまり、ヘッダー フィールド名、区切りコロン、ヘッダー フィールド値、および CRLF ターミネータを含めて null 入力として扱われます)。フィールドは同じように扱わなければなりません。このフィールドには、作成または検証中の DKIM-Signature ヘッダー フィールドを含めてはなりません。フォールディング ホワイト スペース (FWS) は、コロン セパレータのいずれかの側に含めることができます。ヘッダー フィールド名は、大文字と小文字を区別しない方法で実際のヘッダー フィールド名と比較する必要があります。ABNF: sig-h-tag = "h="FWS hdr-name 0 ( *FWS ":" *FWS hdr-name ) hdr-name = フィールド名. ただし、送信者は将来どのヘッダー フィールドが作成される可能性があるかを知ることはできず、一部の MUA はメッセージ内に埋め込まれたヘッダー フィールドを (たとえば、メッセージ/rfc822 コンテンツ タイプとして) 提示する可能性があるため、このソリューションのセキュリティは次のとおりです。合計ではありません。有益な説明: ヘッダー フィールド名とコロン、および存在しないヘッダー フィールドのヘッダー フィールド値を除外することで、攻撃者が null 値を持つ実際のヘッダー フィールドを挿入することを防ぎます。

4

1 に答える 1

1

DKIM 署名に任意のヘッダーを含めることは可能ですが、PHPMailer はそれを行う手段を提供していません。メソッドは、興味深いビットが発生する場所であり、ハードコーディングされDKIM_Addていることがわかります。h=From:To:Subject;おそらくこれを回避する最も簡単な方法は、PHPMailer をサブクラス化し、この関数を書き直して追加のヘッダーを含めることです。

更新: PHPMailer は、プロパティを介して DKIM 署名にヘッダーを追加することをサポートするようになりDKIM_extraHeadersました。たとえば、次のようになります。

$mail->DKIM_extraHeaders = ['List-Unsubscribe', 'List-Help'];
于 2014-07-09T09:16:47.717 に答える