DKIM подпись для Postfix на CentOS

Наверное никому из нас не нравится, когда наши письма попадают в СПАМ. Для того что бы минимизировать вероятность попадания в СПАМ нужно соблюдать ряд правил. Далее мы рассмотрим одно из этих правил.

Основные причины попадания корреспонденции в СПАМ:
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 и посмотреть заголовки письма
DKIM

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