Postfixはネットワーク上でTo:mydestinationを拒否しますが、ローカルに送信した場合はそれを受け入れ、ネットワークはTo:virtual_mailbox_domainsを受け入れます。

Postfixはネットワーク上でTo:mydestinationを拒否しますが、ローカルに送信した場合はそれを受け入れ、ネットワークはTo:virtual_mailbox_domainsを受け入れます。

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_mynetworkscheck_recipient_accesshash:

# 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メール保護]それでも承認され廃棄されます。

関連情報