Настройка Postfix + DKIM / DomainKeys для подписания сообщений через DKIMproxy: различия между версиями

Материал из Wiki МИАЦ ВО
Перейти к навигации Перейти к поиску
(Новая страница: «Статья взята [http://www.thatsgeeky.com/2011/05/dkimdomainkeys-signing-via-dkimproxy/ тут]. Настраивал все по этой статье +…»)
 
(Установка)
Строка 38: Строка 38:
 
Вы можете проверить пользователя и группы, запустив:  
 
Вы можете проверить пользователя и группы, запустив:  
 
<pre># id dkim</pre>
 
<pre># id dkim</pre>
 +
==Установка Init-Script запуска
 +
Затем мы устанавливаем скрипт инициализации. DKIMproxy поставляется с образцом сценария, но Вам, возможно, потребуется изменить некоторые пути. Следующие команды скопирует сценарий инициализации, сделают его исполняемым и добавляет его в автозапуск.
 +
<pre># 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</pre>
 +
Некоторые переменные в сценарии инициализации, необходимо поправить:
 +
*DKIMPROXYUSER (установлено на пользователя, созданного выше)
 +
*DKIMPROXYGROUP (набор в группу пользователя, созданного выше)
 +
*PIDDIR (Я установил /var/run/)
 +
*DKIMPROXY_IN_CFG (путь к dkimproxy_in.conf, может не существовать, если не используется в / корректор скрипта)
 +
*DKIMPROXY_OUT_CFG (путь к dkimproxy_out.conf, может не существовать, если не используется OUT / подписавшего скрипта)
 +
В сценарий инициализации нет никаких опций, указывающих, используете ли вы IN, OUT, или оба сценария. Это определяется автоматически,  на основе того, какие конфигурационные файлы существуют. Сценарий только включает фильтр(ы) с существующими конфигурационными файлами. Таким образом, не создавайте/переименовывайте файлы конфигурации для фильтров, которые вы не хотите.
 +
==Генерация RSA ключей==
 +
Ключи будем хранить в папке dkimproxy:
 +
<pre>cd /usr/local/dkimproxy</pre>
 +
Начнем с генерации закрытого ключа. Если вы будете использовать разные ключи для каждого домена (вероятно, хорошая идея), вы можете включить имя домена в имя файла. Кроме того, необходимо указать длину ключа (в битах) - обычно 512, 768 и 1024. Поскольку у некоторых регистраторов есть предел в 256 символов на DNS TXT записи, а закрытый ключ превышает 1024 бит, что  может привести к тому, что открытый ключ будет превышать этот предел. UDP обычно имеет предел в 512 байт, который будет ограничивать применение ключей более 4096 бит. Кроме того, более длинные ключи требуют больше обработки электронной почты.<br />
 +
Вы можете проверить существующие ключа RSA, запустив:
 +
<pre>#openssl rsa -in domain.priv.key -check</pre>
 +
Вы можете найти информацию (например, длину ключа) из существующего ключа RSA, запустив:
 +
<pre>#openssl rsa -in domain.priv.key -text -noout</pre>
 +
Если вы еще не используете ключ, создать 1024-битный секретный ключ RSA:
 +
<pre>#openssl genrsa -out domain.priv.key 1024</pre>
 +
Теперь сгенерировать открытый ключ из секретного ключа - уточните имя секретного ключа в качестве входного, и желаемого файла в качестве выхода.
 +
<pre>#openssl rsa -in domain.priv.key -pubout -out domain.pub.key</pre>
 +
Установите права доступа и владельца ключей:
 +
<pre>#chown dkim:dkim *.key
 +
#chmod 400 *.key</pre>
 +
==Настройка DKIMproxy-OUT==
 +
Для того, чтобы было легко настроить несколько доменов, мы будем использовать sender_map параметр. В связи с этим, мы можем удалить все доменные/подпись конкретных записей (domain, signature, keyfile, selector) из конфигурационного файла, но необходимо добавить путь к файлу sender_map.<br/>
 +
Начинаем с копирования файла примера

Версия 10:44, 20 июня 2013

Статья взята тут. Настраивал все по этой статье + еще немного нашел в инете.

Предпосылки

С постоянно растущим объемом передаваемых спам, многие почтовые сервисы стали использовать более сложные способы проверки подлинности электронной почты. Помимо очевидного - контент - два широко используемых метода (возможно, с некоторыми вариациями), включают Sender Policy Framework (SPF) и DomainKeys Identified Mail (DKIM). Оба эти метода требуют использования DNS записи. SPF- список серверов которым разрешено отправлять почту для домена вводится в DNS. Основное внимание в этой статье будет уделено DKIM.

DKIM это процесс генерации криптографических хэш из электронной почты. Это выполняет две основные функции: во-первых, подпись обеспечивает достоверность, тем, что используется частный ключ, необходимый для генерации подписи. Поскольку закрытый ключ не опубликован, подписанная им почта обеспечивает степень уверенности, что сервер обладающий закрытым ключом одобрил сообщение (как правило, это означает, что опознанный пользователь отправил сообщение). Во-вторых, так как криптографический хэш зависит от содержания электронной почты, подпись подтверждает, что сообщение не было изменено между приемом и передачей серверов.

Есть несколько способов реализации DKIM и DomainKeys - один распространенный способ использует Milter для каждого алгоритма. Другим подходом является DKIMproxy, с подписанием модуль прослушивает указанный порт, а также отдельные сообщения электронной почты через прокси подписания модуля. DKIMproxy реализует оба DomainKeys и DKIM спецификации

Установка модулей 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

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

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