私のpostfix電子メールサーバーはついに正しく動作します。
これで、ユーザーがヘッダーの「送信者」フィールドにあるクライアントプログラムから自分のEメールアドレスを偽造するのを防ぐ必要があります。ユーザーはそのアドレスを使用して他のユーザーとして電子メールを送信でき、経験のないユーザーはこれが本当であると考えることができます。
ユーザーが経験を積んでいる場合は、電子メールヘッダーを確認して何が起こっているのかを知ることができますが、この動作を防ぐ方法はありますか?
答え1
表示smtpd_sender_restrictions
とsmtpd_sender_login_maps
設定。前者は間違ったfrom
アドレスを防止しますが、後者は送信者アドレスをログイン名と一致させるようにします。
# Prevent malformed senders
smtpd_sender_restrictions =
reject_non_fqdn_sender # Ensure correct mail addresses
reject_unknown_sender_domain # Ensure sender address is from an existing domain
reject_authenticated_sender_login_mismatch # Check if the user is
# allowed to use this sender address
# Maps used to stop sender address forgeries.
smtpd_sender_login_maps = pcre:/etc/postfix/login_maps.pcre
内容はlogin_maps.pcre
次のとおりです。
# Use this regex if your users are local users, i.e. if the login name
# is just the username, not a full mail address.
# Note that literal dots have to be backslash escaped (`\.`) to avoid
# interpretation of these dots as regex wildcard.
/^([^@+]*)(\+[^@]*)?@example\.com$/ ${1}
# If one doesn't care about subaddresses, this could be simplified to
/^(.*)@example\.com/ ${1}
# This is appropriate if you have virtual users who login with their
# full mail address as their username. Local addresses won't work, though
/^(.*)$/ ${1}
上記の構成では、postfix が PCRE サポートでコンパイルされると仮定します。 Ubuntu / Debianではpostfix-pcre
パッケージをインストールする必要があります。
これは、ユーザーが認証されてメールを送信できる場合にのみ機能します。上記の方法は、認証されていないユーザーからのメールを許可すると役に立たず、失敗します。この場合は、Rui F Ribeiroの回答を必ずお読みください。
答え2
SMTP偽造を防ぐ方法はなく、基本プロトコルはセキュリティを念頭に置いて設計されていませんが、postfixの内部ユーザーの電子メール偽造による影響を最小限に抑えることができます。
ポート587を介して送信された電子メールが認証されるように強制的に認証するようにpostfixとクライアントを設定できます。
ただし、これにより電子メールの送信が中断されることはありませんが、スパムマルウェアが生き残るのが難しくなります(不可能ではありません)。
Gmailの場合は、コードのカスタマイズが多く、独自のメールサーバーもあります。 ISPを管理するときに、私たちのドメインから送信されていないEメールを転送することを許可せず、FROMフィールドに存在する認証されたユーザーのみを許可するQMail拡張機能を収集して作成しました(たとえば、FROMジョブを再確認します)。認証)
/etc/postfix/main.cf
smtpd_recipient_restrictions
postfixで認証されたユーザーにのみ電子メールを中継するには、ディレクティブの先頭にあるファイルに次の2つのオプションがあることを確認してください。
smtpd_recipient_restrictions = permit_sasl_authenticated, reject_unauth_destination
詳しくは公式文書をご覧ください。Postfix SMTPリレーとアクセス制御
答え3
MAIL FROM
SMTP経由で電子メールを送信すると、送信者の電子メールアドレスはSMTP要求と電子メールFrom
ヘッダーフィールドの2つの場所に表示されます。一部のMUAは、メッセージヘッダーフィールドの値のみを表示しますFrom
。
MAIL FROM
封筒アドレス偽造防止
SMTP認証ユーザーが送信者アドレスを偽造するのを防ぐには、reject_authenticated_sender_login_mismatch
のオプションを使用します。/etc/postfix/main.cf
その後、smtpd_sender_login_maps
次の調整も行われます。
smtpd_sender_restrictions =
...
reject_authenticated_sender_login_mismatch,
...
smtpd_sender_login_maps = pcre:/etc/postfix/maps/smtpd_sender_login_map.pcre
内容は/etc/postfix/maps/smtpd_sender_login_map.pcre
以下に基づいている必要があります。タレブの答え:
ユーザーがローカルの場合は、この正規表現を使用してください。つまり、ログインは完全な電子メールアドレスではなくユーザー名にすぎません。
\.
これらの点が正規表現のワイルドカードとして解釈されるのを防ぐために、リテラル点をバックスラッシュ()にエスケープする必要があります。
/^([^@+]*)(\+[^@]*)?@example\.com$/ ${1}
サブアドレスに興味がない場合は、次のように単純化できます。
/^(.*)@example\.com/ ${1}
これは、電子メールアドレス全体をユーザー名としてログインする仮想ユーザーがいる場合に適しています。しかし、ローカルアドレスは機能しません。
/^(.*)$/ ${1}
上記の構成では、postfix が PCRE サポートでコンパイルされると仮定します。 Ubuntu / Debianでは
postfix-pcre
パッケージをインストールする必要があります。
このsendmail
コマンドを使用すると、ローカルユーザーが送信するときにアドレスリストから任意のアドレスを選択できます。これはハッキングされたユーザーアカウントに問題があります。おそらくこの問題を解決する最も簡単な方法は、Postfix 'でsendmailコマンドの使用を制限することですmain.cf
。たとえば、次のようになります。
authorized_submit_users = root
From
偽造された電子メールヘッダーアドレスの防止
Postfix自体は単純な解決策を提供していないようです。ただし、次の方法で実行できます。ここ。
~のためスパム/etc/rspamd.local.lua
、次のコードを使用して構成ファイルを作成/拡張できます。
local logger = require 'rspamd_logger'
rspamd_config:register_symbol({
name = 'FROM_HEADER_MISMATCH',
callback = function(task)
local user = task:get_user()
if not user then
return 0
end
for index, smtp_sender in pairs(task:get_from(1)) do
if smtp_sender.addr ~= user then
logger.infox('invalid SMTP sender: %1', smtp_sender.addr)
return 1
end
end
for index, mime_sender in pairs(task:get_from(2)) do
if mime_sender.addr ~= user then
logger.infox('invalid MIME sender: %1', mime_sender.addr)
return 1
end
end
return 0
end,
score = 16,
description = 'sender address in at least one mail header ' ..
'differs from the sender address in the envelope'
})
これにより、複数の送信者アドレスを持つメッセージがスパムとしてマークされ、Postfixがメッセージを拒否します。エンベロープヘッダを偽造できない場合にのみ、エンベロープヘッダの偽造を防ぎますFrom
(解答の最初の部分を参照)。
またはミルトフリードマンFrom
メッセージヘッダーのアドレスをSMTPアドレスに置き換えることもできますMAIL FROM
。