私のドメインへの受信メールを許可し、他のネットワークにメールを送信するために認証を要求するように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]
認証なし。
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
Mydomainからの認証されていない受信メールを拒否する追加できる簡単なPostfix構成項目はありますか?
それほど速くはありませんが、単純な SMTPd Policy を実装してsender
とsasl_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
に配置される場合があります。
ご覧のとおり、さまざまな方法があります。おそらく、ケースに適した組み合わせを見つけて、なりすましの試みをすべて阻止することができます。
私はそれを解決する1つの方法を見つけましたが、誰かがより直接的/単純な答えを持っているかどうか知りたいです。
reject_sender_login_mismatch
if 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:のこれらのドメインの場合、ユーザーはログインする必要がある」とだけ言う方法があるかどうか、私はまだ興味があります。
私の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