Перейти к содержимому


Фотография
- - - - -

DKIM + EXIM4 (Debian 7)

dkim exim4 dkim-exim4 dkim-exm dkim exim dkim exim4 настройка dkim exim

  • Авторизуйтесь для ответа в теме
В этой теме нет ответов

#1 Demonik

Demonik

    Учусь Linux

  • Администраторы
  • 41 сообщений

Отправлено 07 Декабрь 2015 - 06:07

Начиная с версии Exim 4.7+ DKIM  встроен в него. Достаточно просто создать подпись:

 

1.Создаем папочку /etc/exim4/dkim и генерим секретный ключ через openssl

root@server# openssl genrsa -out /usr/local/etc/exim/example.com.key 2048

где example.com - доменное имя нашего почтовика

 

На выходе получаем ключ вида:

-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDT1tSzyG2Zch4LTgGPbn/8H535Vd+friNn/gBsV7rFNVZdxapD
dOUzeATUTbAG/3Ux7vJxYd6i982IajVz0b2dsmkdDzctC4EdJsLcpCpyf3x21nYZ
oJO2GjaFW65MNj7dU7BXDerLTE+zTu/Q4vs4ZqCA39CtbmetjBS9l/NsMQIDAQAB
AoGBAM2ZyVFAatkQSBaivСLwlWknapSPgv4g7h5FSTXeI9i5frx+V1UnRDki+FTx
nbH9CErRZh8jZQj4x1Pp+T0SyRtb62ydJooPYIpNlTt71cgZNwH174uFt4HevKmC
MJIhzaufEZYhamS4NQOR+4FakdZX2T8yzuvwDwkplJP2tO/tAkEA7RDltCTOShdd
sJYs0wjs1mDXUiSz0giFAYvMBvOelpyjJl9Pi1A0CNcD4WdvAl0Xo5aRMVrTXRzf
....
-----END RSA PRIVATE KEY-----

2. Генерим публичный ключ на основе секретного

root@server# openssl rsa -in /usr/local/etc/exim/example.com.key -pubout -out publick.key

На выходе получаем в файле publick.key:

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA3GNADCBiQKBgQDT1tSzyG1Zch4LTgGPbn/8H535
Vd+friNn/gBsV7rFNVZdxapDd0UzeATUTbAG/3Ux7vJxYd6i982IajVz0b2dsmkd
DzctC4EdJsLcpCpyf3x21nYZoJO2GjaFW65MNj7dU7BXDerLTE+zTu/Q4vs4ZqCA
...
-----END PUBLIC KEY-----

3. Правим конфиг Exim4 "/etc/exim4/exim4.conf"

Пишем в в начало файла exim4.conf

 

DKIM_ENABLE = yes

 

Далее задаем переменные и пишем их до строчки remote_smtp:

## DKIM:

DKIM_DOMAIN = ${lc:${domain:$h_from:}}
DKIM_FILE = /etc/exim4/dkim/${lc:${domain:$h_from:}}.key
DKIM_PRIVATE_KEY = ${if exists{DKIM_FILE}{DKIM_FILE}{0}}

DKIM_DOMAIN = example.mydomain.ru (только так у меня заработало dkim=pass(в отличии от верхней строки), возможно потому что у меня на данный момент серверс рассылками и там отправляется почта от другого домена)

 
--- Описываем в транспортах ---
remote_smtp:
             driver = smtp
             dkim_domain = DKIM_DOMAIN
             dkim_selector = dkim
             dkim_private_key = DKIM_PRIVATE_KEY

(где dkim_selector это любое слово dkim, dkimcompany, другой селектор)

Эта конструкция позволит использовать разные Private key для разных доменов.

 
Перезапускаем Exim4
/etc/init.d/exim4 restart
 
4. Создаем DNS зоны DKIM в TXT записе вида (инфу берем из сгенерированного выше открытого ключа): ВАЖНО!!! Чтоб длинная строка с ключом была в одну строку без пробелов и переносов
 
ИМЯ                          dkim._domainkey.mydomain.ru.
ТИП                           ТХТ
Значение                   v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDJFd/iMAiI5eysAZrDL7gtaiRTOh7eCXheTCWNFMTEiZrg/z7dB/5UF+plvuKxxkD9dkBGDBrlNMSMw42zjKOCFJiNSiDfuGv70PCBOl2jYywNCgG5jcuQkIfmkZd1CgmZAbggMsboeooP39OgW+Y3Jk4zylX2CLMYd17jigFosQIDAQAB
 
ИМЯ                          _domainkey.mydomain.ru.
ТИП                           ТХТ
Значение                   t=y;o=~;
 
Параметры политики для t и o в DNS записи "policy"
 
o: исходящие политики:
  • ~ (некоторые электронные письма, подписанные)
  • - (все письма подписаны)
  • ! (Все подписано, нет подписи 3ей стороны)
  • . (Не отправляются письма)
 
t флаги: n (не тестирование), s (без поддоменов), y (тестовый режим)
n заметки (human readable)
r: отчетность адрес электронной почты (куда сообщать неправильные результаты)
 
Так же можно у домена прописать ADSP запись (RFC5617) — это позволит принимающему серверу понять, должно ли ваше письмо быть подписано или нет. Запись выгладит таким образом:
 
_adsp._domainkey.volmed.org.ru. TXT "dkim=all"

Значений dkim= может быть три:

  • all — Все письма должны быть подписаны
  • discardable — Не подписанные письма не должны приниматься
  • unknown — Аналогично отсутствию записи
 
Проверка DKIM записи в DNS: http://dkimcore.org/c/keycheck (через пару часов, пока все ДНС обновятся)
 
5. Пробуем отправить письмо и проверить нашли заголовки с ДКИМ-ом.
echo "test test" | sendmail -v mail@gmail.com
в логе отправки должно быть что-то типа
 
 echo "test test" | sendmail -v mail@gmail.com
LOG: MAIN
  <= root@lists.tentorium.ru U=root P=local S=329
root@lists:/etc/exim4# delivering 1a5oP5-0007lD-2J
Connecting to gmail-smtp-in.l.google.com [173.194.71.26]:25 ... connected
  SMTP<< 220 mx.google.com ESMTP n124si15301110lfd.85 - gsmtp
  SMTP>> EHLO lists.tentorium.ru
  SMTP<< 250-mx.google.com at your service, [93.170.7.11]
         250-SIZE 35882577
         250-8BITMIME
         250-STARTTLS
         250-ENHANCEDSTATUSCODES
         250-PIPELINING
         250-CHUNKING
         250 SMTPUTF8
  SMTP>> STARTTLS
  SMTP<< 220 2.0.0 Ready to start TLS
  SMTP>> EHLO lists.tentorium.ru
  SMTP<< 250-mx.google.com at your service, [93.170.7.11]
         250-SIZE 35882577
         250-8BITMIME
         250-ENHANCEDSTATUSCODES
         250-PIPELINING
         250-CHUNKING
         250 SMTPUTF8
  SMTP>> MAIL FROM:<root@lists.tentorium.ru> SIZE=1361
  SMTP>> RCPT TO:<demonik.0789@gmail.com>
  SMTP>> DATA
  SMTP<< 250 2.1.0 OK n124si15301110lfd.85 - gsmtp
  SMTP<< 250 2.1.5 OK n124si15301110lfd.85 - gsmtp
  SMTP<< 354  Go ahead n124si15301110lfd.85 - gsmtp
  SMTP>> writing message and terminating "."
PDKIM >> Hashed body data, canonicalized >>>>>>>>>>>>>>>>>>>>>>>>>>>>>
test4{SP}test4{CR}{LF}PDKIM <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
PDKIM [lists.tentorium.ru] Body bytes hashed: 13
PDKIM [lists.tentorium.ru] bh  computed: 9698856fd5553ad687d6c3768b4e0a15bff7f7dd41a92ad0bb7f8699a461f543
PDKIM >> Hashed header data, canonicalized, in sequence >>>>>>>>>>>>>>
date:Mon,{SP}07{SP}Dec{SP}2015{SP}10:32:03{SP}+0500{CR}{LF}
from:root{SP}<root@lists.tentorium.ru>{CR}{LF}
message-id:<E1a5oP5-0007lD-2J@lists.tentorium.ru>{CR}{LF}
PDKIM <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
PDKIM >> Signed DKIM-Signature header, canonicalized >>>>>>>>>>>>>>>>>
dkim-signature:v=1;{SP}a=rsa-sha256;{SP}q=dns/txt;{SP}c=relaxed/relaxed;{SP}d=lists.tentorium.ru;{SP}s=lists.tentorium.ru;{SP}h=Date:From:Message-Id;{SP}bh=lpiFb9VVOtaH1sN2i04KFb/3991BqSrQu3+GmaRh9UM=;{SP}b=;
PDKIM <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
PDKIM [lists.tentorium.ru] hh computed: 29e4e135a61eca6b41b34601ef40aaf2ff9093bb0d9cf415124e886c0d938e90
PDKIM [lists.tentorium.ru] b computed: 2157ab87a03d1bf722eceab0af9e73447fe4c93195d17bebd53427c6ccee76e7a1c0390833f7dd4d5787d4f6cb2ce6a410bcfe9ef53f91311cb7129dc08c1f1fdb0b750555fd5492bfb5ffb7a5b6c8faaeba6dd632ce5d063d5a666a4f17ace60d0ec6e391bef663d19520ef315ec7ad575a7806f0711bd7c37f1f042d2439df
  SMTP<< 250 2.0.0 OK 1449466339 n124si15301110lfd.85 - gsmtp
  SMTP>> QUIT
LOG: MAIN
  => mail@gmail.com R=dnslookup T=remote_smtp H=gmail-smtp-in.l.google.com [173.194.71.26] X=TLS1.2:RSA_AES_128_CBC_SHA1:128
LOG: MAIN
Далее заходим на gmail и смотрим письмо в "оригинале",
должно быть что-то типа
Обращаем внимание на dkim=pass header.i...
Delivered-To: demonik.0789@gmail.com
Received: by 10.28.181.18 with SMTP id e18csp2336470wmf;
Mon, 7 Dec 2015 08:02:26 -0800 (PST)
X-Received: by 10.25.138.68 with SMTP id m65mr14218713lfd.69.1449504146905;
Mon, 07 Dec 2015 08:02:26 -0800 (PST)
Return-Path: <test-bounces@lists.tentorium.ru>
Received: from lists.tentorium.ru (lists.tentorium.ru. [93.170.7.11])
by mx.google.com with ESMTPS id h200si16512995lfb.126.2015.12.07.08.02.23
for <demonik.0789@gmail.com>
(version=TLS1_2 cipher=AES128-SHA bits=128/128);
Mon, 07 Dec 2015 08:02:23 -0800 (PST)
Received-SPF: pass (google.com: domain of test-bounces@lists.tentorium.ru designates 93.170.7.11 as permitted sender) client-ip=93.170.7.11;
Authentication-Results: mx.google.com;
spf=pass (google.com: domain of test-bounces@lists.tentorium.ru designates 93.170.7.11 as permitted sender) smtp.mailfrom=test-bounces@lists.tentorium.ru;
dkim=pass header.i=@lists.tentorium.ru
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.tentorium.ru; s=dkim;
    h=Sender:Content-Type:List-Subscribe:List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Subject:MIME-Version:Message-ID:Date:To:From; bh=ISfO2WARdJhYlnZc35TSdSuVKk5xGowSBvAa9E2EAmE=;
    b=j+iI+2KG9asENZhu03JdeFnUSR91Ru73OIZ16nhDVA7uitNHEoqxHdeLWlBxTtc7/5MiFVFrQGPbboKnK2eSi/+jPRrxFgmbEhPzNyucZ3XosTcGI2Rky23u2GbLDiGCTDWFwHIxTU1TVNqmIDMj8aZDzGkOu3y2FtmUs+RRWkI=;
Received: from localhost ([::1] helo=lists.tentorium.ru)
    by lists.tentorium.ru with esmtp (Exim 4.80)
    (envelope-from <test-bounces@lists.tentorium.ru>)
    id 1a5yEo-0000nD-WE
    for demonik.0789@gmail.com; Mon, 07 Dec 2015 21:02:06 +0500
Received: from mail.tentorium.ru ([195.128.133.243])
by lists.tentorium.ru with esmtp (Exim 4.80)
(envelope-from <duev.d@tentorium.ru>) id 1a5yEj-0000mr-IH
for test@lists.tentorium.ru; Mon, 07 Dec 2015 21:02:01 +0500
Received: from ex1.tentorium.ru ([195.128.133.109])
by mail.tentorium.ru with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:256)
(Exim 4.80) (envelope-from <duev.d@tentorium.ru>) id 1a5yE7-0008RO-5G
for test@lists.tentorium.ru; Mon, 07 Dec 2015 21:01:23 +0500
Received: from EX1.TENTORIUM.LAN (10.0.14.6) by EX1.TENTORIUM.LAN (10.0.14.6)
with Microsoft SMTP Server (TLS) id 15.0.1044.25;
Mon, 7 Dec 2015 21:03:32 +0500
Received: from EX1.TENTORIUM.LAN ([10.0.14.6]) by EX1.TENTORIUM.LAN
([195.128.133.109]) with mapi id 15.00.1044.021; Mon, 7 Dec 2015 21:03:32
+0500
From: =?koi8-r?B?5NXF1yDkzcnU0snKIPPF0sfFxdfJ3g==?= <duev.d@tentorium.ru>
To: "test@lists.tentorium.ru" <test@lists.tentorium.ru>
Thread-Topic: TESTDIMA
Thread-Index: AdExCJ19XUIIIWdtQX602aywPKCiWw==
Date: Mon, 7 Dec 2015 16:03:32 +0000
Message-ID: <c719523fba984b1fa16b579653fdb1e6@EX1.TENTORIUM.LAN>
Accept-Language: ru-RU, en-US
Content-Language: ru-RU
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-transport-fromentityheader: Hosted
x-originating-ip: [10.0.14.118]
MIME-Version: 1.0
X-SA-Exim-Connect-IP: 195.128.133.109
X-SA-Exim-Mail-From: duev.d@tentorium.ru
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on mail.tentorium.ru
X-Spam-Level:
X-Spam-Status: No, score=-102.5 required=5.0 tests=ALL_TRUSTED,BAYES_00,
HTML_MESSAGE, MIME_HTML_MOSTLY, TVD_SPACE_RATIO,
USER_IN_WHITELIST autolearn=ham version=3.3.2
X-SA-Exim-Version: 4.2.1 (built Mon, 26 Dec 2011 16:24:06 +0000)
X-SA-Exim-Scanned: Yes (on mail.tentorium.ru)
X-Mailman-Approved-At: Mon, 07 Dec 2015 21:02:06 +0500
Subject: [Test] TESTDIMA
X-BeenThere: test@lists.tentorium.ru
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: <test.lists.tentorium.ru>
List-Unsubscribe: <http://lists.tentorium.ru/cgi-bin/mailman/options/test>,
<mailto:test-request@lists.tentorium.ru?subject=unsubscribe>
List-Archive: <http://lists.tentorium.ru/pipermail/test/>
List-Post: <mailto:test@lists.tentorium.ru>
List-Help: <mailto:test-request@lists.tentorium.ru?subject=help>
List-Subscribe: <http://lists.tentorium.ru/cgi-bin/mailman/listinfo/test>,
<mailto:test-request@lists.tentorium.ru?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============8974710644276600406=="
Errors-To: test-bounces@lists.tentorium.ru
Sender: "Test" <test-bounces@lists.tentorium.ru>

--===============8974710644276600406==
Content-Language: ru-RU
Content-Type: multipart/alternative;
    boundary="_000_c719523fba984b1fa16b579653fdb1e6EX1TENTORIUMLAN_"

--_000_c719523fba984b1fa16b579653fdb1e6EX1TENTORIUMLAN_
Content-Type: text/plain; charset="koi8-r"
Content-Transfer-Encoding: quoted-printable

TESTDIMA

--_000_c719523fba984b1fa16b579653fdb1e6EX1TENTORIUMLAN_
Content-Type: text/html; charset="koi8-r"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dkoi8-r">
<meta name=3D"Generator" content=3D"Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
    {font-family:"Cambria Math";
    panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
    {font-family:Calibri;
    panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
    {margin:0cm;
    margin-bottom:.0001pt;
    font-size:11.0pt;
    font-family:"Calibri",sans-serif;
    mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
    {mso-style-priority:99;
    color:#0563C1;
    text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
    {mso-style-priority:99;
    color:#954F72;
    text-decoration:underline;}
span.EmailStyle17
    {mso-style-type:personal-compose;
    font-family:"Calibri",sans-serif;
    color:windowtext;}
.MsoChpDefault
    {mso-style-type:export-only;
    font-family:"Calibri",sans-serif;
    mso-fareast-language:EN-US;}
@page WordSection1
    {size:612.0pt 792.0pt;
    margin:2.0cm 42.5pt 2.0cm 3.0cm;}
div.WordSection1
    {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=3D"RU" link=3D"#0563C1" vlink=3D"#954F72">
<div class=3D"WordSection1">
<p class=3D"MsoNormal">TESTDIMA<o:p></o:p></p>
</div>
</body>
</html>

--_000_c719523fba984b1fa16b579653fdb1e6EX1TENTORIUMLAN_--


--===============8974710644276600406==
Content-Type: text/plain; charset="koi8-r"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KVGVzdCBtYWls
aW5nIGxpc3QKVGVzdEBsaXN0cy50ZW50b3JpdW0ucnUKaHR0cDovL2xpc3RzLnRlbnRvcml1bS5y
dS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vdGVzdAo=

--===============8974710644276600406==--
 
Все =)

Есть вопросы или пожелания? demonik.0789@gmail.com

Сайт: https://asteriskperm.ru/

Группа ВК: ССЫЛКА (Заходим и вступаем! ;D)






Темы с аналогичным тегами dkim, exim4, dkim-exim4, dkim-exm, dkim exim, dkim exim4, настройка dkim exim