Настройка SPF + DKIM
Несколько раз ко мне ображались люди в т.ч. и ЛС-овцы (Nepofigist с которым был этот разговор еще на хабре) по поводу того, что письма в гуглопочте попадают в спам.
Такая же проблема появилась и вчера в goloskarpat.info.
Беглый анализ заголовков показал что на нашем сервере нет ни SPF ни DKIM. Поэтому пришлось в экстренном порядке прикручивать эти технологии к Debian-овскому exim-у.
Ниже предлагаю «спартанский» конспект из пунктов которые были проделаны.
Подробнее о формате и значениях каждой переменной можно почитать здесь: www.openspf.org/SPF_Record_Syntax. Но в 99% случаев Ваша строчка в DNS записях должна выглядеть так:
Эта запись говорит о том что: Все письма пришедшие из Вашего домена (v=spf1 a mx ip4:address ?all), письма присланные Вашим почтовиком (v=spf1 a mx ip4:address ?all), и письма присланные с Вашего IP (v=spf1 a mx ip4:address ?all)
считаются легитимными. Все другие письма не подпадающие под эти условия (v=spf1 a mx ip4:?all) мы не класифицируем.
После внесения этих строчек в DNS на протящении 10-ти минут гугол понят что от него требуется:
До:
После:
Но письма все еще попадали в спам. Так что настало время DKIM
Приватный:
Публичный:
Далее в настройках транспорта exim прописываем следующим образом:
, где
и сделать exim reload.
Тепер прописываем публичный DKIM ключ в DNS-ы:
здесь
dkim._domainkey — селектор который был записан нами в DKIM_SELECTOR конфига.
После таких манипуляция гугло начал нормально класть письма во «Входящие»
P.S. При наличии Linux-a проверку на правильность DNS записей можете проверить командами:
Такая же проблема появилась и вчера в goloskarpat.info.
Беглый анализ заголовков показал что на нашем сервере нет ни SPF ни DKIM. Поэтому пришлось в экстренном порядке прикручивать эти технологии к Debian-овскому exim-у.
Ниже предлагаю «спартанский» конспект из пунктов которые были проделаны.
SPF
SPF не требует модификаций конфигурации почтовика и затрагивает только ДНС сервер.Подробнее о формате и значениях каждой переменной можно почитать здесь: www.openspf.org/SPF_Record_Syntax. Но в 99% случаев Ваша строчка в DNS записях должна выглядеть так:
IN TXT "v=spf1 a mx ip4:< address > ?all" IN SFP "v=spf1 a mx ip4:< address > ?all"
Эта запись говорит о том что: Все письма пришедшие из Вашего домена (v=spf1 a mx ip4:address ?all), письма присланные Вашим почтовиком (v=spf1 a mx ip4:address ?all), и письма присланные с Вашего IP (v=spf1 a mx ip4:address ?all)
считаются легитимными. Все другие письма не подпадающие под эти условия (v=spf1 a mx ip4:?all) мы не класифицируем.
После внесения этих строчек в DNS на протящении 10-ти минут гугол понят что от него требуется:
До:
Received-SPF: neutral (google.com: 1.1.1.1 is neither permitted nor denied by best guess record for domain of www-data@goloskarpat.info) client-ip=1.1.1.1;
После:
Received-SPF: pass (google.com: domain of www-data@goloskarpat.info designates 1.1.1.1 as permitted sender) client-ip=1.1.1.1;
Но письма все еще попадали в спам. Так что настало время DKIM
DKIM
Для DKIM нам потребуются 2 ключа (публичный и приватный) Которые мы генерим следующим образом (http://mikepultz.com/2010/02/using-dkim-in-exim/):Приватный:
#openssl genrsa -out dkim.private.key 1024
Публичный:
#openssl rsa -in dkim.private.key -out dkim.public.key -pubout -outform PEM
Далее в настройках транспорта exim прописываем следующим образом:
begin transports remote_smtp: driver = smtp dkim_domain = DKIM_DOMAIN dkim_selector = dkim dkim_private_key = DKIM_PRIVATE_KEY dkim_canon = relaxed
, где
- DKIM_DOMAIN — имя домена (goloskarpat.info в моем случае);
- DKIM_PRIVATE_KEY — путь к приватному ключу (/etc/blablabla/ssl/keys/private/dkim.private.key)
- dkim_selector = dkim (название селектора по которому из DNS записи будет изъят публичный ключ для проверки)
- DKIM_CANON = relaxed — тип проверки (relaxed — разрешает небольшие изминения в заголовке\теле письма: лишние пробелы, изменение порядка заголовков и т.д.; simple — не разрешает эти изменения)
DKIM_DOMAIN = goloskarpat.info DKIM_SELECTOR = dkim DKIM_PRIVATE_KEY = /etc/blablabla/ssl/keys/private/dkim.private.key DKIM_CANON = relaxed
и сделать exim reload.
Тепер прописываем публичный DKIM ключ в DNS-ы:
dkim._domainkey IN TXT "v=DKIM1\; k=rsa\; p=<большоооооооой публииииичный ключ>\;"
здесь
dkim._domainkey — селектор который был записан нами в DKIM_SELECTOR конфига.
После таких манипуляция гугло начал нормально класть письма во «Входящие»
P.S. При наличии Linux-a проверку на правильность DNS записей можете проверить командами:
DKIM: dig @nsserver dkim._domainkey.< имя вашего домена > TXT SPF: dig @nsserver < имя вашего домена > TXT dig @nsserver < имя вашего домена > SPF
После напряженного трудового дня очень приятно расслабиться в тишине родного дома. Обшивка дверей из качественных материалов позволит вам превратить вашу квартиру в островок спокойствия.
4 комментария