Postfix設定 · 1 min read · Nov 28, 2025

Postfix with dkfilter (DomainKeys Implementation)

Postfix with dkfilter (DomainKeys Implementation)

Author: Sohail Riaz

DomainKeysは、送信者のドメインを認証するために公開鍵暗号の形式を使用する、Yahooで開発中のアンチスパムソフトウェアアプリケーションです。dkfilterはPostfix用に設計されたSMTPプロキシです。これはDomainKeysメッセージの署名と検証を実装しています。これは、ポート587で送信メールに署名するための「アウトバウンド」フィルタと、ポート25で受信メールの署名を検証するための「インバウンド」フィルタの2つの別々のフィルタで構成されています。この文書は、PostfixにdkfilterをインストールしてDomainKeysの署名と検証を展開する方法をステップバイステップで説明するものです。 ### 1 Install Postfix あなたのドメインにメールを送受信するためにPostfixをインストールします。 ### 2 Resolving Dependencies - Installing Perl Modules DkfilterはPerlで書かれています。CPANアーカイブから以下のPerlモジュールが必要です。 ```     * 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")' ``` Note: 上記のPerlモジュールをインストールするために必要な依存Perlモジュールも解決してください。 ### 3 Installing dkfilter dkfilterをインストールするために推奨される手順は以下の通りです: i. 以下のURLからdkfilterをダウンロードします: 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 Setting up Inbound Filter 受信メールの署名を確認するためにPostfixの設定ファイル内で関連する変更を行う必要があります。 vi /etc/postfix/master.cf ``` # # Before-filter SMTP server. Receive mail from the network and # pass it to the content filter on localhost port 10025. # smtp inet n - n - - smtpd -o smtpd_proxy_filter=127.0.0.1:10025 -o smtpd_client_connection_count_limit=10 # # After-filter SMTP server. Receive mail from the content filter on # localhost port 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 ``` 上記の行をファイルの最後に挿入します。ここでは、メールが検証のために127.0.0.1のポート10026で受信されることを定義しています。署名チェックのためにリッスンしたい自分の希望するIPアドレスを定義できます。 ### 5 Setting up the outbound filter アウトバウンドフィルタは、メッセージに署名するために使用される秘密鍵へのアクセスが必要です。さらに、使用されているキーセレクタの名前と、どのドメインに対してメッセージに署名するかを知る必要があります。この情報は、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ヘッダーとフッターを削除し、TXTエントリを作成してdnsゾーンファイルに貼り付けます。次のようにします: ``` _domainkey.sohailriaz.com IN TXT “t=y; o=-;” m1._domainkey.sohailriaz.com IN TXT "g=; k=rsa; p=MHwwDQYJK ... OprwIDAQAB;" ``` ここで、m1は前のステップで選択したセレクタの名前であり、p=パラメータには公開鍵が1つの長い文字列として含まれています。 最後に、Postfixを構成して、dkfilter.outサービスを介してのみ、認可された送信メッセージをフィルタリングします。以下の例では、ポート587(送信ポート)を介して送信されたメッセージは、DomainKeysでメッセージに署名するAfter-Queueコンテンツフィルタを通過します。 ``` vi /etc/postfix/master.cf ``` ``` # # modify the default submission service to specify a content filter # and restrict it to local clients and SASL authenticated clients only # 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 # # specify the location of the DomainKeys signing filter # dksign unix - - n - 10 smtp -o smtp_send_xforward_command=yes -o smtp_discard_ehlo_keywords=8bitmime # # service for accepting messages FROM the DomainKeys signing filter # 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が/etc/postfix/master.cfの変更に応答するために、postfix reloadを実行します。 ``` postfix reload ``` ### 6 Startup Script 以下のサイトからスタートアップ/シャットダウンスクリプトをダウンロードします: http://www.enterux.com/files/dkfilter そのスクリプトを/etc/rc.d/init.dにコピーし、必要に応じて編集します。 ### 7 References http://www.postfix.org http://antispam.yahoo.com/domainkeys http://jason.long.name/dkfilter/
Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。