質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Dovecot

Dovecotとは、POPやIMAPサーバーを提供するMDA(メール配送エージェント)の一つです。

Postfix

Postfixは、電子メールサーバソフトウェアで、 メールを配送するシステムMTAの一種です。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

Q&A

解決済

1回答

598閲覧

なりすまし自ドメインメールアドレスからのメール受信を拒否したい

onikudaisukiman

総合スコア1

Dovecot

Dovecotとは、POPやIMAPサーバーを提供するMDA(メール配送エージェント)の一つです。

Postfix

Postfixは、電子メールサーバソフトウェアで、 メールを配送するシステムMTAの一種です。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

1グッド

1クリップ

投稿2023/11/12 06:10

編集2023/11/12 09:23

有識者のみなさま、お知恵をお貸しいただきたいです。。
よろしくお願いいたします。

実現したいこと

From、Toどちらも「〇〇@example.jp」と指定されたメールが、自身で管理しているメールサーバー(アカウント)へ届くことを
拒否したい。

前提

・CentOS7、postfix3、Dovecotの組み合わせで、送受信用メールサーバーを運用。
・バーチャルドメインを設定。
例:
〇〇@example.jp、△△@example.com

・各ドメインで、SPF・DKIM・DMARC設定済。
・なりすまし(スパムメール)のFrom・Toへ指定されている「〇〇@example.jp」は、自メールサーバー上へ存在するメールアドレス。
(「〇〇@example.jp」のメールを受信して、スパムメールに気づいた)

現在のpostfix、main.cfの設定

allow_min_user = yes disable_vrfy_command = yes smtpd_helo_required = yes allow_untrusted_routing = no smtpd_client_restrictions = permit_mynetworks,   check_client_access cidr:/etc/postfix/reject_client.cidr, reject_unknown_reverse_client_hostname smtpd_helo_restrictions = permit_mynetworks, reject_invalid_hostname smtpd_sender_restrictions = permit_mynetworks, reject_non_fqdn_sender, reject_unknown_sender_domain smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_recipient, reject_unauth_destination smtpd_sasl_auth_enable = yes smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth broken_sasl_auth_clients = yes smtpd_sasl_security_options = noanonymous

確認・試したこと

・自メールサーバーから、該当メールが送信されていない点を確認。
・送信元サーバーが、自メールサーバー以外となっている「〇〇@example.jp」を、Postfixの設定で拒否できないか?
設定を確認、これ、というものが見つけられず。

ikedas👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bsdfan

2023/11/12 22:59

postfixにSPF, DKIM, DMARCの設定を入れればいいのでは?
onikudaisukiman

2023/11/13 00:39

ありがとうございます! 3項目設定は対応済みでして、送信時にPASSしている点は確認しております。 (質問意図と外れた回答であれば、すみません、ご指摘いただければと思います) 送られてくるメールの、SPFを精査するサービス(pypolicyd-spf)が存在することは把握していたのですが、 DKIM・DMARCにも同様なサービスが存在する、精査が可能?ということでしょうか・・。
bsdfan

2023/11/13 00:52

自分が受け取るメールについての、SPF、DKIMのチェックはできていますか、という意味の質問でした。 自ドメインに限らず、他ドメインのメールアドレスのなりすましについて、現状どうなっているのでしょう?
onikudaisukiman

2023/11/13 01:18

ありがとうございます! 送られてくるメールに対してのチェックは未対応となります!
bsdfan

2023/11/13 01:49

いまノーチェックなんだったら、受信時の検証を導入するのがいいのではと思いました。(とりあえずSPFだけでも) SPF, DKIM に頼らず、自ドメインのなりすましだけを対策したいというのが希望なら、なんかやり方ありそうですが、私にはわかりません。
onikudaisukiman

2023/11/13 02:57

ありがとうございます! DKIMで制限が可能という点、今回ご指摘いただくまで把握できておらず、一般的にはできないもの?と 思っておりました・・。 (当初調べたのですが受信側の設定について見つけられておりませんでした) bsdfanさんからお話を受け、改めて調べて方法あることを知りました。ありがとうございます。 将来的にこちらの対応も視野へ入れて検討進めていこうと思います。
guest

回答1

0

ベストアンサー

SPF、DKIM、DMARCのDNSレコードを公開すれば自サイトにスパムなどが来なくなるわけではありません。そうではなく、公開した情報をもとに他のサイトではあなたのメールアドレスで送られてきたものが本当にあなたのサーバから送られてきたのかどうかを検証できるようになるので、あなたのメールアドレスを騙るメール送信者からのメールを拒否できるようになります。その間接的な結果として、あなたが出すメールが他のサイトからスパムと間違えられる可能性が減ります。

つまり、上記のDNSレコードを公開しただけではご質問のようなメールは止まりません。上で述べたような検証などの対策を何もしていないからです。

#1

ひとつの方法としては、他のサイトと同様に外部から送られてくるメッセージをSPFやDMARCの情報に基づいて検証することが考えられます。これには追加のソフトウェアが必要になります。

いずれの場合も、自サイトを騙る送信者だけではなくほかのサイトを騙るものも拒否できます。

ただし、これらの送信認証技術は万能ではありません。単純にSPFやDMARCの結果だけに従うと受け取るべきメッセージを拒否してしまう可能性があります。そのため一般的にはホワイトリストを用意してメンテナンスする必要があります (特にメーリングリストなどで転送されてくるものは誤って拒否されがちです。このような場合はARCへの対応が必要ですがまだあまり普及していません)。

また当然ですが、スパム送信者自身が正しいDNSレコードを公開していればこれらの検証は無力です。

ですので通常は、これらの送信者ドメイン認証の検証結果だけを見てメッセージを拒否したり受け入れたりするのではなく、DNSブロックリスト (DNSbl) などほかのさまざまな指標を組み合わせて判定します。

#2

上記のようなものではなく、当面「自ドメインの送信者を騙るものだけを拒否できればいい」ということなら、Postfixの設定だけで可能だと思います。(書きかけ。しばらくお待ちください)

(つづき)

ちょっと考えすぎだったようで、次のようにしてできました。

reject_final_destinations.hash

1mail.example.org reject 2...

main.cf

1... 2smtpd_recipient_restrictions = 3 permit_mynetworks, 4 permit_sasl_authenticated, 5 reject_non_fqdn_recipient, 6 reject_unauth_destination 7 check_sender_access hash:/etc/postfix/reject_final_destinations.hash 8...

mail.example.orgは自分のドメインです。自分のドメインが複数あるときは行を追加します。

Postfix 3.x以降ならインラインテーブルを使って次のようにも書けると思います。

main.cf

1... 2smtpd_recipient_restrictions = 3 permit_mynetworks, 4 permit_sasl_authenticated, 5 reject_non_fqdn_recipient, 6 reject_unauth_destination 7 check_sender_access inline:{ mail.example.org = reject, ... } 8...
  • permit_mynetworksで、自サイト内のリレーには制限がありません。
  • permit_sasl_authenticatedで、認証が成功したユーザによる送信も制限がありません (ただし、このままだと認証できたユーザはなりすましが可能なのでreject_sender_login_mismatchなどでチェックしたほうがいいと思いますが)。
  • 最後のreject_unauth_destinationでオープンリレーも防げています。
  • このあとに今回のルールを追加しています。ここまででsenderが自分のドメインであるようなものは上のいずれかのルールでokになっているはずなので、このルールまでたどり着いたものはrejectします。

#3

上の#2で当初の目的は達しているのですが、設定内容について若干補足します。

  1. smtpd_client_restrictionssmtpd_helo_restrictionssmtpd_sender_restrictionssmtpd_recipient_restrictionsのルールはそれぞれコネクション確立、EHLO (HELO) コマンド、MAILコマンド、RCPTコマンドの実行時に評価されるように見えますが、実際はsmtpd_delay_reject = yes (初期値ではそうなっています) のときは4つともRCPTコマンドの実行時に評価されます。
    (この動作がデフォルトになっているのは、かつてRCPTコマンドより前で拒否しても気づかずに通信を続けようとするクライアントがあったためだそうです。今日でもこの動作は、スパム送信者からのメッセージを拒否する前に少しだけ時間を無駄にさせる〔=スパム送信の能率が落ちる〕という効果が期待できるので望ましいです。)
    とにかく、上記4つのルールはsmtpd_recipient_restrictionsにまとめて書くことができます。

    • ただしcheck_client_accessで、テーブル引きの結果がOKとなる場合、それ以降のルールが無視されてしまいますから修正が必要です。OKとなるエントリは取り除くかDUNNOに書き換える必要があります。
  2. 実は、smtpd_recipient_restrictionsに書いてあるreject_unauth_destinationは実行されません。Postfix 2.10以降、smtpd_relay_restrictionsが導入されてsmtpd_recipient_restrictionsの直前に実行されるようになりました。smtpd_relay_restrictionsの初期値はpermit_mynetworks, permit_sasl_authenticated, defer_unauth_destinationであるため、オープンリレーの試みにはreject_unauth_destinationによる永続的エラー (554) ではなくdefer_unauth_destinationによる一時エラー (454) が返されます。554にしたいのなら修正が必要です。

  3. 上でも述べたように、permit_sasl_authenticatedだけでは認証成功したユーザがなりすましし放題ですから、reject_sender_login_mismatchなどを使って防ぐ必要があります。

結果として、つぎのようになります (3. は除く)。

... # オープンリレーの試みを一時エラー (454) ではなく永続的エラー (554) で拒否する場合 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination #smtpd_client_restrictions = #smtpd_helo_restrictions = #smtpd_sender_restrictions = smtpd_recipient_restrictions = permit_mynetworks check_client_access cidr:/etc/postfix/reject_client.cidr reject_unknown_reverse_client_hostname reject_invalid_helo_hostname reject_non_fqdn_sender reject_unknown_sender_domain permit_sasl_authenticated reject_non_fqdn_recipient #reject_unauth_destination #上記参照 check_sender_access hash:/etc/postfix/reject_final_destinations.hash #上行は Postfix 3.x以降では次のようにも書ける check_sender_access inline:{ mail.example.org = reject, ... } ...

投稿2023/11/13 01:59

編集2023/11/17 06:05
ikedas

総合スコア4337

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

onikudaisukiman

2023/11/13 03:01

ikedasさん そもその前提について、また取り得ることが可能な方法について、ご教示いただきありがとうございます。 今回の件の対応についての道が見えてきた気がします。 詳細な内容もご教示もいただけ大変ありがたいかぎりです・・・ありがとうございます。 将来的には、自ドメイン以外の対策(SPF・DMARC検証)も検討へ含めていきたいと考えました。 ただサービス追加、動作検証などで時間がかかりそうなため、 目下なところとしまして、PostFixで自ドメイン制限制限も可能なら、ぜひ対応したいと考えておりまして、 現在おまとめいただいている内容についても、たいへんお手数ですがお待ちしております‥!!
ikedas

2023/11/13 03:36

書きかけの部分は、「RESTRICTION_CLASS_README を読むと設定のヒントが書いてあります」という内容なのですが、実際の設定としてまとめるのに時間がかかりそうです。ご自分でやってみてうまくいったら教えてください (一応、オープンリレーになったりしていないか確認したいので、自分でできたというときも設定内容を自己回答として投稿してくださいね)。
onikudaisukiman

2023/11/13 04:09

ありがとうございます! 「RESTRICTION_CLASS_README」を読んで、自身でも進めてみます。 進めてみてうまくいきましたら、こちらでも共有書き込みいたします。 (ご丁寧に、ほんとうにありがとうございます・・)
onikudaisukiman

2023/11/16 07:40

ikedasさん、 返信遅くなり申し訳ありません! 具体的な方法の記述、追加のご教示いただきありがとうございます。 いただいたヒントもとに、自身でも考えていたのですが、追加いただいた内容へはまったく到達できておりませんでした。 今回いただいた内容もとに、引き続き設定・対応すすめてみまして、 また結果をこちらで共有させていただきます!
onikudaisukiman

2023/11/16 10:02

ikedasさん いただいた2つの方法、一つずつ試してみました。 現時点でどちらで進めても、うまく反映されていないようで、引き続きなりすましメール受信ができる状態です。 引き続き解決に向けてどのあたりを見ていけばよいか??、恐れ入ります、お知恵をお貸しいただけないでしょうか。 何度も申し訳ありません。 確認した内容、以下へ記載いたします。 内容に不足がありましたら、ご指摘くださいませ。 ### 対応したこと 1、対象メールサーバー、postfixへ設定追加(example.jpを追加) ・ファイルを作成。   /etc/postfix/reject_final_destinations を作成、db化をおこなう。   example.jp reject    ・postfixへ記述追加。 ```main.cf smtpd_recipient_restrictions =  :  check_sender_access hash:/etc/postfix/reject_final_destinations ```   postfix再起動。 2、別メールサーバーのメールアカウントから、FromとTo「test@example.jp」として、メール送信。   送信成功。対象メールサーバーでも、メール受信OK。 ### 試したこと。 ・postfixメールログを確認、エラー出ていない点を確認。(ファイル読み込みできていない、など) ・別メールサーバーのIPが、mynetwork、その他の設定(※)で許可されていないか?確認。  ※check_client_access cidr:/etc/postfix/reject_client.cidr など   ・作成したファイルに問題ないか?、切り分けのため「smtpd_sender_restrictions」へ「check_sender_access」追記。  test@example.jpのSMTP-AUTH設定をおこなっているメーラーから、test@example.jpへのメール送信NGとなった点を確認。  (=ファイル記載は大丈夫そう)
ikedas

2023/11/16 10:06

postmap /etc/postfix/reject_final_destinations は実行しましたか。
ikedas

2023/11/16 10:12

サーバのログで、次の点を確認できますか。 ・クライアント (送信元サーバ) のIPアドレスがmynetworks等に入っていないこと。 ・SMTP AUTHによる認証が行われていないこと。 ・fromとtoが自分のドメインのアドレスであること。
onikudaisukiman

2023/11/22 03:54

ikedas様 ご確認、また確認事項について、ありがとうございます‼️ また大変申しわけありません、ikedas様からご教示いただいた方法で すでにやりたいこと実現できておりました‼️ 設定追加あとのメール送信の際、Fromアドレス部分が想定どおり設定できていないまま、送信しておりました。きておりました。 (ということに、メールログを改めて確認して気づきました) というところで、 今回の当初の現したい内容すべて、ikedas様からの回答で解決いたしました。 詳細なご教示、追加事項のご確認など、大変助かりました。 本当にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問