以前の記事では、電子メールスパムをブロックするためのいくつかの効果的なヒントについて説明しました。このチュートリアルでは、CentOS /RHELでPostfixSMTPサーバーを使用してOpenDMARCをセットアップし、電子メールのなりすましやスパムをブロックする方法を示します。 OpenDMARCは、MTA(Message Transport Agent、別名SMTPサーバー)用のオープンソースDMARC電子メールポリシーフィルターです。
DMARCとは
DMARC(Domain-based Message Authentication、Reporting and Conformance)は、ドメイン所有者が自分のドメイン名が電子メールスプーファによって使用されるのを防ぐことを可能にするインターネット標準(RFC 7489)です。 DMARCが発明される前は、悪意のある人物が差出人アドレスで他の人のドメイン名を使用するのは非常に簡単です。
ドメイン所有者が自分のドメイン名のDMARCDNSレコードを作成し、受信メールサーバーがDMARC検証を実装した場合、悪意のあるユーザーはDMARC検証に合格するためにSPFアライメントまたはDKIMアライメントに合格する必要があります。 DMARCチェックが失敗した場合、なりすましメールが拒否される可能性があります。エンドユーザーに見られることはありません。ドメイン所有者のメールサーバーが危険にさらされない限り、悪意のある人物がSPFまたはDKIMを渡すことは困難です。
電子メールのなりすましの例
スパマーがwinsaaluminyumankara.com
を使用して身代金のメールを送ってくれました 差出人アドレス。 winsaaluminyumankara.com
のwhois情報 公開されています。明らかに、スパマーはこのドメイン名の責任者ではありません。
winsaaluminyumankara.com
DMARCレコードがあります。
次に、SPFが失敗したことを示す電子メールヘッダーを確認しました。 DKIM署名はありません。したがって、DMARCチェックは失敗します。これはなりすましメールです。
これは、大手ブランドが電子メールスプーファによって使用されているだけでなく、インターネット上のドメイン名が悪意のある人物によって偽装されている可能性があることを示しています。残念ながら、このドメイン名のDMARCポリシーは p =none
です。 、DMARCチェックが失敗した場合に受信メールサーバーに特別なことを何もしないように指示します。ポリシーがp=require
の場合 、その後、私のPostfixSMTPサーバーはOpenDMARCでこのメールを拒否します。
PaypalとFacebookはreject
を作成しました ドメイン名のDMARCポリシー。
したがって、悪意のある攻撃者がPaypalまたはFacebookをスプーフィングしようとすると、私の電子メールサーバーはOpenDMARCを使用してスプーフィングされた電子メールを拒否できます。 reject
をデプロイした他の多くのよく知られたドメイン名があります 下の表に示されているように、DMARCポリシー。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
安全なメールボックスプロバイダーであるProtonmailは、PostfixとOpenDMARCを使用して受信メールのDMARCチェックを実行しています。自分のPostfixSMTPサーバーで同じことを行う方法を紹介します。
前提条件
このチュートリアルは、メールボックスプロバイダーおよび独自のメールサーバーを実行するすべてのユーザーを対象としており、ユーザーが電子メールのなりすましに詐欺されるのを防ぎます。ドメイン名の所有者であり、ドメイン名が電子メールスプーファによって使用されないようにしたい場合は、この記事を読んでDMARCレコードを作成し、DMARCレポートを分析してください。 DMARCを完全に理解していない場合は、その記事を読むこともお勧めします。
OpenDMARCを設定する前に、メールサーバーでDKIM検証サービスを実行する必要があります。 OpenDMARCは、OpenDKIMと組み合わせて使用する必要があります。 Amavisを使用してDKIMの署名と検証を行う場合は、AmavisからOpenDKIMに切り替えることをお勧めします。これは、OpenDMARCがAmavisからのDKIM検証結果を読み取ることができないためです。 Amavisを完全にアンインストールする必要はありません。 AmavisでDKIMを無効にしてから、OpenDKIMをインストールして構成するだけです。
OpenDKIMに切り替えたくない場合は、milterインターフェースを介してAmavisをPostfixと統合する必要があります。これについては、この記事の最後で説明します。
ステップ1:CentOS/RHELにOpenDMARCをインストールして構成する
OpenDMARCは、DMARCチェックとレポートを実行できるオープンソースソフトウェアです。 EPELリポジトリからCentOS/RHELにインストールできます。
sudo dnf install epel-release sudo dnf install opendmarc
OpenDMARCを起動します。
sudo systemctl start opendmarc
起動時に自動起動を有効にします。
sudo systemctl enable opendmarc
OpenDMARCは127.0.0.1:8893
をリッスンします 。次のコマンドを実行して、ステータスを確認します。
systemctl status opendmarc
出力:
● opendmarc.service - Domain-based Message Authentication, Reporting & Conformance (DMARC) Milter Loaded: loaded (/usr/lib/systemd/system/opendmarc.service; enabled; vendor preset: disabled) Active: active (running) since Sun 2020-03-08 23:52:59 EDT; 1min 4s ago Docs: man:opendmarc(8) man:opendmarc.conf(5) man:opendmarc-import(8) man:opendmarc-reports(8) http://www.trusteddomain.org/opendmarc/ Main PID: 19987 (opendmarc) Tasks: 3 (limit: 5047) Memory: 1.1M CGroup: /system.slice/opendmarc.service └─19987 /usr/sbin/opendmarc -c /etc/opendmarc.conf -P /var/run/opendmarc/opendmarc.pid
次に、メインの構成ファイルをテキストエディタで編集します。
sudo nano /etc/opendmarc.conf
次の行を見つけます:
# AuthservID name
デフォルトでは、OpenDMARCはMTAホスト名をAuthserveIDとして使用しますが、Amavisd-newはOpenDMARCによって追加された認証結果ヘッダーを上書きするため、認証サービスには別の名前を使用することをお勧めします。次のように変更できます。これにより、どのプログラムがどの認証結果ヘッダーを追加するかを簡単に確認できます。
AuthservID OpenDMARC
次に、次の行を追加します。ホスト名を実際のPostfixホスト名に置き換えます。これにより、OpenDMARCは mail.yourdomain.com
で認証結果を信頼するようになります。 IDで。これは、OpenDKIMを実行してDKIM検証を行う場合に必要です。 Postfixホスト名がTrustedAuthservIDs
に含まれていない場合 の場合、OpenDMARCはOpenDKIMによって生成されたAuthentication-Resultsヘッダーを無視します。
TrustedAuthservIDs mail.yourdomain.com
次に、次の行を見つけます。
# IgnoreAuthenticatedClients false
値をtrue
に変更します SMTP AUTHを介して正常に認証されたSMTPクライアントを無視します。これには、ポート587を介して送信メールを送信するデスクトップ/モバイルメールクライアントが含まれます。
IgnoreAuthenticatedClients true
次に、次の行を見つけます:
# RejectFailures false
デフォルトでは、ドメインのポリシーが p =subject
に設定されている場合でも、OpenDMARCはDMARCチェックに失敗したメールを拒否しません。 。ドメインのポリシーがp=receive
に設定されているときに、DMARCチェックに失敗したメールを拒否する場合 、次にこの行のコメントを解除し、 false
を変更します true
に 。
RejectFailures true
次の行を見つけます。
# RequiredHeaders false
次のように変更します:
RequiredHeaders true
これにより、RFC5322で説明されている電子メールヘッダー標準に準拠していない電子メールが拒否されます。たとえば、受信メールに From:
がない場合 ヘッダーまたはdate:
ヘッダー、それは拒否されます。 A From:ドメイン名を抽出できなかったフィールドも拒否されます。
デフォルトでは、CentOS / RHEL上のOpenDMARCは、電子メールヘッダー内のSPF結果をすべて無視し、SPFチェック自体を実行します。これは、次の2つのパラメータによって制御されます。
SPFIgnoreResults true SPFSelfValidate true
メールサーバーで他のSPFチェックサービスを使用する場合は、OpenDMARCにメールヘッダーのSPF結果を信頼し、ヘッダーにSPF結果が見つからない場合にのみSPFチェックを実行するように指示します。
SPFIgnoreResults false SPFSelfValidate true
ファイルを保存して閉じます。次に、OpenDMARCを再起動して、変更を有効にします。
sudo systemctl restart opendmarc
ステップ2:OpenDMARCをPostfixSMTPサーバーと統合する
OpenDKIMを使用する場合
Postfixのメイン設定ファイルを編集します。
sudo nano /etc/postfix/main.cf
CentOS 8 / RHEL 8で私のDKIMチュートリアルに従った場合、このファイルには次のような行が含まれているはずです。 OpenDKIMは<code>127.0.0.1:8891をリッスンしています 。
# Milter configuration milter_default_action = accept milter_protocol = 6 smtpd_milters = inet:127.0.0.1:8891 non_smtpd_milters = $smtpd_milters
ここで、PostfixがOpenDMARCと通信できるように、OpenDMARCソケットを追加する必要があります。 (OpenDKIMソケットの後にあることを確認してください。)OpenDMARCは 127.0.0.1:8893
をリッスンします 。
# Milter configuration milter_default_action = accept milter_protocol = 6 smtpd_milters = inet:127.0.0.1:8891,inet:127.0.0.1:8893 non_smtpd_milters = $smtpd_milters
ファイルを保存して閉じます。次に、変更を有効にするためにPostfixを再起動します。
sudo systemctl restart postfix
Amavisを使用する場合
iRedMail のように、DKIMの署名と検証にAmavisを使用する場合 、その場合、OpenDMARCはAmavisからのDKIM検証結果を読み取ることができません。 OpenDKIMをインストールして、DKIM署名を検証できます。
EPEL(Enterprise Linux用の追加パッケージ)リポジトリからOpenDKIMをインストールします。
sudo dnf install epel-release sudo dnf install opendkim
デフォルトでは、 opendkim
CentOS / RHELのパッケージは、検証モードでのみ実行されます。送信メールにDKIM署名は追加されません。 AmavisがDKIM署名を追加するため、これが必要です。 OpenDKIM構成ファイルを編集します。
sudo nano /etc/opendkim.conf
次の行を見つけます。
KeyFile /etc/opendkim/keys/default.private
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,inet:127.0.0.1:8893 non_smtpd_milters = $smtpd_milters
ファイルを保存して閉じます。次に、 postfix
を追加します opendkim
へのユーザー グループ。
sudo gpasswd -a postfix opendkim
postfix
を再起動します サービス。
sudo systemctl restart postfix
これで、opendkimサービスを開始できます。
sudo systemctl start opendkim
また、起動時に自動起動を有効にします。
sudo systemctl enable opendkim
ステップ3:OpenDMARC検証のテスト
次に、他のメールアドレスからドメインアドレスにメールを送信します。その後、メールヘッダーを確認してください。 OpenDMARCが正しく機能している場合は、以下のようなDMARC検証結果を確認できます。
Authentication-Results: OpenDMARC; dmarc=pass (p=none dis=none) header.from=gmail.com
Gmailアカウントからドメインのメールアドレスにメールを送信しましたが、DMARC検証に合格しました。このメールヘッダーが表示されない場合は、メールログを確認してください。
sudo nano /var/log/maillog
以下のようなものが表示されます。これは、OpenDMARCが機能していることを意味します。
opendmarc[26495]: 61DAA3EA44: gmail.com pass
次のメッセージが表示された場合。
ignoring Authentication-Results at 1 from mail.linuxbabe.com
これは、OpenDMARCがSPFとDKIMの検証結果を無視しているため、OpenDMARCが機能していないことを意味します。 /etc/opendmarc.conf
に次の行を追加する必要があります ファイルを作成してから、OpenDMARCを再起動します。
TrustedAuthservIDs mail.yourdomain.com
Postfix myhostname
を変更した場合 パラメータ、TrustedAuthservIDsに新しいホスト名を追加することを忘れないでください。複数のホスト名をカンマで区切って追加できます。
TrustedAuthservIDs mail.yourdomain.com,mail2.yourdomain.com
Telnetを使用したOpenDMARCのテスト
telnetを使用して、paypal.comなどの別のドメイン名をスプーフィングできます。まず、次のコマンドを実行して、メールサーバーのポート25に接続します。
telnet mail.yourdomain.com 25
次に、次の手順を使用してなりすましメールを送信します。 (太字のテキストを入力します。)
HELO mail.paypal.com 250 mail.yourdomain.com MAIL FROM:<[email protected]> 250 2.1.0 Ok RCPT TO:<[email protected]> 250 2.1.5 Ok DATA 354 End data with <CR><LF>.<CR><LF> From: [email protected] To: [email protected] Subject: Please update your password. Click this link to update your password. . 550 5.7.1 rejected by DMARC policy for paypal.com quit
ご覧のとおり、私のメールサーバーはDMARCチェックに合格せず、Paypalが p =require
を導入したため、このメールを拒否しました。 ポリシー。
注: ドメインのDMARCポリシーがp=quarantine
に設定されている場合 、その後、OpenDMARCmilterはなりすましメールをPostifx hold queue に入れます 無期限に。ポストマスターは、 postqueue -p
を使用して、キュー内のすべてのメッセージを一覧表示できます。 コマンドを実行し、 postsuper
を使用します 保留キュー内のメッセージを解放するコマンドラインユーティリティ。
(オプション)Milterを介してAmavisとPostfixを統合する
前提条件のセクションで説明したように、AmavisからOpenDKIMに切り替えることをお勧めしますが、切り替えたくない場合は、OpenDMARCがAmavisからDKIM検証結果を読み取れるように、ミルターインターフェイスを介してAmavisをPostfixと統合する必要があります。
amavisd-milter
をインストールします CentOS/RHELのパッケージ。
sudo dnf install amavisd-milter
サービスを開始します。
sudo systemctl start amavisd-milter
起動時に自動起動を有効にします。
sudo systemctl enable amavisd-milter
Amavisd-milterは、 /run/amavisd/amavisd-milter.sock
にあるUnixソケットでリッスンします。 。 Postfixのメイン設定ファイルを編集します。
sudo nano /etc/postfix/main.cf
ファイルの最後に次の行を追加します。 OpenDMARCTCPソケットの前にamavisd-milterUnixソケットを配置する必要があることに注意してください。
# Milter configuration milter_default_action = accept milter_protocol = 6 smtpd_milters = unix:/run/amavisd/amavisd-milter.sock,inet:127.0.0.1:8893 non_smtpd_milters = $smtpd_milters
また、次の行をコメントアウトして、Postfixが受信メールをAmavisに2回渡さないようにします。
content_filter = smtp-amavis:[127.0.0.1]:10024
ファイルを保存して閉じます。次に、 postfix
を追加します amavis
へ グループなので、PostfixはAmavisUnixソケットにアクセスできるようになります。
sudo gpasswd -a postfix amavis
認証されたユーザーから送信された送信メールは、ミルターインターフェイスを介してAmavisに渡されるべきではありません。AmavisはDKIM署名を追加しないためです。 127.0.0.1:10026
を使用する必要があります いつものように、DKIM署名が追加されます。 Postfixmaster.cfファイルを編集します。
sudo nano /etc/postfix/master.cf
送信
を見つける 成分。 CentOS / RHELに関するAmavisチュートリアルに従った場合、次のようになります。
submission inet n - y - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_tls_wrappermode=no -o smtpd_sasl_auth_enable=yes -o smtpd_relay_restrictions=permit_sasl_authenticated,reject -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject -o smtpd_sasl_type=dovecot -o smtpd_sasl_path=private/auth -o content_filter=smtp-amavis:[127.0.0.1]:10026
最後に次のオプションを追加します。
-o smtpd_milters=
このように:
submission inet n - y - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_tls_wrappermode=no -o smtpd_sasl_auth_enable=yes -o smtpd_relay_restrictions=permit_sasl_authenticated,reject -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject -o smtpd_sasl_type=dovecot -o smtpd_sasl_path=private/auth -o content_filter=smtp-amavis:[127.0.0.1]:10026 -o smtpd_milters=
これにより、Postfix送信サービスはmilterをまったく使用しないため、認証されたユーザーから送信されたメールがmilterインターフェースを介してAmavisに渡されることはありません。等号(=)の前にスペースを追加しないでください。
この行もsmtps
に追加する必要があります コンポーネント。
smtps inet n - y - - smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject -o smtpd_sasl_type=dovecot -o smtpd_sasl_path=private/auth -o content_filter=smtp-amavis:[127.0.0.1]:10026 -o smtpd_milters=
ファイルを保存して閉じます。変更を有効にするには、Postfixを再起動します。
sudo systemctl restart postfix
これで、OpenDMARCはAmavisからDKIM検証結果を読み取ることができるようになり、Amavisは認証されたユーザーのDKIM署名を引き続き追加します。