CentOS8にはほぼ完全なPostfix(v3.3.1)設定があります。私の目標は次のとおりです
- サービスがLinuxユーザーに電子メールを送信できるようにします。 (crontabからrootへ)
- Linux ユーザーの公開メールは許可されません。 ([Eメール保護])
- Linuxユーザーを作成せずに公開電子メールを受信するユーザーを定義します。
上記の作業は成功しましたが、どのように予防するのかわからない副作用があります。これまでに私がしたこと:
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([Eメール保護])標準システムEメールで送信されます/var/spool/mail
。
ドメインのLinuxユーザーに送信されたすべてのメール[Eメール保護]仮想ドメインとして扱われ、仮想ユーザーを参照し、そうでない場合は電子メールを拒否します。
ダミーユーザー(ウェブサイト管理者など)を追加すると、そのユーザーに送信されるすべての電子メール([Eメール保護]) が承認され、/var/spool/email/...
システムメールとは別の公開メールで送信されます。
質問...
誰でもホスト名([Eメール保護])インターネットから受け入れられてに転送されるのを/var/spool/mail
やめる方法がわかりません。
設定しようとしましたが、default_transport = error:Domain doesn't accept email.
動作は変わりません。ドキュメントはこの機能をサポートしていませんが、フォーラムで見てみました。
Linuxユーザーをuser@ $ myhostnameに保つことは私にとって重要ではありません。これは、スパマーを防ぐためにLinuxユーザーを同じドメインのダミーユーザーから分離する方法を理解する唯一の方法です。[Eメール保護]、[Eメール保護]、等。
追加の構成設定(重要な場合):
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]
返送されます。知りたいなら[Eメール保護]それでも承認され廃棄されます。