Nefunguje mi ověření přes DKIM
- akmt
- Člen | 20
Ahoj,
vyčerpal jsem již veškeré návody a dokumentaci k odeslání e-mailu
s DKIM podpisem přes Nette\Mail\SendmailMailer a Nette\Mail\DkimSigner.
Můj kód vypadá takto:
$constant = $batch->depositamountconstant;
$qrPlatba = new QRPlatba();
$qrPlatba->setIban($batch->depositaccountiban)
->setCurrency($batch->depositaccountcurrency)
->setVariableSymbol($contactAccountId)
->setRecipientName($batch->depositaccountrecipientname)
->setMessage($contactFullName);
if (intval((int)$batch->depositaddamounttoqrcode) === 1 && isset($contactA1, $contactA2)) {
$qrPlatba->setAmount(
abs( round(($contactA1)*($constant))+round(($contactA2)*($constant)) )
);
}
$qrFile = 'data:image/png;base64,' . base64_encode($qrPlatba->generateQr());
$params = [
'accountnumber' => $batch->depositaccountnumber,
];
$latte = new \Latte\Engine;
$latte->setLoader(new \Latte\Loaders\StringLoader());
$mail = new Message;
if (str_contains($batch->depositemailtemplate,'{$cidqr}')) {
$cidQr = $mail->addEmbeddedFile($qrFile)->getHeader('Content-ID');
$params['cidqr'] = substr($cidQr,1,-1);
} else {
$params['cidqr'] = null;
}
$mail->setFrom($batch->depositemailfrom);
$mail->addTo($contactEmail);
$mail->setSubject( $latte->renderToString($batch->depositemailsubject, $params) );
$mail->setHtmlBody( $latte->renderToString($batch->depositemailtemplate, $params) );
if ($id === null && $batch->depositemailfrom !== $contactEmail) {
$mail->addBcc($batch->depositemailfrom);
}
if ($id === null && (int)$batch->depositaddattachment === 1) {
$mail->addAttachment($attachment);
}
$mailer = new Nette\Mail\SendmailMailer();
$mailer->setSigner(new Nette\Mail\DkimSigner($this->dkimConf));
try {
$mailer->send($mail);
$this->depositManager->updateProcessedBatchRow($rowId, 'SENT_OK');
} catch (Nette\Mail\SendException $e) {
$this->depositManager->updateProcessedBatchRow($rowId, 'SENT_ERROR', $e->getMessage());
}
E-mail je odeslán, ale když si dám zobrazit zdroj doručeného e-mailu na Gmailu, tak vidím DKIM FAIL:
SPF: Výsledek pro IP adresu 178.251.187.18: PASS Další informace
DKIM: Výsledek pro doménu: 'FAIL' Další informace
DMARC: 'PASS' Další informace
Takto vypadá obsah zprávy:
Delivered-To: xxx@gmail.com
Received: by 2002:a05:6022:219e:b0:36:1e17:cf40 with SMTP id 30csp505441lab;
Thu, 12 Jan 2023 13:02:40 -0800 (PST)
X-Google-Smtp-Source: AMrXdXuqMGVMC3ii2FVvqTMIy5REkm2TuNDKqA8PuDuXbGMtVdA0hdzBYes4pe+sPmNoy0Y89Dun
X-Received: by 2002:a17:906:2859:b0:7c1:32:3574 with SMTP id s25-20020a170906285900b007c100323574mr55174391ejc.12.1673557359867;
Thu, 12 Jan 2023 13:02:39 -0800 (PST)
ARC-Seal: i=1; a=rsa-sha256; t=1673557359; cv=none;
d=google.com; s=arc-20160816;
b=wFSZlB8sYvpXMbrHzBchq+juOzPiUdU8DqMIdiK8wYrJt8Ri+lgMXfPNOgu5pEcx0g
1GHtoI2sxoUKN0GgNrNpFnz0n36gVNeCdDLwVRZ1MSqlLztpZbTeSY0yK6yuRgOuMnK/
bYlCnE6oia+VlTJ5LHM5vy1MjhFVblvLadmdFABuW38BNQGMmAtjWxX39GJ4cHpbXr2E
SuRx95zVV5RaLNDkhciVi1Zb+pe5rUMaCG9GszrXsZGYFj3oztWypVEKYrbqw5JLijIK
woip5I1VLJeAWKr28vpQuRGz5pfyABxL/aohicAb+8d4laaTe+NLbevtgYLTCuVfVXvW
YeGg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816;
h=dkim-signature:message-id:from:date:mime-version:subject:to;
bh=BEUvXykRYgY+CAn7+OsJwip/5FaW3Cea0LEBX1gazHE=;
b=xH6JfAgBNNBzkoXEVyKzP3chdrKh6AvxV0jTp5Pj2Qv8/NNWzWfWGQyHYDwCcfFfFa
TeAdqPWGYBGIcb5q5hxCih0NtO1fwYBXn5NrjX5vfXMO1dzKlX55UrYD8eT2xPjUTknj
h43Cuq72rWtgqXq63jga7t5s7NieGVefzIWjN2m4l4nj67RZoDceq0f1yCy4Huw/Yj4t
u5LA0XwzodX48U+zhDRUI4eKaWY1A0sxuSwAXqRWDmUNFkreCkztwF0KB90VDSBObc8O
gZ4OowdNKDdPkhVjvqsh/ZyIEZN5F6buK5JcsdjaNI+jMJX8DcTSsfWiFQin3Qd83SVS
ei6w==
ARC-Authentication-Results: i=1; mx.google.com;
dkim=neutral (body hash did not verify) header.i=@yyy.cz header.s=yyy header.b="J2/jER1P";
spf=pass (google.com: domain of postmaster@yyy.cz designates 178.251.187.18 as permitted sender) smtp.mailfrom=postmaster@yyy.cz;
dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=yyy.cz
Return-Path: <postmaster@yyy.cz>
Received: from bb.miniserver.cz (bb.miniserver.cz. [178.251.187.18])
by mx.google.com with ESMTPS id xa5-20020a170906fd8500b0084d3fbc7accsi11222217ejb.492.2023.01.12.13.02.39
for <xxx@gmail.com>
(version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
Thu, 12 Jan 2023 13:02:39 -0800 (PST)
Received-SPF: pass (google.com: domain of postmaster@yyy.cz designates 178.251.187.18 as permitted sender) client-ip=178.251.187.18;
Authentication-Results: mx.google.com;
dkim=neutral (body hash did not verify) header.i=@yyy.cz header.s=yyy header.b="J2/jER1P";
spf=pass (google.com: domain of postmaster@yyy.cz designates 178.251.187.18 as permitted sender) smtp.mailfrom=postmaster@yyy.cz;
dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=yyy.cz
Received: (qmail 83452 invoked by uid 89); 12 Jan 2023 21:02:39 -0000
Received: from hyperion.blueboard.cz (178.251.187.9)
by bb.miniserver.cz with SMTP; 12 Jan 2023 21:02:39 -0000
Received: (qmail 55683 invoked by uid 80); 12 Jan 2023 21:02:36 -0000
To: xxx@gmail.com
Subject: =?UTF-8?B?Wm3Em25hIMO6aHJhZHkgemEgcG9za3l0b3ZhbsOpIHNsdQ==?= =?UTF-8?B?xb5ieSBvZCAxLiDDum5vcmEgMjAyMyAoVGVzdENlbMOpSm3DqW5vKQ==?=
X-PHP-Originating-Script: 80:Callback.php
MIME-Version: 1.0
X-Mailer: Nette Framework
Date: Thu, 12 Jan 2023 22:02:36 +0100
From: aaa@yyy.cz
Message-ID: <3y8l454e0f@www.yyy.cz>
Content-Type: multipart/alternative;
boundary="--------8rawt8nxr9"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; l=7851; s=yyy; t=1673557356; c=relaxed/simple; h=From:Date:Message-ID:X-Mailer:Content-Type; d=yyy.cz; bh=uGChDXlptA+OfcDucFmN/kC2mDkN7+HI8pcC17lsRuE=; b=J2/jER1PMEis0WjHx2w+2guvfx56TMj1ezM2mkpGBpreQ/MC5ZP4v7pjLelBoUWJx2EY/I/3XV5eeYRwvXZO3uPwOvBLiWXIQh/kr+agBtMZZ4sDz/HSiyzwrpZCvJvbRFJx1HWzfejpyNM5lv5Kx1b2Et32b7/J6kj/vdvwy6M=
----------8rawt8nxr9
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Vážení klienti,
s ohledem na pokračující nárůst nákladů, především cen energie a potravin, a v souladu s novelou vyhlášky k zákonu o sociálních službách č. 505/2006 Sb., dochází od 1. února 2023 k úpravě výše úhrad za poskytované služby yyy Mělník.
Nová denní úhrada: 1 234,50 Kč (měsíčně 37 553,00 Kč)
Děkujeme za pochopení.
S pozdravem
Váš yyy
Jednoduchá platba pomocí QR kódu:
----------8rawt8nxr9
Content-Type: multipart/related;
boundary="--------ynr2uvuh9b"
----------ynr2uvuh9b
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 8bit
<p>Vážení klienti,</p>
<p>s ohledem na pokračující nárůst nákladů, především cen energie a potravin, a v souladu s novelou vyhlášky k zákonu o sociálních službách č. 505/2006 Sb., dochází <strong>od 1. února 2023</strong> k úpravě výše úhrad za poskytované služby yyy Mělník.</p>
<p>Nová denní úhrada: <strong>1 234,50 Kč</strong> (měsíčně 37 553,00 Kč)</p>
<p>Děkujeme za pochopení.</p>
<p>S pozdravem</p>
<p>Váš yyy</p>
<p style="text-align:center">Jednoduchá platba pomocí QR kódu:<br><img src="cid:wn8v8lymmb@www.yyy.cz" alt="QR kód pro platbu"></p>
----------ynr2uvuh9b
Content-Type: image/png
Content-Transfer-Encoding: base64
Content-Disposition: inline; filename=
"BZAYQaAP16nowAYCQFCCBBCAIQQIIQACCFQqv4DOi2jpkqRhQsAAAAASUVORK5CYII="
Content-ID: <wn8v8lymmb@www.yyy.cz>
iVBORw0KGgoAAAANSUhEUgAAAOEAAAD3CAYAAADrPDP8AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAL
pUlEQVR42u3dTWhUVx/H8d/VMZlIaxJRzKQSNTYYJeLGhd2E+kIVW8WFiy5LlNBWIShSXKgLEXER
dFWrIsVFlCjWhbgIEjBdCK7iCyIhhFJFQ0zRZFGMiHq68HFwnpmYa+7JOWcy3w+ESpmZe+fm/jzn
/j33fyNJRgC8SUmSMeQQ8CGKIs3gMAB+EUKAEAKEEAAhBAghAEIIEEIAhBAghAAIIUAIARBCgBAC
IIQAIQRACAFCCGCKpWx/YBRFwXy5JG07Cn2PQp+X5Pva3j9fxyrJ8Su184qREGA6CoAQAoQQwIdS
Ljbioq9p3At32wUDF8WGQtvw1Ss2yfFL8n1DP68YCQGmowAIIUAIAUxGyteGfa00sX3Rb3tljYuV
Ky7YXl0U+nnFSAgwHQVACAFCCGAyUqX2hV1cuNteVeKrSJTkmPL0Z0ZCgBACIIQAIQQwsZIrzMQt
VCRZWVPo8+Juw3YhJclKHdvvpVjDSAgQQgCEECCEAHJ5K8yE1CPF9ntt91xJckxDKjq5KNYUY/GH
kRAghAAhBEAIgdLlpDAT0hN14l7M274tyHbxIqTbkWx/D1+FLUZCgOkoAEIIEEIArlkvzIS+YsFF
cSUuX7f7FOOjp6fzbVCMhAAhBAghAEIIlC7rhRkXF/0uVpD4KuCE/khpX6t8XKzK8VUoYyQEmI4C
hBAAIQRKV/Tu2tP9agQXj5n2tY24Qu9FY/vzXDyZyvb55yIHjIQA01GAEAIghEDp8tZjxsWFdhIu
VqTYXh3jYhvF+JQn2w2fbZ+7jIQA01GAEAIghEDpclKYKcaLdF/Nel30rAnpUda+CnQubodjJASY
jgIghAAhBDCR4FfM2C42uChU+Oox42KfQ7ptKaTb3BgJAaajAAghQAgBTEbK14Zd3F7iYmVISH1n
QuqfE1KPGZr/AiCEACEEQAiBUAV/K5Ptz7NdbEjCxeqYJIUFX7eRhV5ko8cMwHQUACEECCEAW4ry
Vqa4F9VJ9sVFTxgXn+erKbKvfi22sWIGYDoKgBAChBDAVLJemLHdXDfJNkJ6ak/oBSHbv18X/VpC
f9oSIyHAdBQAIQQIIYCJpELaGV+rY3wVB+J+t0Lb8HUrmO3v5uL3FvrqHUZCgBAChBAAIQRKV1CF
GV+9Y5IUB3w98We6rC6yfR64KLzRYwZgOgqAEAKEEIAt1gszvnqu2F6NYbtpru33+npUtK/jEtI5
yUgIMB0FQAgBQgjAFm89ZmxfVPtajRF6jxkXPX9snwcutuvrdi5GQoDpKABCCBBCAB/yditT6AWX
uPtie6WJrx4zto+97eLKdC7WMBICTEcBQgiAEAKly0lhxlfxIslFv+0VLsX42GrbhQoXfXt8HStG
QoDpKABCCBBCAJNRlD1mXBRXXPRc8fXIZheNdIvxmLJiBmA6CoAQAoQQgGtOVswkuVj2dYFv+8I9
ycqQJPvnqxlz3N+l7aPK9vnHSAgwHQVACAFCCGAqBdX811fD2CT7kqQnjO1iTUiPxi7GHjPcygQw
HQVACAFCCMA1bz1mXBQMbG/X9jEI/XHUvhruhvT0K0ZCgOkoAEIIEEIAUykV0s4U4woNF01pQ19F
htAYY3744YfsPwXcuXPnoyE8e/as2bRpk0mn02bx4sXmzJkzH10x09HRYb788kuTTqfNhg0bTH9/
v5k3b56RZHp7e7NBWr16tUmn06axsdE8f/48J4SXL182a9asMWVlZaa+vj4n9HG3gdIU+Xw44cjI
iA4cOKAHDx6oq6tL5eXliT4vk8loaGhIXV1d2rhxI9MclHZ1NI7q6mr9+uuv/BZAYQaAP16nowAY
CQFCCBBCAIQQIIQACCFQqv4DOi2jpkqRhQsAAAAASUVORK5CYII=
----------ynr2uvuh9b--
----------8rawt8nxr9--
Uměl by mi někdo poradit jak zfunkčnit DKIM ověřování přes Nette Mail?
Díky!
- akmt
- Člen | 20
$this->dkimConf
obsahuje:
$this->dkimConf = [
'domain' => $this->domain,
'selector' => $this->additionalParameters['dkimselector'],
'privateKey' => file_get_contents($this->additionalParameters['dkimPrivateKey'],),
];
výpis hodnot:
Array
(
[domain] => senlife.cz
[selector] => senlife
[privateKey] => -----BEGIN RSA PRIVATE KEY-----
MIICWwIBA ... iRpEvl3K2tczSaBQ==
-----END RSA PRIVATE KEY-----
)
Obsah e-mailu doručeného na Gmail včetně hlaviček jsem uložil na https://senlife.cz/…kim-fail.eml
- akmt
- Člen | 20
Provedl jsem ještě jedno srovnání – e-mail zaslaný z localhostu a e-mail zaslaný z hostingu:
- E-mail z localhostu prošel s
dkim: pass
– odkaz na zdroj https://www.senlife.cz/…kim-pass.eml - E-mail z hostingu prošel s
dkim: neutral (body hash did not verify)
– odkaz na zdroj https://www.senlife.cz/…kim-fail.eml
Obsahově jsou oba e-maily skorot totožné, přes diffchecker jsem našel
hlavní rozdíl v tom, že e-mail z hostingu (který neprošel přes dkim)
obsahuje v hlavičce navíc
řádek X-PHP-Originating-Script: 80:Callback.php
Může být špatné vyhodnocování DKIMu způsobené tímto? Díky!
- Milo
- Nette Core | 1283
Nemůže. V DKIM-Signature hlavičce máš uvedeno, jaké hlavičky se
kontrolují. Konkrétně
From:Date:Message-ID:X-Mailer:Content-Type
, tedy
X-PHP-Originating-Script na to vliv nemá.
DNS selektor máš dobře, hlavičky jsou validní a padá to na ověření těla zprávy, něco se s ním po cestě přes hosting stane.
- akmt
- Člen | 20
Milo napsal(a):
Porovnávám ty dva eml a je to divný. Zkus si ten e-mail před odesláním uložit lokálně na hostingu do souboru třeba v tempu a pak to porovnat s tím, co ti přijde na GMail.
Já se snažil najít způsob, jak e-mail s vygenerovaným DKIM
uložit/zobrazit, ale žádnou odpovídající metodu jsem v
Nette\Mail\SendmailMailer()
nenašel… Existuje nějaký
jednoduchý způsob jak to udělat? Děkuji.
- Milo
- Nette Core | 1283
Dočasně si dej třeba file_put_contents()
do https://github.com/…ilMailer.php#L51
- akmt
- Člen | 20
Než vyzkouším ten výpis odeslaného e-mailu, tak zatím mi odepsali z Blueboard:
bude to asi souviset s chybou v PHP 8+
- Milo
- Nette Core | 1283
Neříkal bych tomu chyba v PHP, je to zkrátka korektní implementace protokolu se kterou Unixový sendmail nepočítá. Nemají v Bluebord SMTP server, přes který bys to posílal přímo SmtpMailerem?
Anebo ať pro PHP 8 upraví php.ini sendmail_path
. Měla by ho
využívat pouze funkce mail()
a ta teď už produkuje
konzistentní výstup s \r\n
.