以前、CentOS/RHELメールサーバーでSPFとDKIMを設定する方法を説明しました。 LinuxでDKIMの署名と検証を実行できる2つの一般的なソフトウェアは、OpenDKIMとAmavisです。そのチュートリアルでは、OpenDKIMがCentOS 8 / RHEL 8リポジトリに含まれていないため、Amavisを使用しました。現在、OpenDKIMはEPELリポジトリに含まれています。 OpenDKIMの使用を好む人もいるので、このチュートリアルでその方法を説明します。
DKIMとは何ですか?
DKIM(DomainKeys Identified Mail)は、DNSのTXTレコードの一種であり、電子メールのなりすましを防ぎ、正当な電子メールをスパムフォルダではなく受信者の受信トレイに配信するのに役立ちます。 DKIMは秘密鍵を使用して、ドメインから送信されたメールに署名を追加します 。受信SMTPサーバーは、ドメインのDNSレコードで公開されている対応する公開鍵を使用して署名を検証します。
AmavisでDKIMを無効にする
以前のAmavisチュートリアルに従ったが、OpenDKIMを使用する場合は、AmavisでDKIMを無効にする必要があります。メインの構成ファイルを編集します。
sudo nano /etc/amavisd/amavisd.conf
次の行を見つけます。
$enable_dkim_verification = 1; # enable DKIM signatures verification $enable_dkim_signing = 1; # load DKIM signing code, keys defined by dkim_key
#
を追加します 各行の先頭にある文字でコメントアウトします。
#$enable_dkim_verification = 1; # enable DKIM signatures verification #$enable_dkim_signing = 1; # load DKIM signing code, keys defined by dkim_key
ファイルを保存して閉じます。次に、Amavisを再起動します。
sudo systemctl restart amavisd
ステップ1:CentOS 8/RHEL8にOpenDKIMをインストールして構成する
まず、EPEL(Enterprise Linux用の追加パッケージ)リポジトリを有効にして、OpenDKIMをインストールします。
sudo dnf install epel-release sudo dnf install opendkim
OpenDKIMのメイン構成ファイルを編集します。
sudo nano /etc/opendkim.conf
次の行を見つけます。
Mode v
デフォルトでは、OpenDKIMは検証モード(v)で実行され、受信電子メールメッセージのDKIM署名を検証します。送信メールに署名する必要があるため、この行を次のように変更して、署名モードを有効にします。
Mode sv
次に、次の行を見つけます。
## Specifies whether or not the filter should generate report mail back ## to senders when verification fails and an address for such a purpose ## is provided. See opendkim.conf(5) for details. SendReports yes ## Specifies the sending address to be used on From: headers of outgoing ## failure reports. By default, the e-mail address of the user executing ## the filter is used ([email protected]). # ReportAddress "Example.com Postmaster" <[email protected]>
署名の検証が失敗し、署名にレポート要求( "r =y")が含まれ、署名ドメインがDNSのレポートレコードでレポートアドレス(つまり、ra =user)をアドバタイズすると、OpenDKIMはそのアドレスに構造化レポートを送信します問題を再現するために必要な詳細が含まれています。特定の差出人の電子メールアドレスを使用してレポートを送信することをお勧めします。 ReportAddress
のコメントを解除します パラメータを設定し、メールアドレスを変更します。レポートのメールは送信者ドメインのDNSレコードで指定されたメールアドレスに送信されるため、これによって後方散乱の問題が発生することはありません。
ドメイン名ごとに個別のキーを使用するため、次の行を見つけてコメントアウトします。
KeyFile /etc/opendkim/keys/default.private
次に、次の4行を見つけて、コメントを外します。
# KeyTable /etc/opendkim/KeyTable # SigningTable refile:/etc/opendkim/SigningTable # ExternalIgnoreList refile:/etc/opendkim/TrustedHosts # InternalHosts refile:/etc/opendkim/TrustedHosts
ファイルを保存して閉じます。
ステップ2:署名テーブル、キーテーブル、信頼できるホストファイルを作成する
署名テーブルを編集します ファイル。
sudo nano /etc/opendkim/SigningTable
このファイルの最後に次の行を追加します。これは、サーバー上の送信者が @ your-domain.com
を使用している場合にOpenDKIMに通知します。 アドレスの場合は、 20200308._domainkey.your-domain.com
で識別される秘密鍵で署名する必要があります 。
*@your-domain.com 20200308._domainkey.your-domain.com
20200308はDKIMセレクターです。ドメイン名には複数のDKIMキーが含まれる場合があります。 DKIMセレクターを使用すると、特定のDKIMキーを選択できます。 DKIMセレクターには任意の名前を使用できますが、現在の日付(2020年3月8日)をDKIMセレクターとして使用すると便利です。ファイルを保存して閉じます。次に、キーテーブルを編集します ファイル。
sudo nano /etc/opendkim/KeyTable
DKIM秘密鍵の場所を指定する次の行を追加します。
20200308._domainkey.your-domain.com your-domain.com:20200308:/etc/opendkim/keys/your-domain.com/20200308.private
ファイルを保存して閉じます。次に、trustedhostsファイルを編集します。
sudo nano /etc/opendkim/TrustedHosts
127.0.0.0.1と::1は、デフォルトでこのファイルに含まれています。次に、次の行を追加します。これにより、OpenDKIMは、電子メールが自分のドメイン名から送信されている場合、OpenDKIMはその電子メールに対してDKIM検証を実行しないように指示します。
*.your-domain.com
ファイルを保存して閉じます。
ステップ3:秘密/公開キーペアを生成する
DKIMは送信メッセージの署名と受信メッセージの検証に使用されるため、署名用の秘密鍵とリモート検証用の公開鍵を生成する必要があります。公開鍵はDNSで公開されます。
ドメイン用に別のフォルダを作成します。
sudo mkdir /etc/opendkim/keys/your-domain.com
opendkim-genkey
を使用してキーを生成します ツール。
sudo opendkim-genkey -b 2048 -d your-domain.com -D /etc/opendkim/keys/your-domain.com -s 20200308 -v
上記のコマンドは、2048ビットのキーを作成します。 -d(ドメイン)
ドメインを指定します。 -D(ディレクトリ)
キーが保存されるディレクトリを指定します。 20200308
を使用しています DKIMセレクターとして。コマンドが実行されると、秘密鍵は 20200308.private
に書き込まれます。 ファイルと公開鍵は20200308.txt
に書き込まれます ファイル。
デフォルトでは、rootのみがキーファイルの読み取りと書き込みを行うことができます。 opendkim
を作成します 秘密鍵の所有者として。
sudo chown opendkim:opendkim /etc/opendkim/keys/ -R
ステップ4:DNSレコードで公開鍵を公開する
公開鍵を表示する
sudo cat /etc/opendkim/keys/your-domain.com/20200308.txt
p
の後の文字列 パラメータは公開鍵です。
DNSマネージャーで、TXTレコードを作成し、 20200308._domainkey
と入力します 名前フィールドに。 (20200308を独自のDKIMセレクターに置き換える必要があります。)次に、ターミナルウィンドウに戻り、括弧内のすべてをコピーして、DNSレコードの値フィールドに貼り付けます。値フィールドのすべての二重引用符と改行を削除する必要があります。それらを削除しないと、次のステップのキーテストはおそらく失敗します。
ステップ5:DKIMキーをテストする
CentOS 8 / RHEL 8サーバーで次のコマンドを入力して、キーをテストします。
sudo opendkim-testkey -d your-domain.com -s 20200308 -vvv
すべて問題がなければ、 key OK
が表示されます。 メッセージ。
opendkim-testkey: using default configfile /etc/opendkim.conf opendkim-testkey: checking key '20200308._domainkey.linuxbabe.com' opendkim-testkey: key OK
DKIMレコードがインターネットに伝播するまでに時間がかかる場合があることに注意してください。使用するドメインレジストラによっては、DNSレコードが即座に伝播される場合と、伝播に最大24時間かかる場合があります。 https://www.dmarcanalyzer.com/dkim/dkim-check/にアクセスし、 20200308
と入力します。 セレクターとしてドメイン名を入力し、DKIMレコードの伝播を確認します。
「キーが安全ではありません」と表示されても、慌てないでください。これは、ドメイン名でDNSSECが有効になっていないためです。 DNSSECは、安全なDNSクエリのセキュリティ標準です。ほとんどのドメイン名はDNSSECを有効にしていません。引き続きこのガイドに従うことができます。
これで、opendkimサービスを開始できます。
sudo systemctl start opendkim
また、起動時に自動起動を有効にします。
sudo systemctl enable opendkim
OpenDKIMは<code>127.0.0.1:8891をリッスンします 。
ステップ6:PostfixをOpenDKIMに接続する
Postfixのメイン設定ファイルを編集します。
sudo nano /etc/postfix/main.cf
このファイルの最後に次の行を追加して、Postfixがmilterプロトコルを介してOpenDKIMを呼び出すことができるようにします。 127.0.0.1
を使用する必要があることに注意してください アドレスとして。 localhost
は使用しないでください 。
# Milter configuration milter_default_action = accept milter_protocol = 6 smtpd_milters = inet:127.0.0.1:8891 non_smtpd_milters = $smtpd_milters
ファイルを保存して閉じます。次に、 postfix
を追加します opendkim
へのユーザー グループ。
sudo gpasswd -a postfix opendkim
postfix
を再起動します サービス。
sudo systemctl restart postfix
ステップ7:SPFとDKIMのチェック
これで、デスクトップメールクライアントまたはウェブメールクライアントを使用して、テストメールを [email protected]
に送信できます。 無料の電子メール認証レポートを取得します。これがport25.comから入手したレポートです。
メールサーバーからGmailアカウントにテストメールを送信して、SPFとDKIMのチェックに合格したかどうかを確認することもできます。 Gmailで開いたメールメッセージの右側で、[ show original
]をクリックすると、 ドロップダウンメニューのボタンをクリックすると、認証結果を確認できます。
メッセージが署名されておらず、DKIMチェックが失敗した場合は、postfixログ( / var / log / maillog
)をチェックすることをお勧めします )構成の何が問題になっているのかを確認します。
メールサーバーは、受信メールに対してDKIM検証も実行します。結果はメールヘッダーで確認できます。以下は、Gmailを使用した送信者のSPFとDKIMのチェックです。
Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=2607:f8b0:4864:20::c2d; helo=mail-yw1-xc2d.google.com; [email protected]; receiver=<UNKNOWN> Authentication-Results: email.linuxbabe.com; dkim=pass (2048-bit key; unprotected) header.d=gmail.com [email protected] header.b="XWMRd2co"; dkim-atps=neutral
複数のドメイン用にOpenDKIMを構成する方法
PostfixAdminを使用してCentOS8/RHEL8メールサーバーで複数のドメインをホストするためのガイドを作成しました。その記事では、DKIMの署名と検証にAmavisを使用しました。私はOpenDKIMを使用しているので、その記事のステップ3をスキップする必要があります。
複数のドメイン用にOpenDKIMを構成するには、以下のように、署名テーブル、キーテーブル、およびトラステッドホストファイルに他のドメインを追加する必要があります。
署名表:
*@domain1.com 20200308._domainkey.domain1.com *@domain2.com 20200308._domainkey.domain2.com
キーテーブル:
20200308._domainkey.domain1.com domain1.com:20200308:/etc/opendkim/keys/domain1.com/20200308.private 20200308._domainkey.domain2.com domain2.com:20200308:/etc/opendkim/keys/domain2.com/20200308.private
信頼できるホスト:
127.0.0.1 localhost *.domain1.com *.domain2.com
次に、DKIM秘密鍵と公開鍵のペアを生成し、他のドメインの手順3、手順4、手順5で説明したように、DNSにDKIM公開鍵を追加します。 OpenDKIMを再起動すると、完了です。
sudo systemctl restart opendkim
次のステップ
このチュートリアルが、CentOS 8 /RHEL8メールサーバーへのOpenDKIMのインストールと構成に役立つことを願っています。次に、次のチュートリアルを読んで、電子メールのなりすましをブロックするようにOpenDMARCを設定することをお勧めします。
- 電子メールのなりすましをブロックするためにCentOS/RHELでPostfixを使用してOpenDMARCを設定する
いつものように、この投稿が役に立った場合は、無料のニュースレターを購読して、その他のヒントやコツを入手してください。気をつけて🙂