GNU/Linux >> Linux の 問題 >  >> Cent OS

パート4:CentOS 8 /RHEL8メールサーバーでPostfixを使用してSPFとDKIMをセットアップする

パート1とパート2を完了すると、PostfixSMTPサーバーとDovecotIMAPサーバーが機能するようになります。デスクトップメールクライアントを使用してメールを送受信できます。正しいMXを作成しましたが 、 A およびPTR 記録、私のメールはGmailとOutlookメールによってスパムとしてフラグが立てられました。そのため、このパートでは、CentOS / RHELサーバーでSPFとDKIMを設定することにより、受信者の受信トレイへのメール配信を改善する方法を見ていきます。

SPFおよびDKIMレコードとは何ですか?

SPFとDKIMはDNSの2種類のTXTレコードであり、電子メールのなりすましを防ぎ、正当な電子メールをスパムフォルダではなく受信者の受信トレイに配信するのに役立ちます。ドメインが電子メールのなりすましによって悪用された場合、受信者があなたをアドレスブックに追加していなければ、電子メールは受信者のスパムフォルダに届く可能性があります。

SPF (Sender Policy Framework)レコードは、ドメインに代わってメールを送信できるホストまたはIPアドレスを指定します 。自分のメールサーバーまたはISPのサーバーのみがドメインのメールを送信できるようにする必要があります。

DKIM (DomainKeys Identified Mail)は、秘密鍵を使用してドメインから送信されたメールに署名を追加します 。受信SMTPサーバーは、ドメインのDNSレコードで公開されている対応する公開鍵を使用して署名を検証します。

DNSでSPFレコードを作成する

DNS管理インターフェイスで、次のような新しいTXTレコードを作成します。

TXT  @   v=spf1 mx ~all

場所:

  • TXT これがTXTレコードであることを示します。
  • @と入力します 名前フィールドに、apexドメイン名を表します。
  • v =spf1 これがSPFレコードであり、SPFレコードのバージョンがSPF1であることを示します。
  • mx MXレコードにリストされているすべてのホストがドメインにメールを送信することを許可され、他のすべてのホストは許可されないことを意味します。
  • 〜すべて ドメインからのメールは、SPFレコードで指定されたホストからのみ送信される必要があることを示します。他のホストから送信された電子メールには、信頼できないものとしてフラグが付けられます。可能な代替案は+allです 、-すべて?all 、しかしそれらはめったに使用されません。

-すべて つまり、許可されていないホストから送信された電子メールは拒否され、受信者の受信トレイやスパムフォルダに届かないようにする必要があります。 facebook.comで使用されているのを見たことがありますが、通常、このような厳格なポリシーは必要ありません。

-all と考える人もいるかもしれませんが、 信頼できないホストからの電子メールを拒否するので、より良いでしょう。ええと、 -allを使用します SPFポリシーで、受信者に2つのSMTPサーバーがあり、メインのSMTPサーバーがオフラインになると、自分の電子メールが拒否される可能性があります。電子メールは一時的にバックアップSMTPサーバーに保存されます。メインSMTPサーバーがオンラインに戻ると、電子メールはバックアップSMTPサーバーからメインSMTPサーバーに中継されます。 SPFポリシーに受信者のバックアップSMTPサーバーをリストしなかったため、電子メールは受信者のメインSMTPサーバーによって拒否されます。したがって、〜allを使用する必要があります SPFポリシーで。

一部のDNSマネージャーでは、SPFレコードを以下のように二重引用符で囲む必要があることに注意してください。

TXT  @   "v=spf1 mx ~all"

SPFレコードがパブリックインターネットに伝播されているかどうかを確認するには、 digを使用できます 以下のようなLinuxボックスのユーティリティ。 (CentOS / RHELでは、 bind-utilsをインストールする必要があります digを使用するためのパッケージ コマンド: sudo dnf install bind-utils 。)

dig your-domain.com txt

txt オプションはdigに指示します TXTレコードのみをクエリしたいということです。

オンラインのSPFバリデーターを使用することもできます spf.myisp.chなどを使用して、ドメインに電子メールを送信できるホストを確認し、エラーが発生した場合にSPFレコードをデバッグします。 dmarcian SPFサーベイヤーは、SPFレコード構文のテストに役立ちます。

SPFポリシーエージェントの構成

また、Postfix SMTPサーバーに、受信メールのSPFレコードをチェックして、偽造されたメールを検出するように指示する必要があります。必要なパッケージを最初にインストールします:

sudo dnf install epel-release

sudo dnf install pypolicyd-spf

次に、policyd-spfのユーザーを追加します。

sudo adduser policyd-spf --user-group --no-create-home -s /bin/false

Postfixマスタープロセス設定ファイルを編集します。

sudo nano /etc/postfix/master.cf

ファイルの最後に次の行を追加します。これにより、PostfixはSPFポリシーデーモンが起動したときに起動するように指示されます。 Policyd-spfはpolicyd-spfとして実行されます ユーザー。

policyd-spf  unix  -       n       n       -       0       spawn
    user=policyd-spf argv=/usr/libexec/postfix/policyd-spf

:chroot環境でpolicyd-spfを実行しないでください。

ファイルを保存して閉じます。次に、Postfixメイン設定ファイルを編集します。

sudo nano /etc/postfix/main.cf

ファイルの最後に次の行を追加します。最初の行は、Postfixポリシーエージェントのタイムアウト設定(DNSのクエリ用)を指定します。次の行は、SPFレコードをチェックすることにより、受信メールに制限を課します。

policyd-spf_time_limit = 3600
smtpd_recipient_restrictions =
   permit_mynetworks,
   permit_sasl_authenticated,
   reject_unauth_destination,
   check_policy_service unix:private/policyd-spf

ファイルを保存して閉じます。次に、Postfixを再起動します。

sudo systemctl restart postfix

次回、SPFレコードを持つドメインからメールを受信すると、生のメールヘッダーでSPFチェックの結果を確認できます。次のヘッダーは、送信者が承認されたホストからメールを送信したことを示しています。

Received-SPF: Pass (mailfrom) identity=mailfrom;

DKIMのセットアップ

LinuxでDKIMの署名と検証を実行できる2つの一般的なソフトウェアは、OpenDKIMとAmavisです。 OpenDKIMは軽量であり、OpenDMARCはAmavisで動作しないため、ここで使用します。

CentOS 8/RHEL8にOpenDKIMをインストールして構成する

EPEL(Enterprise Linux用の追加パッケージ)リポジトリからOpenDKIMをインストールします。

sudo dnf install epel-release

sudo dnf install opendkim perl-Getopt-Long

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

ファイルを保存して閉じます。

署名テーブル、キーテーブル、信頼できるホストファイルを作成する

署名テーブルを編集します ファイル。

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

ファイルを保存して閉じます。

プライベート/パブリックキーペアを生成する

DKIMは送信メッセージの署名と受信メッセージの検証に使用されるため、送信電子メールに署名するための秘密鍵と、電子メールのDKIM署名を検証するためのSMTPサーバーを受信するための公開鍵を生成する必要があります。公開鍵は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

DNSレコードで公開鍵を公開する

公開鍵を表示する

sudo cat /etc/opendkim/keys/your-domain.com/20200308.txt

pの後の文字列 パラメータは公開鍵です。

DNSマネージャーで、TXTレコードを作成し、 20200308._domainkeyと入力します 名前フィールドに。 (20200308を独自のDKIMセレクターに置き換える必要があります。)次に、ターミナルウィンドウに戻り、括弧内のすべてをコピーして、DNSレコードの値フィールドに貼り付けます。値フィールドのすべての二重引用符と改行を削除する必要があります。それらを削除しないと、次のステップのキーテストはおそらく失敗します。

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をリッスンします 。

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

SPFおよびDKIMチェック

これで、メールサーバーからGmailアカウントにテストメールを送信して、SPFとDKIMのチェックに合格したかどうかを確認できます。 Gmailで開いたメールメッセージの右側で、[ show original ]をクリックすると、 ドロップダウンメニューのボタンをクリックすると、認証結果を確認できます。

メッセージが署名されておらず、DKIMチェックが失敗した場合は、postfixログ( / var / log / maillog )をチェックすることをお勧めします )構成の何が問題になっているのかを確認します。メールサーバーは、送信者のドメインでSPFと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: mail.linuxbabe.com;
	dkim=pass (2048-bit key; unprotected) header.d=gmail.com [email protected] header.b="XWMRd2co";
	dkim-atps=neutral

メールのスコアと配置のテスト

これで、https://www.mail-tester.comにアクセスできます。一意のメールアドレスが表示されます。ドメインからこのアドレスにメールを送信してから、スコアを確認してください。ご覧のとおり、満点です。

Mail-tester.comは、送信者のスコアのみを表示できます。 GlockAppsと呼ばれる別のサービスがあり、メールが受信者の受信トレイまたはスパムフォルダに配置されているか、完全に拒否されているかを確認できます。 Gmail、Outlook、Hotmail、YahooMail、iCloudメールなどの多くの人気のあるメールプロバイダーをサポートしています

Microsoftメールボックス(Hotmail.com、Outlook.com)

Microsoftは、多くの正当なIPアドレスをブロックする内部ブラックリストを使用しているようです。 OutlookまたはHotmailによって電子メールが拒否された場合は、送信者情報フォームを送信する必要があります。その後、あなたの電子メールはoutlook / hotmailによって受け入れられますが、それでもスパムとしてラベル付けされる可能性があります。私のテストでは、メールはGmailの受信トレイに届きました。ただし、SPFとDKIMの両方が渡されたとしても、outlook.comの電子メールではスパムとしてラベル付けされたままです。

メールがまだスパムとしてマークされている場合はどうなりますか?

この記事には、さらに多くのヒントがあります。メールがスパムとしてマークされるのを防ぐ方法。

次のステップ

パート5では、ドメインを電子メールのなりすましから保護するためにDMARCレコードを作成する方法を説明します。いつものように、この投稿が役に立った場合は、無料のニュースレターを購読して、より役立つ記事を受け取るか、TwitterまたはFacebookページでフォローしてください。


Cent OS
  1. CentOS6VPSにDKIMをOpenDKIMおよびPostfixとインストールして統合する方法

  2. CentOS7でPostfixAdminとMariaDBを使用してメールサーバーをセットアップする

  3. CentOS7でPostfixAdminを使用してメールサーバーを設定する方法

  1. RHEL 8 /CentOS8にpostfixメールサーバーをインストールする方法

  2. CentOS8にPostfixメールサーバーをインストールして設定する方法

  3. 完璧なサーバー– Apache2、Postfix、Dovecot、Pure-FTPD、BIND、ISPConfig3を搭載したCentOS7.1

  1. Apache、Postfix、Dovecot、Pure-FTPD、BIND、およびISPConfig3.1を備えたPerfectServer CentOS 7.2

  2. Apache、Postfix、Dovecot、Pure-FTPD、BIND、およびISPConfig3.1を備えたPerfectServer CentOS 7.3

  3. Apache、Postfix、Dovecot、Pure-FTPD、BIND、ISPConfig3.1を搭載したPerfectServer CentOS 7.4