サフィックス:ユーザーが同じドメイン内の他のユーザーを偽装します。

サフィックス:ユーザーが同じドメイン内の他のユーザーを偽装します。

Postfix Eメールサーバーが稼働していて、すべてが正常です...誰かが他のユーザーを偽装することを決定するまでです。現在の状況は次のとおりです。

偽のメールヘッダーには次のものがあります。

From: User2 <[email protected]>

(Authenticated sender: [email protected])

明らかに、ユーザーは合法的な電子メールアドレス/パスワードを使用してサーバーを認証し、偽装したいFromユーザーとしてヘッダーを設定しています。

私はこれを直接テストし、動作します。ただし、仮想ドメインテーブルにない他のドメインにドメインを変更すると、電子メールクライアントはサーバーが電子メールを拒否したと言います。

仮想ドメインテーブルの他の人ではなく、彼のEメールと一致するヘッダーを持つE[email protected]メールのみを送信できるようにする方法はありますか?from- ドメインがリストにないときに発生するのと同じエラーが発生します。

現在のsmtpd制限は次のとおりです。

smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, reject_unauth_pipelining, reject_unknown_sender_domain, reject_unknown_recipient_domain

smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_invalid_hostname, reject_rbl_client zen.spamhaus.org, reject_rbl_client bl.spamcop.net, reject_rbl_client cbl.abuseat.org

smtpd_sender_restrictions = permit_mynetworks, reject_unknown_address, reject_unknown_sender_domain, reject_non_fqdn_sender

ノート:サーバーに追加のアドレス(user1+something@ mydomain.dev電子メールを送信する[email protected]など)と仮想エイリアスマップがあります。上記の問題に対する解決策を投稿した人の場合は、ユーザーが自分のEメールをプラスアドレスまたはエイリアスに基づいて「なりすまし」できるかどうかを確認できます。その後、または[email protected][email protected]それらが属している場合のみ)から送信できる必要があります。

ありがとうございます。

答え1

@tarleb(私に正しい方向を教えてくれた)の貴重な助けを借りて、私は次の解決策を思いつきました。

  1. reject_sender_login_mismatchセクションの最後に追加しますsmtpd_sender_restrictions
  2. クエリはMySQLに virtual_mailbox_domains基づいていたので、追加しました。これは、送信者のログインEメールとフィールドが一致することを確認するためにpostfixによって使用されるマッピングです。virtual_alias_mapssmtpd_sender_login_maps = mysql:/etc/postfix/mysql-virtual_sender-login-maps.cffrom
  3. /etc/postfix/mysql-virtual_sender-login-maps.cf次のコンテンツにします。

    user = emailserveruser
    password = sdfjn1234ns
    hosts = 127.0.0.1
    dbname = mailstack
    query = SELECT * FROM (SELECT email FROM `virtual_users` WHERE email = '%s' UNION SELECT destination FROM `virtual_alias` WHERE source = '%s' ) a
    

どのように動作しますか?

FromPostfixは電子メールを提供します%sが、クエリ結果はSMTP認証に使用されたアドレスと一致するアドレスを受け取ります。

この場合、最初にvirtual_usersテーブルを照会し、そこから何も返されない場合(該当するEメー​​ルの実際のユーザーがいないことを意味します)、潜在的なEメールエイリアス(フィールド)は、ユーザーのEメールと一致するアドレス(実際)を取得するvirtual_aliasために照会します。destinationsource

一致するものがない場合、クエリは何も返しません。つまり、1)そのEメールのユーザーはいません。 2)そのEメールのユーザーのエイリアスはありません。 Postfix はメールクライアントにSender address rejected: not owned by userエラーを表示します。

関連情報