web-dev-qa-db-ja.com

自分のドメインからのように偽装された受信メールをPostfixに拒否させる

私のドメインへの受信メールを許可し、他のネットワークにメールを送信するために認証を要求するようにPostfixサーバーを正しく構成しています。

私が受け取る多くのスパムには、自分のドメインに存在しないユーザーの「差出人」アドレスが偽造されています。 SPFはこれを停止する可能性があり、DNSでSPFを構成していますが、SMTPレベルですべてのSPF障害を完全にブロックするルートに進むかどうかはわかりません。

Mydomainからの認証されていない受信メールを拒否する追加できる簡単なPostfix構成項目はありますか?

具体的には、これは私のpostfix confです。

smtpd_relay_restrictions = permit_sasl_authenticated, reject_unauth_destination
smtpd_recipient_restrictions =
    permit_sasl_authenticated,
    reject_invalid_hostname,
    reject_non_fqdn_hostname,
    reject_non_fqdn_sender,
    reject_non_fqdn_recipient,
    reject_unknown_sender_domain,
    reject_unknown_recipient_domain,
    reject_rhsbl_sender dbl.spamhaus.org,
    permit
smtpd_sender_restrictions = reject_unknown_sender_domain
smtpd_helo_restrictions = reject_unknown_helo_hostname, reject_invalid_helo_hostname

それでも、ポート25に接続することは可能です。

MAIL FROM: [email protected] RCPT TO: [email protected]認証なし。

7
dataless

Postfixのメッセージ送信サービス(ポート587で)を有効にすると、「メッセージ送信からメッセージ送信を分離し、各サービスが独自のルール(セキュリティ、ポリシーなど)に従って動作できるようにします」( RFC 4409 )。

この構成では、正当なユーザーがメッセージの送信にポート587を使用するために認証する必要があるため、ポート25経由で送信された偽装された未認証のメールを安全に拒否できます。

ポート587で(SASL認証済み)メッセージ送信を有効にするには、次のようなセクションをPostfixのmaster.cfに追加します。

submission inet n - n - - smtpd
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth
  -o smtpd_sasl_security_options=noanonymous
  -o smtpd_sasl_local_domain=$myhostname
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o smtpd_sender_login_maps=hash:/etc/postfix/virtual
  -o smtpd_sender_restrictions=reject_sender_login_mismatch
  -o smtpd_recipient_restrictions=reject_non_fqdn_recipient,reject_unknown_recipient_domain,permit_sasl_authenticated,reject

ソース

次に、Postfixが特定の送信者に応答する方法を指定する Postfixアクセステーブル (/ etc/postfix/accessに)を作成します。

[email protected]    OK
[email protected]            HOLD
mydomain.com                               REJECT

詳細は access manページ を参照してください。

アクセスファイルでpostmapを実行します(インデックス付きルックアップテーブルを作成するため)。

postmap /etc/postfix/access

Main.cfに適切な 送信者の制限 を追加します。

smtpd_sender_restrictions = permit_sasl_authenticated,
        check_sender_access hash:/etc/postfix/access

最後に、新しい設定をリロードします。 Debianベースのシステムでは、これは以下を使用して行われます。

Sudo service postfix reload
7
ThatGuy

Mydomainからの認証されていない受信メールを拒否する追加できる簡単なPostfix構成項目はありますか?

それほど速くはありませんが、単純な SMTPd Policy を実装してsendersasl_usernameを選択し、最初のドメインがドメインからのものであり、2番目のドメインが存在するかどうかを確認できます。また、ドメインから取得されている場合は、DUNNOを返し、そうでない場合はREJECTを返します。このようにして、受信メールがユーザーからのものである場合は、SASL認証を受ける必要があります。

具体的には、これは私のpostfix confです。

smtpd_recipient_restrictionsポリシーに追加して、スパムを阻止し、同時にセキュリティを向上させることができる項目がいくつかあります。

smtpd_sender_restrictions =
    permit_mynetworks
    reject_unknown_sender_domain
    reject_sender_login_mismatch
    reject_unauth_pipelining
    reject_non_fqdn_sender
    permit

それぞれが Postfix構成パラメーター ページにあることを意味します。

スパムを防ぐために追加したい項目がいくつかあります。

  • SPFもその1つですが、実装が不十分なメールリストの一部は、サーバーから元の送信者アドレスで電子メールを送信して失敗することを念頭に置いて、一致しないテストをブロックすることは非常に重いことに同意します。

  • DKIMも非常に強力です(OpenDKIMを確認してください)。

  • SpamAssassinは、この場合veryが役立つ場合があります。メールはブロックされませんが、スパムヘッダーが追加されるため、分類されます。

  • これらのなりすましの試みのいずれかのPostfixメッセージを提供しませんでしたが、それらが同じIPアドレスまたは少なくとも具体的なCIDRアドレスから発信されたかどうかを確認し、smtpd_client_restrictionsパラメータを使用してブラックリストに入れることができます。

  • 同じことがHELO/EHLOメッセージに適用され、smtpd_helo_restrictionsに配置される場合があります。

ご覧のとおり、さまざまな方法があります。おそらく、ケースに適した組み合わせを見つけて、なりすましの試みをすべて阻止することができます。

8
nKn

私はそれを解決する1つの方法を見つけましたが、誰かがより直接的/単純な答えを持っているかどうか知りたいです。

reject_sender_login_mismatchif postfixが "FROM"アドレスからユーザー名へのマッピングを見つけることができるように設定するには、そのユーザー名が認証される必要があります。

次に、すべてのアドレス@mydomainを処理するが、ローカルユーザーが自分のアドレスにメールを正しく送信できるようにするマップを作成します。

私の特定の構成では、私は使用します

virtual_alias_maps = sqlite:/etc/postfix/db-public-alias.cf pcre:/etc/postfix/db-public-alias-regex.cf

アドレスを実際のユーザーにマッピングします。

別の住所データベースを追加しましたpcre:/etc/postfix/db-sender-logins-fallback.cfこれは、すべてのドメインからメインユーザーへの正規表現を持っています。だから今組み合わせると:

smtpd_sender_login_maps = sqlite:/etc/postfix/db-public-alias.cf pcre:/etc/postfix/db-public-alias-regex.cf pcre:/etc/postfix/db-sender-logins-fallback.cf
smtpd_sender_restrictions = reject_unknown_sender_domain, reject_sender_login_mismatch

すべてのエイリアスは、ルーティング先のユーザーからのみ送信できます。また、ドメインのその他すべてのアドレスは、メインユーザーアカウントからのみ送信できます。そのため、FROMを送信しようとするスパマー:ログに記録されていないため、ドメインは失敗します私のように。

これは私のメール設定の素晴らしい改善ですが(ローカルユーザーが互いに偽装することはできなくなりました)、非常に高度なユーザーアカウント設定をしている人にとっては複雑すぎる可能性があります。 「FROM:のこれらのドメインの場合、ユーザーはログインする必要がある」とだけ言う方法があるかどうか、私はまだ興味があります。

1
dataless

私のconf認証セクション。うまく機能します:

smtpd_sender_restrictions =
 reject_non_fqdn_sender
 reject_sender_login_mismatch
 reject_unknown_sender_domain
 reject_unauth_pipelining
 reject_non_fqdn_sender
 reject_unlisted_sender
 reject_unverified_sender
 permit_sasl_authenticated
 reject_unknown_reverse_client_hostname
 reject_unknown_client_hostname

smtpd_recipient_restrictions =
 permit_sasl_authenticated
 reject_unauth_destination
 reject_rbl_client            zen.spamhaus.org
 reject_rhsbl_reverse_client  dbl.spamhaus.org
 reject_rhsbl_helo            dbl.spamhaus.org
 reject_rhsbl_sender          dbl.spamhaus.org

smtpd_relay_restrictions =
 permit_sasl_authenticated
 reject_unauth_destination

smtpd_helo_required = yes
smtpd_helo_restrictions =
 permit_sasl_authenticated
 reject_invalid_helo_hostname
 reject_non_fqdn_helo_hostname
 reject_unknown_helo_hostname
0
Daniel Moreno