Postfix настройка · 3 min read · Nov 28, 2025

Postfix с dkfilter (Реализация DomainKeys)

Postfix с dkfilter (Реализация DomainKeys)

Автор: Sohail Riaz

DomainKeys — это приложение для борьбы со спамом, разрабатываемое Yahoo, которое использует форму криптографии с открытым ключом для аутентификации домена отправителя. dkfilter — это SMTP-прокси, предназначенный для Postfix. Он реализует подписание и проверку сообщений DomainKeys. Он состоит из двух отдельных фильтров: "исходящий" фильтр для подписания исходящих электронных писем на порту 587 и "входящий" фильтр для проверки подписей входящих электронных писем на порту 25. Этот документ описывает шаг за шагом, как установить dkfilter для postfix для развертывания подписания и проверки domainkeys. ### 1 Установка Postfix Установите postfix для вашего домена, чтобы отправлять и получать письма. ### 2 Разрешение зависимостей - Установка модулей Perl Dkfilter написан на Perl. Он требует следующие модули Perl из архива CPAN. ```     * Crypt::OpenSSL::RSA     * Mail::Address     * MIME::Base64     * Net::DNS     * Test::More     * Text::Wrap     * Mail::DomainKeys ``` Следующие команды помогут. ``` perl -MCPAN -e'CPAN::Shell->install("Crypt::OpenSSL::RSA")' perl -MCPAN -e'CPAN::Shell->install("Mail::Address")' perl -MCPAN -e'CPAN::Shell->install("MIME::Base64")' perl -MCPAN -e'CPAN::Shell->install("Net::DNS")' perl -MCPAN -e'CPAN::Shell->install("Test::More")' perl -MCPAN -e'CPAN::Shell->install("Text::Wrap")' perl -MCPAN -e'CPAN::Shell->install("Email::Address")' perl -MCPAN -e'CPAN::Shell->install("Mail::DomainKeys")' ``` Примечание: Также разрешите любые зависимые модули Perl, необходимые для установки вышеуказанных модулей Perl. ### 3 Установка dkfilter Следующие шаги рекомендуются для установки dkfilter: i. Скачайте dkfilter по следующему URL: http://jason.long.name/dkfilter/dkfilter-0.11.tar.gz ii. Установка dkfilter ``` tar xvf dkfilter-0.11.tar.gz cd dkfilter-0.11 ./configure --prefix=/usr/local/dkfilter make install useradd dkfilter ``` Скрипты фильтров будут установлены в /usr/local/dkfilter/bin, а файлы модулей Perl будут в /usr/local/dkfilter/lib. ### 4 Настройка входящего фильтра Нам нужно внести соответствующие изменения в конфигурационные файлы Postfix, чтобы проверять входящие письма на наличие подписи. vi /etc/postfix/master.cf ``` # # SMTP-сервер перед фильтрацией. Получает почту из сети и # передает её контент-фильтру на локальном хосте на порту 10025. # smtp inet n - n - - smtpd -o smtpd_proxy_filter=127.0.0.1:10025 -o smtpd_client_connection_count_limit=10 # # SMTP-сервер после фильтрации. Получает почту от контент-фильтра на # локальном хосте на порту 10026. # 127.0.0.1:10026 inet n - n - - smtpd -o smtpd_authorized_xforward_hosts=127.0.0.0/8 -o smtpd_client_restrictions= -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o smtpd_data_restrictions= -o mynetworks=127.0.0.0/8 -o receive_override_options=no_unknown_recipient_checks ``` Вставьте вышеуказанные строки в конец файла. Здесь мы определяем, что почта будет получена после smtp для проверки на 127.0.0.1 с портом 10026. Вы можете определить свой собственный желаемый IP-адрес, на котором хотите слушать для проверки подписи. ### 5 Настройка исходящего фильтра Исходящий фильтр нуждается в доступе к закрытому ключу, используемому для подписания сообщений. Кроме того, ему нужно знать имя селектора ключа, который используется, и для какого домена он должен подписывать сообщения. Эта информация указывается с помощью аргументов командной строки для dkfilter.out. 1. Сгенерируйте пару закрытый/открытый ключ и опубликуйте открытый ключ в DNS. ``` cd /usr/local/dkfilter openssl genrsa -out private.key 1024 openssl rsa -in private.key -pubout -out public.key ``` Это создаст файлы private.key и public.key в текущем каталоге, содержащие закрытый и открытый ключи. Убедитесь, что private.key не доступен для чтения всем, но все еще доступен пользователю dkfilter. 2. Выберите имя селектора... например, m1 3. Поместите данные открытого ключа в DNS, в вашем домене, используя выбранное вами имя селектора. Скопируйте содержимое файла public.key, удалите заголовок и подвал PEM и вставьте его в файл зоны DNS, создав запись TXT, как это: ``` _domainkey.sohailriaz.com IN TXT “t=y; o=-;” m1._domainkey.sohailriaz.com IN TXT "g=; k=rsa; p=MHwwDQYJK ... OprwIDAQAB;" ``` где m1 — это имя селектора, выбранного на предыдущем шаге, а параметр p= содержит открытый ключ в виде одной длинной строки символов. Наконец, настройте Postfix для фильтрации исходящих, авторизованных сообщений только через сервис dkfilter.out на порту 10027. В следующем примере сообщения, отправленные через SMTP на порту 587 (порт отправки), будут проходить через контент-фильтр After-Queue, который подписывает сообщения с помощью DomainKeys. ``` vi /etc/postfix/master.cf ``` ``` # # измените службу отправки по умолчанию, чтобы указать контент-фильтр # и ограничить его только локальными клиентами и клиентами, аутентифицированными SASL # 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 # # укажите местоположение фильтра подписывания DomainKeys # dksign unix - - n - 10 smtp -o smtp_send_xforward_command=yes -o smtp_discard_ehlo_keywords=8bitmime # # служба для приема сообщений ОТ фильтра подписывания DomainKeys # 127.0.0.1:10028 inet 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,reject -o mynetworks=127.0.0.0/8 -o smtpd_authorized_xforward_hosts=127.0.0.0/8 ``` Выполните перезагрузку postfix, чтобы Postfix отреагировал на изменения в /etc/postfix/master.cf. ``` postfix reload ``` ### 6 Скрипт запуска Скачайте скрипт запуска/остановки с следующего сайта: http://www.enterux.com/files/dkfilter Скопируйте этот скрипт в /etc/rc.d/init.d и отредактируйте его в соответствии с вашими требованиями. ### 7 Ссылки http://www.postfix.org http://antispam.yahoo.com/domainkeys http://jason.long.name/dkfilter/
Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.