Что делать?
1. Прописать обратную DNS зону - запись PTR. Обычно это делается в панели хостера, который предоставляет сервер или VPS.
2. Прописать в ДНС запись SPF, вида:
@ TXT v=spf1 ip4:95.167.111.222 ip6:fe00::0000:8a85:3a37:9d52 ~all
Здесь - 95.167.111.222 - это адрес с которого будут отправляться письма.
Если почта сервера обрабатывается с помощью сервиса mail.ru почта для домена, то строка будет такой:
@ TXT v=spf1 ip4:95.167.155.164 ip4:10.0.87.90 ip6:fe80::1a98:8a85:3a37:9d52 include:_spf.mail.ru ~all
Строчка include:_spf.mail.ru - добавит сервера mail.ru. Аналогично для других "почт на домене", это описано в инструкциях.
В чем смысл? Почтовый сервер получает письмо с полем from: info@domain.ru. Смотрит запись SFP из ДНС домена domain.ru и сравнивает ip адрес с которого реально пришло письмо, с тем, что указан в SPF. Если совпадает - то не спам.
3. Настроить DKIM на сервере. Идея DKIM следующая: в ДНС вы прописываете публичный ключ, а почтовая программа подписывает письмо закрытым ключем при отправке. При получении выполняется проверка подписи, и если она верна - письмо не считается спамом.
Сначала генерируем ключи (у меня CentOS + Exim):
openssl genrsa -out /etc/exim/dkim/domain.ru.key 1024
у нас он будет в каталоге /etc/exim/dkim/, который я сначала создал.
Теперь генерируем публичный ключ:
openssl rsa -in /etc/exim/dkim/domain.ru.key -pubout
получаем:
writing RSA key
-----BEGIN PUBLIC KEY-----
PTW/tOoMRpQpI1TPb83qI6b94h1r98X68Sw1iUNK81QG/VYWrjWo
JUtqCairOzOZSAJ8w55K1S5uY70bc8hPTW/tOoMRpQpI1TPb83qI
6b94h1r98X68Sw1iUNK81QG/VYWrjWoJUtqCairOzOZSAJ8w55K1
S5uY70bc8hPTW/tOoMRpQpI1Th
-----END PUBLIC KEY-----
Записываем ключик в файл /etc/exim/dkim/domain.ru.public для памяти.
Важно! Ключик будет читать программа exim при оправки сообщения. Так что надо сделать его доступным для пользователя, от которого запущен процесс exim. У меня это пользователь exim:
cd /etc/exim/dkin
chown exim *
Теперь прописываем публичный ключ в ДНС, в записи TXT для поддомена mail._domainkey домена нашего сайта:
mail._domainkey TXT v=DKIM1; g=*; k=rsa; p=PTW/tOoMRpQpI1T
Pb83qI6b94h1r98X68Sw1iUNK81QG/VYWrjWo
JUtqCairOzOZSAJ8w55K1S5uY70bc8hPTW/tOoMRpQpI1TPb83qI
6b94h1r98X68Sw1iUNK81QG/VYWrjWoJUtqCairOzOZSAJ8w55K1
S5uY70bc8hPTW/tOoMRpQpI1Th
Следующий шаг - сказать exim, чтоб подписывала письма при отправке. Для этого я задал в exim.conf такие строки:
DKIM_DOMAIN = domain.ru
DKIM_FILE = /etc/exim/dkim/domain.ru.key
DKIM_PRIVATE_KEY =/etc/exim/dkim/domain.ru.key
перезапускаем процесс exim с новой конфигурацией
service exim restart
Как все проверить? Первым делом смотрим лог /var/log/exim/panic.log. Если там все ок - смотрим на отправленное письмо глазами gmail. Для этого есть такой сервис: отправляем письмо на
check-auth-info=domain.ru@verifier.port25.com
здесь - info=domain.ru - это почта, на которую придет отчет с проверкой SPF, PTR, DKIM.
Вот и все. Теперь почта должна доходить. Хотя, это не исключает ее попадания в папку спам на основе анализа текста сообщения.