Рубрики
vam shop

Не доходит почта?! Попадает в спам?! Настраиваем DKIM (и SPF)!

Вы столкнулись с проблемой отправки email в Вашем интернет-магазина на базе VamShop?!
Почта из магазина не доходит до email Ваших клиентов, либо попадает в спам?!

Тогда эта статья как раз для Вас.

В данной статье разберёмся, как настроить Ваш интернет-магазин на базе VamShop таким образом, что б почта всегда доходила до получателя и не попадала в папку Спам.

Будем настраивать DKIM и SPF в Вашем магазине.

Немного справочной информации:

Что такое DKIM:

Технология DomainKeys Identified Mail (DKIM) позволяет организации поручиться за сообщение, которое пересылается по электронной почте. С технической точки зрения – это метод подтверждения домена отправителя через криптографическую подпись.

Что такое SPF:

SPF-запись позволяет указать в TXT-записи домена список серверов, которые имеют право отправлять сообщения от имени e-mail адресов этого домена. Проще говоря, SPF-запись помогает защититься от злоумышленников, рассылающих СПАМ от имени вашего домена.

Думаю, многие пользователи VamShop сталкивались с ситуацией когда покупатели делающие заказы, отправляющие письма со страницы обратной связи, задающие вопросы о товарах, просто не получали на указанный email ящик никаких писем: писем с подтверждением заказа, писем об изменении статуса заказа, писем о доставка заказа, ответы на свои вопросы и т.д. и т.п.

Причём письма не доходят не всегда, к примеру, на сервис google mail, яндекс почта доходят без проблем, а вот на mail.ru — не доходит никакая почта из магазина.

Просто не приходит и всё, хотя технически в магазине всё настроено и работает правильно.

Вот как раз для решения таких проблем с доставкой email для абсолютно всех покупателей вне зависимости от сервиса, на котором расположен email, мы и будем настраивать DKIM и SPF.

Делается всё в 3 этапа:

1. Генерация ключей.
2. Настройка DNS записей домена магазина.
3. Настройка на стороне VamShop.

1. Генерация ключей.

Первое, что нам нужно сделать — создать приватный и публичный ключ для нашего домена. Вариантов есть несколько, вручную сгенерировать через консоль ключ, либо использовать онлайн-сервис, будем использовать онлайн-сервис — https://dkimcore.org/tools/keys.html

Заходим на сайт: https://dkimcore.org/tools/keys.html

На первом шаге нам нужно указать названия для файлов приватного и публичного ключа.

рис.1

Можно указать любые название, либо просто оставить значения по умолчанию и нажать Submit.

Переходим на следующую страницу:

рис. 2

Здесь нам необходимо заполнить поля:

Domain — Название Вашего домена, где установлен интернет-магазин. Указывайте название Вашего домена, magazin.ru
Identity — Укажите Ваш email адрес, который у Вас установлен в качестве отправителя в настройках интернет-магазаина.
Selector — Укажите идентификатор, который Вы затем будете добавлять в настройки DNS Вашего домена. К примеру, пишите phpmailer
Passphrase — Пароль. Любой набор цифр, символов. Только не забудьте его. Он Вам пригодится на этапе настроек DNS записей.

Заполнили форму и нажимаем Submit.

Всё, набор необходимых ключей и инструкций сгенерирован.

рис. 3

Скачиваем полученный архив, нажав Download ZIP file

И сохраняем его к себе на комп.

рис. 4.

Распаковываем архив. В архиве, собственно, всё тоже самое, что описано в этой статье + два ключа: приватный и публичный.

Переходим ко второму шагу.

2. Настройка DNS записей домена магазина.

Обычно редактирование DNS записей Вашего домена доступно либо через панель управлени доменом, доступ к которой Вам предоставляет Ваш регистратор домена.

Либо через панель управления хостингом.

В нашем примере будем настраивать через панель управления ISPManager, но это не принципиально, главное, что б был доступк редактированию DNS записей Вашего домена.

Заходим в раздел Доменные имена — Записи и создаём новую запись кнопкой Создать.

Добавим сначала SPF запись.

Заполняем форму:

рис. 5.

Имя: название-домена.ру.
Тип: TXT
Адрес: v=spf1 ip4:ip-адрес-вашего-сервера a mx ~all

Нажимаем Ok, в списке записей должна появиться наша TXT запись.

Добавляем ещё одну запись для DKIM подписи всех отправляемых из магазина писем.

Снова нажимать Создать и заполняем форму:

Имя: phpmailer._domainkey

phpmailer — это значение поля Identity из первого раздела нашей статьи. По умолчанию писали phpmailer, если Вы указали своё значение, указывайте вместо phpmailer своё значение.

Тип: TXT

Адрес: v=DKIM1; k=rsa; g=*; s=email; h=sha1; t=s; p=<ваш-публичный-ключ>;

Вместо <ваш-публичный-ключ> указываете Ваш публичный ключ.

Публичный ключ — это содержимое файла .htkeypublic из первого раздела статьи.

Из архива, который был сгенерирован.

Открываете полученный файл .htkeypublic и просто копируете содержимое между:

——BEGIN PUBLIC KEY——
вот это содержимое копируете
——END PUBLIC KEY——

и вставляете в строке без кавычек, пробелов, перевода каретки, просто что б одна большая строка получилась.

Всё, сохраняете, нажав Ok.

В списке DNS записей домена должна появиться новая запись phpmailer._domainkey

Всё, домен настроили.

Проверить настройки DNS записей Вашего домена можно например здесь — https://mxtoolbox.com/dkim.aspx

рис. 6

Указываете Ваш идентификатор (по умолчанию phpmailer) и название Вашего домена.

и получаете результат:

Если всё правильно, то отобразится Ваша строка phpmailer, которую Вы добавляли в DNS записи.

рис. 7

Если Вы что-то сделали неправильно, либо, возможно ещё DNS записи не обновились, то будет написано:

No DKIM Records exist

рис. 8

Ваша задача добиться результата как на рис. 7.

Всё, DNS записи настроили, осталось самое лёгкое — настроить PHPMailer на стороне VamShop, что б все отправляемые из магазина письма были заверены DKIM подписью.

3. Настройка на стороне VamShop.

Чтобы добавить DKIM подпись во все отправляемые из магазина письма, открываем файл /app/Controller/Component/EmailComponent.php и ищем следующий код:

 // Set default PHPMailer variables (see PHPMailer API for more info)
 
 $this->IsMail();
 
 $this->CharSet = 'utf-8';
 $this->IsHTML(false);

Добавляем после данного кода:

 //DKIM Settings
 
 $this->DKIM_domain = 'your-store.com';
 $this->DKIM_private = '/path/to/private/key';
 $this->DKIM_selector = 'phpmailer';
 $this->DKIM_passphrase = '';
 $this->DKIM_identity = 'your@email.com';

В переменной $this->DKIM_domain указываем название домена Вашего интернет-магазина.
В переменной $this->DKIM_private указываем полный путь до файла с приватным ключом (файл можно положить в любую папку у Вас на сервере, главное потом правильно указать полный путь до этого файла). Файл с приватным ключом (по умолчанию называется .htkeyprivate) был сгенерирован в архиве в первой части статьи.
В переменной $this->DKIM_selector указываем единтификатор, так же из первой части статьи (Selector). По умолчанию phpmailer
В переменной $this->DKIM_passphrase указываем пароль, так же из первой части статьи (Passphrase).
В переменной $this->DKIM_identity указываем email, так же из первой части статьи (Identity).

Всё, указываем свои данные.

На этом настройка завершена.

Если всё сделано правильно, то теперь вся отправляемая из Вашего интернет-магазина на базе VamShop почта будет заверена DKIM подписью.

Теперь почта будет доходить до всех покупателей, в том числе и на ящики mail.ru сервиса.

Как проверить, что уходящая из магазина почта заверена DKIM подписью?!

Оформите для пробы заказ в магазине, и откройте полученное письмо в gmail, mail.ru, яндекс почте.

Посмотрите заголовки письма (исходный текст письма), в коде должны быть следующие опции:

dkim=pass
spf=pass

рис. 9

В Gmail при просмотре письма видно, что письмо заверено dkim подписью:

signed-by: название-вашего-домена.

рис. 10

А так же в детальной информации о письме видно, что DKIM и SPF включены:

DKIM: PASS

SPF: PASS

рис. 11

Что как раз значит, что письмо было заверено Вашей DKIM подписью.

На этом всё.

Если у Вас не получается настроить DKIM подпись самостоятельно, можете заказать данную услугу у нас в магазине: Настройка DKIM.

phpmailer-dkim-sha1

P.S. Кроме того, в DNS записи домена можно DMARC параметры добавить:

Имя: _dmarc.название-домена.ру
Тип: TXT
Адрес: v=DMARC1; p=none

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *