Наверное никому из нас не нравится, когда наши письма попадают в СПАМ. Для того что бы минимизировать вероятность попадания в СПАМ нужно соблюдать ряд правил. Далее мы рассмотрим одно из этих правил.
Основные причины попадания корреспонденции в СПАМ:
1) Почтовый сервер используется как open relay;
2) IP адрес отправителя или сервера находится в чёрном списке;
3) У сервера нету полного доменного имени (FQDN) или обратной PTR-записи;
4) На DNS сервере не используются или не настроены SPF/DKIM/DMARK записи
Это основные ошибки из-за которых увеличивается вероятность попадания писем в спам
Что такое DKIM
Технология DomainKeys Identified Mail (DKIM) объединяет несколько существующих методов антифишинга и антиспама с целью повышения качества классификации и идентификации легитимной электронной почты. Вместо традиционного IP-адреса, для определения отправителя сообщения DKIM добавляет в него цифровую подпись, связанную с именем домена организации. Подпись автоматически проверяется на стороне получателя, после чего, для определения репутации отправителя, применяются «белые списки» и «чёрные списки».
В технологии DomainKeys для аутентификации отправителей используются доменные имена. DomainKeys использует существующую систему доменных имен (DNS) для передачи открытых ключей шифрования.
(c) Wiki
Переходим к установке
# yum install opendkim
Создаём каталог для ключей, генерируем ключи и ограничиваем доступ к ним. Кроме того не забываем о селекторе: в нашем случае default
# /usr/sbin/opendkim-genkey -D /etc/opendkim/keys/domain.com/ -d domain.com -s default # chown -R root:opendkim /etc/opendkim/keys/domain.com/ # chmod 640 /etc/opendkim/keys/domain.com/default.private # chmod 644 /etc/opendkim/keys/domain.com/default.txt
Можно использовать больше опций, но этих будет достаточно. Тут
-D (Directory)
-d (domain)
-s (selector)
Правка конфигурационных файлов.
При установке пакета создаются все необходимые конфигурационны файлы. Мы будем использовать следующие:
— /etc/opendkim.conf – главный конфигурационный файл OpenDKIM
— /etc/opendkim/KeyTable – список ключей, доступных для подписи
— /etc/opendkim/SigningTable – список доменов и аккаунтов доступных для подписи
— /etc/opendkim/TrustedHosts – список доверенных серверов при подписывании или проверке
Основной конфиг
# cat /etc/opendkim.conf | grep -v "#" | egrep -v "^$" PidFile /var/run/opendkim/opendkim.pid Mode sv Syslog yes SyslogSuccess yes UserID opendkim:opendkim Socket inet:8891@localhost Umask 002 SendReports yes ReportAddress "Domain DKIM Admin" <dkim@domain.com> SoftwareHeader yes Canonicalization relaxed/simple Domain domain.com Selector default MinimumKeyBits 1024 KeyTable /etc/opendkim/KeyTable SigningTable refile:/etc/opendkim/SigningTable ExternalIgnoreList refile:/etc/opendkim/TrustedHosts InternalHosts refile:/etc/opendkim/TrustedHosts OversignHeaders From
Список ключей
# cat /etc/opendkim/KeyTable | grep -v "#" | egrep -v "^$" default._domainkey.domain.com domain.com:default:/etc/opendkim/keys/domain.com/default.private
Список доменов/аккаунтов
# cat /etc/opendkim/SigningTable | grep -v "#" | egrep -v "^$" sender@domain.com default._domainkey.domain.com
Список доверенных хостов
# cat /etc/opendkim/TrustedHosts | grep -v "#" | egrep -v "^$" 127.0.0.1 93.190.40.56 ::1 sender.domain.com
Добавляем в автозапуск, стартуем службу и проверяем её состояние
# chkconfig opendkim on # service opendkim start Starting OpenDKIM Milter: [ OK ] # service opendkim status opendkim (pid 2100) is running...
При генерации opendkim-genkey создал для нас файлик с «инструкцией» по добавлению записи в доменную зону. То есть нам нужно добавить TXT запись с субдоменом default._domainkey и данными из файла. Не забываем о селекторе, если вы его изменили. Данные нужно прописывать одной строкой
# cat /etc/opendkim/keys/domain.com/default.txt default._domainkey IN TXT ( "v=DKIM1; k=rsa; " "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCuU0FouUoMVyz3qNwmeF3uSXMbeRsNpuIOkm2raao4za8ApbHvVOtl7aNdbENLZqtaZfOFzyA5XZhkBseYl+QNjq0P7avqx+M282I2rRLwSjG42OAuTjessS10g1fftvtw8g62UlK/8g3R3M/RKvpYnnwB9iWxlDnj/KSpkG8LcQIDAQAB" ) ; ----- DKIM key default for domain.com
После добавления проверить можно командой
# host -t TXT mail._domainkey.domain.com
Если вы получаете ошибку
-bash: host: command not found
то необходимо установить следующий пакет:
# yum install bind-utils
На моём домене, к примеру, результат следующий
Селектор я выбрал mail, следовательно и поддомен отличается
# host -t TXT mail._domainkey.tradenark.com.ua mail._domainkey.tradenark.com.ua descriptive text "k=rsa\; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCl1B4S+bLsSjwmmyoCjvY9NSigksyOJY6E/BMXBzKClZInzN4PRkv03mDnDA4fKhWsiNLT2v7BPXUB/WW1aOo9LGCRSgVi7m0N6pAvUTUh4fvmEDAgc+ImQ6OHDWRUxI0ODMpEW8gjpHFpSUF72c7sqECmTU8t0iX1PLggUt9mkwIDAQAB"
Для проверки можно отправить письмо, к примеру, на GMail и посмотреть заголовки письма