
CentOS8 での Postfix (v3.3.1) のセットアップはほぼ完了しました。目標は次のとおりです。
- サービスが Linux ユーザーに電子メールを送信できるようにします。(root への crontab)
- Linux ユーザーのパブリックメールは受け付けません。([メールアドレス])
- Linux ユーザーを作成せずに、パブリック メールを受信するユーザーを定義します。
私は上記のことをなんとか達成しましたが、1 つの副作用があり、それを防ぐ方法がわかりません。これまでにやったことのいくつかは次のとおりです。
myhostname = server.foobar.com
mydomain = foobar.com
myorigin = $myhostname
mydestination = $myhostname, localhost
mail_spool_directory = /var/spool/mail
virtual_transport = virtual
virtual_mailbox_domains = foobar.com
virtual_mailbox_base = /var/spool/email/
このビットは、Postfixに、サービスからユーザに送信されたメールに$myhostnameが追加されることを伝えます([メールアドレス]) で送信され、標準のシステムメールに配信されます/var/spool/mail
。
ドメインのLinuxユーザーに送信されるすべてのメール[メールアドレス]仮想ドメインとして扱われ、仮想ユーザーを検索し、仮想ユーザーがいない場合は電子メールを拒否します。
仮想ユーザー(ウェブマスターなど)を追加すると、そのユーザーに送信される電子メール([メールアドレス]) が受け入れられ、配信され、/var/spool/email/...
パブリック メールがシステム メールから分離されます。
問題...
もし誰かが賢明にもホスト名([メールアドレス]) はインターネットから受け入れられ、 に配信されます/var/spool/mail
。これをブロックする方法がわかりません。
設定を試みましたdefault_transport = error:Domain doesn't accept email.
が、動作は変わりませんでした。ドキュメントではこの機能はサポートされていませんが、フォーラムで言及されていたので試してみました。
Linuxユーザーをuser@$myhostnameとして保持することは私にとって重要ではありません。これは、スパマーが攻撃するのを防ぐために、Linuxユーザーを同じドメイン名の仮想ユーザーから分離する方法を私が見つけることができた唯一の方法でした。[メールアドレス]、[メールアドレス]など
重要な場合のその他の構成設定:
html_directory = no
local_recipient_maps =
luser_relay = postmaster
mail_spool_directory = /var/spool/mail
meta_directory = /etc/postfix
mydestination = $myhostname, localhost
mydomain = foobar.com
myhostname = server.foobar.com
mynetworks_style = host
myorigin = $myhostname
relay_domains =
relayhost =
virtual_mailbox_base = /var/spool/email/
virtual_mailbox_domains = foobar.com
virtual_transport = virtual
これについて何かアイデアや別の方法はありますか?
答え1
解決策を見つけました。
myorigin = $myhostname
私の質問に記載されているように、同じドメイン上のローカル ユーザーと仮想ユーザーを分離する方法を維持します。
smtpd_recipient_restrictions
のセクションでmain.cf
、リストへのポインタをpermit_mynetworks
追加した後。 を使用した場合、次のようになります。check_recipient_access
hash:
# Don't include the "...", its just to show this is among other settings
smtpd_recipient_restrictions =
...
permit_mynetworks
check_recipient_access hash:/etc/postfix/block_mydomain
...
次にリスト/ハッシュファイルを作成します/etc/postfix/block_mydomain
hostname.domain.com 513 Invalid domain.
ファイルを保存して実行し、postmap block_mydomain
*.db バージョンを作成します。
その後、postfix を再起動すれsystemctl restart postfix
ば完了です。
私はテストしましたが、sendmailコマンドを使用してローカルのLinuxユーザーにメールを送信できます。crontabはローカルのLinuxユーザーにメールを送信できます。ただし、インターネットからメールを送信すると、[email protected]
バウンスされます。[メールアドレス]それでも受け入れられ、破棄されます。