制限に関係なくすべてのメールを転送するPostfix

制限に関係なくすべてのメールを転送するPostfix

私は、メールがローカルホストから送信され、かつ特定のドメインに送信される場合にのみメールを中継するように Postfix を設定しようとしています。しかし、中継サーバーを指定するとすぐに、すべて (ローカル配信を除く) がそこに送信されます。制限が間違っていると思っていたので、最終的に「すべてを拒否」に設定しましたが、それでも通過します。mynetworksすべてをバイパスするかどうか疑問に思い、 undefined を実行しましたmynetworks。それでもすべてが中継されます。

この時点で、postconf -n次のようになります。

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
inet_interfaces = loopback-only
inet_protocols = all
mailbox_size_limit = 0
mydestination = host.domain.com, localhost.domain.com, localhost
myhostname = host.domain.com
mynetworks =
myorigin = /etc/mailname
readme_directory = no
recipient_delimiter = +
relay_domains = domain.com
relayhost = [mailserver.domain.com]:587
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_client_restrictions = reject
smtpd_recipient_restrictions = reject
smtpd_relay_restrictions = reject
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes

最初は次のようなことを試していました (何が違うのかを示す):

mydestination = host.domain.com, localhost.domain.com, localhost
myhostname = host.domain.com
mynetworks = 127.0.0.1 [::1]/128
smtpd_client_restrictions = permit_mynetworks reject
smtpd_recipient_restrictions = permit_auth_destination reject
smtpd_relay_restrictions = permit_auth_destination reject

困惑しています。トランスポート テーブルがありません。Postfix 2.11.0 (Ubuntu 14.04)。

答え1

リレーサーバーとは、Postfixの用語では、Postfixがすべての非ローカルメールを配信するサーバーです(たとえば、社内ネットワークのPostfixは、会社のメインメールサーバーをリレーとして定義し、宛先サーバーにまったく接続しないようにします)。これはメールを送信するためのもので、relayhost指令。

Postfixは、設定によってどのドメインが自分のドメインであるかを知っています。mydestinationディレクティブ。このリスト内のドメインはローカルに配信されます (正しい MX レコードがある場合)。

ホストmynetworksどこからでもどこにでもメールを送信できます。したがって、ここでは信頼するネットワークのみ (ローカルホストのみ、または内部ネットワーク) を設定する必要があります。postfix はこれらのホストからインターネットにメールを中継すると言われています。これは、値を持つsmtpd_relay_restrictions(またはsmtpd_recipient_restrictionsv2.10 以前)で設定されているデフォルト設定です。postfix構成から完全にpermit_mynetworks削除すると、パラメータは何も行いません。permit_mynetworksmynetworks

指令relay_domainsローカル以外のドメインの Postfix が全世界からのメールを受け入れるかどうかを制御します。これは通常、Postfix が何らかのドメインのバックアップ MX である場合に使用されます。


したがって、あなたの場合、設定はmynetworks空である必要があります(空にできない場合は、10.10.10.10 などのネットワークで使用されていない内部 IP を使用します)。またはpermit_mynetworksから削除smtpd_client_restrictions

relay_domains = domain.com
mydestination = host.domain.com localhost
relayhost = [mailserver.domain.com]:587

答え2

最終的に動作させたものがこれです。鍵は でdefault_transport = error、リレーに一致しないものはすべてバウンスされるようになりました。@Marki555 さん、smtpd 設定以外のことを考えさせてくれてありがとう。

default_transport = error
inet_interfaces = loopback-only
mydestination = host.domain.com, localhost.domain.com, localhost
myhostname = host.domain.com
mynetworks = 127.0.0.1 [::1]/128
relay_domains = domain.com
relay_transport = smtp
relayhost = [mailserver.domain.com]:587
smtpd_client_restrictions = permit_mynetworks reject
smtpd_recipient_restrictions = permit_auth_destination reject
smtpd_relay_restrictions = permit_auth_destination reject

もう 1 つの良い postfix デバッグのヒント: リレー ホストが変更されていないにもかかわらず、ローカル バウンス メッセージ (つまり、リレーがすぐに拒否された) にはリレー ホストの名前がまだ含まれています。

も調べてみましたmaster_service_disable = inetが、localhost:25 に接続してローカルメールの送信を処理するものが十分にあるため、あまり実用的ではありませんでした。

関連情報