Главная страница | Добавить в избранное    
   

 

» Статьи » postfix dkim

   
main1
pix
 

postfix dkim

Статьи  
pix pix pix

Установка модулей PERL

DKIMproxy имеет ряд Perl зависимостей.
Запуск через CPAN:
Усли он не установлен, то устанавливаем

urpmi Perl-CPAN

Запускаем CPAN

perl -MCPAN -e shell
install Mail::DKIM

(Зависимости включают: Crypt::OpenSSL::RSA, Digest::SHA, Mail::Address, MIME::Base64, Net::DNS)

install Net::Server
install Error (может не потребоваться)

Установка

После установки зависимостей, загружаем DKIMproxy (текущая версия, на момент написания это 1.4.1).

# cd /usr/local/src
# wget http://downloads.sourceforge.net/dkimproxy/dkimproxy-1.4.1.tar.gz
# tar -xzvf dkimproxy-1.4.1.tar.gz
# cd dkim*
# ./configure --prefix=/usr/local/dkimproxy
# make install

С помощью этих команд мы загрузили программное обеспечение, и установили его в в папку, указанную в параметре prefix.

Теперь создадим пользователя (dkim) для работы DKIMproxy. Нам не нужен каталог пользователя, а для дополнительной безопасности мы также заблокируем пароль (в идеале, мы запрещаем вход с паролем).

# useradd -M -s /bin/false dkim
# passwd -l dkim

Для удаления пароля вообще (если он был установлен), выполните:

# passwd -d dkim

Вы также можете изменить shell после создания учетной записи пользователя, запустив:

# usermod -s /sbin/nologin dkim

Вы можете проверить пользователя и группы, запустив:

# id dkim

Установка Init-Script запуска

Затем мы устанавливаем скрипт инициализации. DKIMproxy поставляется с образцом сценария, но Вам, возможно, потребуется изменить некоторые пути. Следующие команды скопирует сценарий инициализации, сделают его исполняемым и добавляет его в автозапуск.

# cp /usr/loca/src/ dkimproxy-1.4.1/sample-dkim-init-script.sh /etc/init.d/dkimproxy
# cd /etc/init.d
# chmod +x dkimproxy
# chkconfig --add dkimproxy

Некоторые переменные в сценарии инициализации, необходимо поправить:

  • DKIMPROXYUSER (установлено на пользователя, созданного выше)
  • DKIMPROXYGROUP (набор в группу пользователя, созданного выше)
  • PIDDIR (Я установил /var/run/)
  • DKIMPROXY_IN_CFG (путь к dkimproxy_in.conf, может не существовать, если не используется в / корректор скрипта)
  • DKIMPROXY_OUT_CFG (путь к dkimproxy_out.conf, может не существовать, если не используется OUT / подписавшего скрипта)

В сценарий инициализации нет никаких опций, указывающих, используете ли вы IN, OUT, или оба сценария. Это определяется автоматически, на основе того, какие конфигурационные файлы существуют. Сценарий только включает фильтр(ы) с существующими конфигурационными файлами. Таким образом, не создавайте/переименовывайте файлы конфигурации для фильтров, которые вы не хотите.

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

Ключи будем хранить в папке dkimproxy:

cd /usr/local/dkimproxy

Начнем с генерации закрытого ключа. Если вы будете использовать разные ключи для каждого домена (вероятно, хорошая идея), вы можете включить имя домена в имя файла. Кроме того, необходимо указать длину ключа (в битах) - обычно 512, 768 и 1024. Поскольку у некоторых регистраторов есть предел в 256 символов на DNS TXT записи, а закрытый ключ превышает 1024 бит, что может привести к тому, что открытый ключ будет превышать этот предел. UDP обычно имеет предел в 512 байт, который будет ограничивать применение ключей более 4096 бит. Кроме того, более длинные ключи требуют больше обработки электронной почты.
Вы можете проверить существующие ключа RSA, запустив:

#openssl rsa -in domain.priv.key -check

Вы можете найти информацию (например, длину ключа) из существующего ключа RSA, запустив:

#openssl rsa -in domain.priv.key -text -noout

Если вы еще не используете ключ, создать 1024-битный секретный ключ RSA:

#openssl genrsa -out domain.priv.key 1024

Теперь сгенерировать открытый ключ из секретного ключа - уточните имя секретного ключа в качестве входного, и желаемого файла в качестве выхода.

#openssl rsa -in domain.priv.key -pubout -out domain.pub.key

Установите права доступа и владельца ключей:

#chown dkim:dkim *.key
#chmod 400 *.key

Очень удобно генерить ключи на DKIM Wizard. Кроме ключей генерится еще строка для DNS, которую нужно вставит в файл описания зоны DNS. Вводим имя домена, например, desktopbsd.ru и селектор, например, mail.

Настройка DKIMproxy-OUT

Для того, чтобы было легко настроить несколько доменов, мы будем использовать sender_map параметр. В связи с этим, мы можем удалить строки (domain, signature, keyfile, selector) из конфигурационного файла, но необходимо добавить путь к файлу sender_map.
Начинаем с копирования файла примера

#cp /usr/local/dkimproxy/etc/dkimproxy_out.conf.example /usr/local/dkimproxy/etc/dkimproxy_out.conf

Редактируем файл /usr/local/dkimproxy/etc/dkimproxy_out.conf:

  • Удаляем или комментируем строки : domain, signature (может быть две), keyfile, selector
  • Из файла по умолчанию, оставить только параметры: listen и relay.
  • Добавляем строку
    sender_map /usr/local/dkimproxy/etc/senders

Создаем файл /usr/local/dkimproxy/etc/senders Формат файла sender_map является:

  • Один домен в одной строке;
  • Параметры (DKIM / DomainKeys) разделены запятыми;
  • Сведения о подписи (например, c, a, s, key) в скобках, рядом с подписью типа, разделены запятыми.
ОБЩИЕ ПАРАМЕТРЫ
Параметр Описание
s Selector (без доменного имени)
d домена подписать для (по умолчанию домена соответствия)
i Идентификатор (по умолчанию отсутствует)
key Полный путь к закрытому ключу
DKIM КОНКРЕТНЫЕ ПАРАМЕТРЫ
Параметр Описание
c Канонизация (simple/relaxed) (по умолчанию simple)
a Алгоритм хеширования (rsa-sha1/rsa-sha256)
DOMAINKEYS КОНКРЕТНЫЕ ПАРАМЕТРЫ
Параметр Описание
c Канонизация (simple/nofws) (по умолчанию simple)
a Алгоритм хеширования (RSA-SHA1)

Примечание: DomainKeys поддерживает только SHA-1 хэш, а также поддерживает DKIM SHA-256. Если вы установите = RSA-SHA256 для DomainKeys, DKIMproxy не запустится с ошибкой (‘signing error: Can’t call method “new” on an undefined value at Signer.pm’)
Пример файла senders

desktopbsd.ru dkim(c=relaxed, a=rsa-sha256,s=mail,key=/usr/local/dkimproxy/desktopbsd.ru.priv.key), 
domainkeys(c=nofws,a=rsa-sha1,s=mail,key=/usr/local/dkimproxy/desktopbsd.ru.priv.key)

Настройка DNS-записей

Для того чтобы ваш DKIM заработал, необходимо добавить запись TXT в DNS вашего домена.
Надо добавить 2 записи - одна для «policy», другая открытый ключ.

Policy запись
Параметр Название Описание
Название _domainkey  
Содержимое o=~; t=y o: исходящие политики:
  • ~ (некоторые электронные письма, подписанные)
  • - (все письма подписаны)
  • ! (Все подписано, нет подписи 3ей стороны)
  • . (Не отправляются письма)

t флаги: n (не тестирование), s (без поддоменов), y (тестовый режим)
n заметки (human readable)
r: отчетность адрес электронной почты (куда сообщать неправильные результаты)

Пример

mail._domainkey.desktopbsd.ru. 	TXT "k=rsa\; p=J2caGXV2a5JD8MSQE+4shPU3xjIxKi30szQ3h7YxotNTICdXMcktyCPyLGOwIDAQAB"
_domainkey.desktopbsd.ru. 	TXT 	"t=s\; o=~\;"
_adsp._domainkey.desktopbsd.ru.	TXT	"dkim=all"

Так же можно у домена прописать ADSP запись (RFC5617) — это позволит принимающему серверу понять, должно ли ваше письмо быть подписано или нет. Запись выгладит таким образом:

_adsp._domainkey.desktopbsd.ru. TXT "dkim=all"

Значений dkim= может быть три:

  • all — Все письма должны быть подписаны
  • discardable — Не подписанные письма не должны приниматься
  • unknown — Аналогично отсутствию записи

Добавление SPF записи

Для нормального приема почты еще необходимо добавить SPF запись в DNS запись.
1. Добавляем строки в файл зоны

_SPF 14400 IN TXT "v=spf1 ip4:213.141.132.188"
desktopbsd.ru.	 14400 	IN 	TXT 	"v=spf1 include:_SPF.desktopbsd.ru ~all"

2. После перезагрузки named, отправляем письмо на gmail.com и смотрим его код и находим строки

 spf=pass (google.com: domain of admin@desktopbsd.ru designates 213.141.132.188 as permitted sender) smtp.mail=admin@desktopbsd.ru;

Проверка DNS

После перезапуска named, можно проверить все ли у нас правильно с нашим DNS
Проверяем policy запись

$dig +short -ttxt _domainkey.desktopbsd.ru
"t=s\; o=~\;"

Проверяем Запись селектора

$ dig +short -ttxt mail._domainkey.desktopbsd.ru
"k=rsa\; p=J2caGXV2a5JD8MSQE+4shPU3xjIxKi30szQ3h7YxotNTICdXMcktyCPyLGOwIDAQAB"

Так же можно проверить DNS на сайте. После генерации ключей найдете ссылку для проверки Вашего DNS сервера.

Настройка Postfix

Часть материалов взята тут
Считаем, что у Вас до этого Postfix работал нормально
DKIMproxy получает почту, полученную Postfix, на определенный порт (обычно, представление порта - 587), далее подписывает ее, а затем отправлены обратно в Postfix на порт 25 (типичный порт SMTP) откуда он послан. Любая почта, приходящая на порт 25 не подписана.

Чтобы настроить Postfix, нам необходимо только отредактировать файл master.cf.

  • Затем, в зависимости от того, какие сообщения Вы хотите подписывать, необходимо добавить строку
-O = content_filter dksign:127.0.0.1:10027

Так, например, для подписывания сообщений с 25 порта:

smtp inet n – n – – smtpd
-o content_filter=dksign:127.0.0.1:10027

Если Вы хотите скрипт, созданной почты должен быть подписан:

pickup fifo n – n 40 1 pickup
-o content_filter=dksign:127.0.0.1:10027

Для подписывания сообщений с 587 порта:

submission inet n – n – – smtpd
-o smtpd_etrn_restrictions=reject
-o smtpd_sasl_auth_enable=yes
-o content_filter=dksign:[127.0.0.1]:10027
-o receive_override_options=no_address_mappings
-o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject

Для того что бы работала подписка почты и от клиента и с рассылки php, я добавил все 3 варианта.

Нам нужно добавить еще два блока (в конец файла) для завершения конфигурации. Первый блок нужен для указанных выше параметров и передает сообщения фильтру

dksign    unix  -       -       n       -       4       smtp
-o smtp_send_xforward_command=yes
-o smtp_discard_ehlo_keywords=8bitmime,starttls

Второй блок настраивает слушателя SMTP для приема сообщений, которые были подписаны:

127.0.0.1:10028 инет N - N - 10 SMTPD
-O = content_filter
-O = receive_override_options no_unknown_recipient_checks, no_header_body_checks
-O = smtpd_helo_restrictions
-O = smtpd_client_restrictions
-O = smtpd_sender_restrictions
-O = smtpd_recipient_restrictions permit_mynetworks, отклонить
-О mynetworks = 127.0.0.0 / 8
-О smtpd_authorized_xforward_hosts = 127.0.0.0 / 8

Чтобы закончить настройку, мы запускаем DKIMproxy и перезагружаем Postfix:

service dkimproxy start
service postfix reload

Проверка

Для проверки отсылаем письмо на gmal.com (Создайте там ящик и отправьте письмо себе).
Если письмо не вернулось, то вероятнее всего все работает нормально. Получаем отправленное письмо и смотрим его код.
Там должны быть следующие строки.

Authentication-Results: mx.google.com;
    spf=pass (google.com: domain of admin@desktopbsd.ru designates 213.141.132.188 as permitted sender) smtp.mail=admin@desktopbsd.ru;
    dkim=pass header.i=@desktopbsd.ru

Что говорит, что и SPF и DKIM прошли нормально.




Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
 
Автор: hellevil | 15-01-2015, 11:45 | Просмотров: 2 487
 
pix
  Новости по теме    
pix pix pix
  • Простейший центр сертификации
  • Копирование данных с помощью rsync + ssh
  • Настройка/Установка DHCP сервера под управлением FreeBSD
  • Portmaster
  • Munin - статистика сервера
  •  
     
     
    pix
     
    pix
    search
    navi
    poll
    calendar
    «    Март 2024    »
    ПнВтСрЧтПтСбВс
     123
    45678910
    11121314151617
    18192021222324
    25262728293031
    main4
    pix pix pix

    2007 © www.DesktopBSD.ru
    Все права сохранены