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
1つは、空白の置換などの小さな変更を許容します。relaxed/simple
-メッセージヘッダーはで処理されますrelaxed
アルゴリズムと本体simple
1 -
ExternalIgnoreList :資格情報なしで署名ドメインの1つとしてサーバーを介してメールを送信できる外部ホストを指定します
-
InternalHosts :メールを検証せずに署名する必要がある内部ホストのリストを定義します
-
KeyTable :キー名を署名キーにマップします
-
SignatureTable :で見つかったアドレスに基づいて、メッセージに適用する署名を一覧表示します。
From:
ヘッダーフィールド -
モード:動作モードを宣言します。 この場合、ミルターは署名者として機能します(
s
)とベリファイア(v
) -
PidFile :プロセス識別番号を含むPidファイルへのパス
-
SignatureAlgorithm :署名を作成するときに使用する署名アルゴリズムを選択します
-
UserID :opendkimプロセスはこのユーザーとグループの下で実行されます
-
Socket :milterはここで指定されたソケットをリッスンします。Posfixはこのソケットを介して署名と検証のためにopendkimにメッセージを送信します。
12301@localhost
リッスンするTCPソケットを定義しますlocalhost
、 ポート12301
この単純な構成は、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のサブドメインからのメッセージも信頼されることを意味します。
新しく作成したファイルをカスタマイズして、次の行を追加します。 複数のドメインを指定できます。最初の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]
返信が届きます。 すべてが正しく機能する場合は、 DKIM check: pass
下 Summary of Results
.
==========================================================
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];