DebianWheezyにPostfixを使用してDKIMをインストールおよび設定する方法
序章
スパマーとして誤ってフラグが立てられることへの欲求不満は、ほとんどのメールサーバー管理者にとって奇妙なことではありません。 サーバーが危険にさらされる可能性を排除することにより、通常、次のいずれかによって偽のフラグが発生します。
- サーバーはオープンメールリレーです
- 送信者またはサーバーのIPアドレスがブラックリストに登録されている
- サーバーに完全修飾ドメイン名( FQDN )とPTRレコードがありません
- Sender Policy Framework( SPF )DNSレコードが見つからないか、正しく構成されていません
- DomainKeys Identified Mail( DKIM )の実装が欠落しているか、正しく設定されていません
これらは、プロプライエタリおよびオープンソースのスパムフィルター(SpamAssassinを含む)の大部分によってチェックされている基本的なプロパティの一部です。 これらのテストに合格することは、適切に構成されたメールサーバーにとって非常に重要です。
このチュートリアルでは、DKIM送信者認証システムのオープンソース実装であるOpenDKIM]のインストールと構成に焦点を当てます。
リーダーはSSH経由でサーバーにアクセスする方法を知っていると想定され、PostfixとDovecotはすでにインストールおよび構成されており( tutorial )、ホスト名とFQDNが設定されています( tutorial )。 、 tutorial )であり、SPFレコードが配置されています( tutorial )。
DKIMについて
DKIMは、個人または組織がドメイン名を電子メールメッセージに関連付けることを可能にするインターネット標準です。 これは、事実上、メッセージの責任を主張する方法として機能します。 基本的に、DKIMは非対称暗号化を利用しています。 送信者のメール転送エージェント(MTA)は、すべての送信メッセージに秘密鍵で署名します。 受信者は送信者のDNSレコードから公開鍵を取得し、メッセージの署名が行われてからメッセージ本文と一部のヘッダーフィールドが変更されていないかどうかを確認します。
OpenDKIMをインストールします
インストールを開始する前に、システムアップデートをお勧めします。
sudo apt-get update sudo apt-get dist-upgrade
OpenDKIMとその依存関係をインストールします。
sudo apt-get install opendkim opendkim-tools
追加のパッケージが依存関係として一覧表示されます。yes
と入力し、Enter
を押して続行します。
OpenDKIMを構成する
OpenDKIMを構成するには、いくつかのファイルを作成および編集する必要があります。
Nano は、デフォルトでDigitalOceanドロップレットにインストールされ、操作が簡単なため、エディターとして使用されます。
- 矢印キーでナビゲートする
- 変更を保存せずに終了します。
CTRL + X
を押してからN
を押します。 - 終了して変更を保存します。
CTRL + X
、Y
の順に押し、最後にEnter
を押します。
重要:すべてのコマンドと構成ファイルで、example.comのすべてのインスタンスを独自のドメインに置き換えてください。 編集後にファイルを保存することを忘れないでください。
メインの設定ファイルから始めましょう:
sudo nano /etc/opendkim.conf
confファイルの最後に次の行を追加します(各パラメーターについては以下で説明します)。 オプションで、Socket
のカスタムポート番号を選択できます。 別のアプリケーションで使用されていないことを確認してください。
AutoRestart Yes AutoRestartRate 10/1h UMask 002 Syslog yes SyslogSuccess Yes LogWhy Yes Canonicalization relaxed/simple ExternalIgnoreList refile:/etc/opendkim/TrustedHosts InternalHosts refile:/etc/opendkim/TrustedHosts KeyTable refile:/etc/opendkim/KeyTable SigningTable refile:/etc/opendkim/SigningTable Mode sv PidFile /var/run/opendkim/opendkim.pid SignatureAlgorithm rsa-sha256 UserID opendkim:opendkim Socket inet:12301@localhost
- AutoRestart :失敗時にフィルターを自動再起動します
- AutoRestartRate :フィルターの最大再起動レートを指定します。再起動がこのレートよりも速く発生し始めると、フィルターは終了します。
10/1h
-1時間あたり最大10回の再起動が許可されます - UMask :
UserID
で定義されたユーザーグループにすべてのアクセス許可を与え、他のユーザーがファイルを読み取って実行できるようにします。この場合、Pidファイルの作成と変更が可能になります。 - Syslog 、 SyslogSuccess 、* LogWhy :これらのパラメーターにより、syslogへの呼び出しによる詳細なログ記録が可能になります
- 正規化:メッセージ署名で使用される正規化メソッドを定義します。
simple
メソッドはほとんど変更できませんが、relaxed
メソッドは空白の置換などの小さな変更を許容します。relaxed/simple
-メッセージヘッダーはrelaxed
アルゴリズムで処理され、本文はsimple
アルゴリズムで処理されます。 - ExternalIgnoreList :資格情報なしで署名ドメインの1つとしてサーバーを介してメールを送信できる外部ホストを指定します
- InternalHosts :メールを検証せずに署名する必要がある内部ホストのリストを定義します
- KeyTable :キー名を署名キーにマップします
- SignatureTable :
From:
ヘッダーフィールドにあるアドレスに基づいてメッセージに適用する署名を一覧表示します - モード:動作モードを宣言します。 この場合、ミルターは署名者(
s
)および検証者(v
)として機能します。 - PidFile :プロセス識別番号を含むPidファイルへのパス
- SignatureAlgorithm :署名を作成するときに使用する署名アルゴリズムを選択します
- UserID :opendkimプロセスはこのユーザーとグループの下で実行されます
- Socket :milterはここで指定されたソケットをリッスンします。Posfixはこのソケットを介して署名と検証のためにopendkimにメッセージを送信します。
12301@localhost
は、localhost
、ポート12301
でリッスンするTCPソケットを定義します
この単純な構成は、1つ以上のドメインのメッセージ署名を可能にすることを目的としています。他のオプションについては、こちらにアクセスしてください。
ミルターをPostfixに接続します。
sudo nano /etc/default/opendkim
次の行を追加し、カスタムポート番号を使用する場合にのみポート番号を編集します。
SOCKET="inet:12301@localhost"
このmilterを使用するようにpostfixを設定します:
sudo nano /etc/postfix/main.cf
これらの2行がPostfix設定ファイルに存在し、コメントアウトされていないことを確認してください。
milter_protocol = 2 milter_default_action = accept
フィルタ(SpamAssasin、Clamavなど)がPostfixによってすでに使用されている可能性があります。 次のパラメーターが存在する場合は、opendkimミルターを追加するだけです(ミルターはコンマで区切られます)。ポート番号はopendkim.conf
と同じである必要があります。
smtpd_milters = unix:/spamass/spamass.sock, inet:localhost:12301 non_smtpd_milters = unix:/spamass/spamass.sock, inet:localhost:12301
パラメータが欠落している場合は、次のように定義します。
smtpd_milters = inet:localhost:12301 non_smtpd_milters = inet:localhost:12301
信頼できるホスト、キーテーブル、署名テーブル、および暗号キーを保持するディレクトリ構造を作成します。
sudo mkdir /etc/opendkim sudo mkdir /etc/opendkim/keys
信頼できるホストを指定します。
sudo nano /etc/opendkim/TrustedHosts
このファイルを使用して、ExternalIgnoreList
とInternalHosts
の両方を定義します。これらのホスト、ドメイン、およびIPアドレスから発信されたメッセージは信頼され、署名されます。
メインの構成ファイルはTrustedHosts
を正規表現ファイル(refile
)として宣言しているため、ワイルドカードパターンを使用できます。*.example.com
は、example.com[からのメッセージを意味します。 X183X]のサブドメインも、ルートドメインから送信されたものだけでなく、信頼されます。
新しく作成したファイルをカスタマイズして、次の行を追加します。 複数のドメインを指定できます。最初の3行は編集しないでください。
127.0.0.1 localhost 192.168.0.1/24 *.example.com #*.example.net #*.example.org
キーテーブルを作成します。
sudo nano /etc/opendkim/KeyTable
鍵テーブルには、各セレクター/ドメインのペアとそれらの秘密鍵へのパスが含まれています。 任意の英数字の文字列をセレクターとして使用できます。この例では、mail
が使用されており、変更する必要はありません。
mail._domainkey.example.com example.com:mail:/etc/opendkim/keys/example.com/mail.private #mail._domainkey.example.net example.net:mail:/etc/opendkim/keys/example.net/mail.private #mail._domainkey.example.org example.org:mail:/etc/opendkim/keys/example.org/mail.private
署名テーブルを作成します。
sudo nano /etc/opendkim/SigningTable
このファイルは、ドメイン/メールアドレスとそのセレクターを宣言するために使用されます。
*@example.com mail._domainkey.example.com #*@example.net mail._domainkey.example.net #*@example.org mail._domainkey.example.org
公開鍵と秘密鍵を生成する
キーディレクトリに移動します。
cd /etc/opendkim/keys
ドメインがキーを保持するための別のフォルダを作成します。
sudo mkdir example.com cd example.com
キーを生成します。
sudo opendkim-genkey -s mail -d example.com
-s
はセレクターを指定し、-d
はドメインを指定します。このコマンドは、2つのファイルを作成します。mail.private
は秘密鍵であり、mail.txt
は公開鍵を含みます。
秘密鍵の所有者をopendkim
に変更します。
sudo chown opendkim:opendkim mail.private
ドメインのDNSレコードに公開鍵を追加します
mail.txt
を開きます:
sudo nano -$ mail.txt
公開鍵は、p
パラメーターで定義されます。 以下のサンプルキーは使用しないでください。これは単なる説明であり、サーバーでは機能しません。
mail._domainkey IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5N3lnvvrYgPCRSoqn+awTpE+iGYcKBPpo8HHbcFfCIIV10Hwo4PhCoGZSaKVHOjDm4yefKXhQjM7iKzEPuBatE7O47hAx1CJpNuIdLxhILSbEmbMxJrJAG0HZVn8z6EAoOHZNaPHmK2h4UUrjOG8zA5BHfzJf7tGwI+K619fFUwIDAQAB" ; ----- DKIM key mail for example.com
そのキーをコピーして、ドメインのDNSエントリにTXTレコードを追加します。
Name: mail._domainkey.example.com. Text: "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5N3lnvvrYgPCRSoqn+awTpE+iGYcKBPpo8HHbcFfCIIV10Hwo4PhCoGZSaKVHOjDm4yefKXhQjM7iKzEPuBatE7O47hAx1CJpNuIdLxhILSbEmbMxJrJAG0HZVn8z6EAoOHZNaPHmK2h4UUrjOG8zA5BHfzJf7tGwI+K619fFUwIDAQAB"
DNSの変更が反映されるまでに数時間かかる場合があることに注意してください。
PostfixとOpenDKIMを再起動します:
sudo service postfix restart sudo service opendkim restart
おめでとう! メールサーバーのDKIMが正常に構成されました。
空の電子メールを[email protected]
に送信することで構成をテストでき、応答が受信されます。 すべてが正常に機能する場合は、Summary of Results
の下にDKIM check: pass
が表示されます。
========================================================== Summary of Results ========================================================== SPF check: pass DomainKeys check: neutral DKIM check: pass Sender-ID check: pass SpamAssassin check: ham
または、管理しているGmailアドレスにメッセージを送信し、受信したメールのヘッダーをGmailの受信トレイに表示することもできます。dkim=pass
はAuthentication-Results
ヘッダーフィールドに表示されます。
Authentication-Results: mx.google.com; spf=pass (google.com: domain of [email protected] designates --- as permitted sender) [email protected]; dkim=pass [email protected];