web-dev-qa-db-ja.com

後置:sender_dependent_default_transport_mapsが有効になっているときに送信メッセージ(smtp)を制限するにはどうすればよいですか?

過去7日間に私が扱っている次の問題について誰かが私に提案することができればありがたく、感謝します。

現状:

5つのドメイン名をホストする1つの稼働中のメールサーバー(コロケーション)(いいえ、私たちはホスティング会社ではありませんが、それは子会社のドメイン名です)。3つのIPアドレスがあります。

  • OS:Centos 7
  • MTA:仮想メールボックス/ユーザーを含むPostfixバージョン2.10.1の単一インスタンス

現在のメールサーバーは、前述の5つのドメインを持つ仮想ユーザー/メールボックスで適切に動作し、gfixeアカウントまたはyahooビジネスメールまたはMicrosoft 365ユーザーによってスパムとしてマークされないようにする、非常にうまく機能するpostfixレート制限があります。

しかし、これらの新しいエキサイティングな要件があります:)

経営陣からの新しい要件:

  • 4つのドメインは、現在のメインIPアドレスで送信する必要があります。例:1.2.3.4.5.11
  • メッセージを送信するときに、1つのドメインを1.2.3.4.5.22などの別の追加IPアドレスに適用する必要があります。
  • 次に、レート制限も適用する必要があります。

gmail.com polite: yahoo.com polite: hotmail.com turtle: live.fr turtle: orange.fr turtle:

これまで成功したこと:

  • Main.cfファイルでtransport_mapsを使用して適用されたレート制限
  • Main.cfファイルでsender_dependent_default_transport_mapsを有効にして、目的の1つのドメインのIPアドレスを異なるIPアドレス(1.2.3.4.5.22)を使用して送信するように切り替えます。このプローブは肯定的で期待される結果をもたらしました。その1つのドメインで送信するときにIPが意図したとおりに追加のIPに変更され、他のドメインでは通常どおりデフォルトのIPが使用されました。すべてに有効なSPFおよびDKIM検証があります(自分の無料のGmailアカウントにメールを送信してテスト済み)。

私があなたの提案を尋ねることによって理解しようとしている問題:

sender_dependent_default_transport_mapstransport_mapsと一緒に使用すると、Postfixがtransport_mapsを無視しているように見えるため、両方を同時に実行することはできません。したがって、レート制限があります。動作しません。

私の質問は:

  • Main.cfでsender_dependent_default_transport_mapstransport_mapsと連携させることは可能ですか?

  • 可能であれば、それを機能させる方法は?

私が以前に何かをしたり、検索したりしていないことを誤解しないでください。私はこれとそれをネットで検索して試しましたが、それでも2つを一緒に機能させることに成功しなかったという事実、それで私はここで助けを求めています(願わくば!)。

どうもありがとうございました!

私のmain.cfには基本的にrelayhostもrelay_domainsもありません、私が尋ねようとしているのはこの行です:

transport_maps = hash:/etc/postfix/transport

そして

sender_dependent_default_transport_maps = hash:/etc/postfix/sender_dependent_transport_maps

両方を一緒に動作させることはできませんが、1つがコメントされると、それぞれを個別に動作させることができます。これが後置の動作であるかどうかはわかりません。通常、後置では何でも可能です:)...常に方法があります(私は後置に誠意を持っています)

3
busythomas

@Wardという名前のニースの人からの提案に従って、上記の問題を解決するために私が行った方法は次のとおりです。

私の前の質問への短い答えは:

残念ながら、sender_dependent_default_transport_mapsが有効になっている間は、transport_mapsを使用して送信メッセージ(smtp)を制限することはできません。 (boooo ...、ええ、私は知っています)。後置チェックを行ってエラーが見つからなかった場合でも、アクティブなアイテムの1つである必要がありますが、そのようには機能しません。

また、あなたがこの長い答えを読むためにもっと時間を無駄にしないと感じて、私がそれを思いついた方法についてもっと知りたいと思ったら、次の答えを読んでください...私は主にトライアルエラーの最中に気づき、ここに投稿する方法を見つけたとき、このPostfixセットアップのことをあきらめずに続けていくように自分自身を動機付けました:P。

[2018年10月27日更新]この問題についてはまだ助けを求めていますが、コースの進行状況があります:

そのため、@ PeterZhabinの提案に従って、別のpostfixインスタンスをセットアップしましたが、postfix実行の2番目のインスタンスを正常にセットアップしました。

続行する前に、使用しないことにしたことをお知らせしますsender_dependent_default_transport_maps。 postfixの複数のインスタンスが実行されており、各postfixインスタンスが独自のmain.cfとmaster.cfを持つ可能性がある環境で、これを再度使用することは意味がないと思いました。したがって、両方の接尾辞インスタンスにsender_dependent_default_transport_mapsを使用し、transport_mapsを使用するオプションを削除しました。

はい、インストールは成功しました。ほんの数グリッチだけでいいのですが...グリッチの原因は私もAmavisdを使用しているためです。そのため、これを実行する方法について、皆さんからのアドバイスが必要です。

今後ともよろしくお願いいたします。今後ともよろしくお願いいたします。本当にありがとうございました。

それでは、プロセスを続けましょう...

POSTFIXの複数のインスタンス

以下は、このトピックにのみ関連して変更した構成です。

これは/etc/postfix/main.cfのmain.cfです(最初のpostfixインスタンス):

_inet_interfaces = 1.2.3.4.5.11
myhostname = mail.thecompany.com
multi_instance_wrapper = ${command_directory}/postmulti -p --
multi_instance_enable = yes
multi_instance_directories = /etc/postfix-second
_

これが/etc/postfix-second/main.cfのmain.cfです(2番目のpostfixインスタンス):

_inet_interfaces = localhost, 1.2.3.4.5.22
myhostname = mail2.thecompany.com
syslog_name = postfix-second
#master_service_disable = inet
#authorized_submit_users =
multi_instance_group = postfix
multi_instance_name = postfix-second
multi_instance_enable = yes
smtp_bind_address = 1.2.3.4.5.22
_

そして/etc/postfix-second/master.cf:

次の行の最初の接尾辞インスタンスと競合しないように行を変更しました。

_127.0.0.1:10025 inet n - - - - smtpd_

_1.2.3.4.5.22:10025 inet n - - - - smtpd_

したがって、/ etc/postfix-second/master.cfのこのセクションはすべて次のようになります。

_#127.0.0.1:10025 inet n - - - - smtpd
1.2.3.4.5.22:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8,1.2.3.4.5.22
        -o strict_rfc821_envelopes=yes
        -o smtpd_error_sleep_time=0
        -o smtpd_soft_error_limit=1001
        -o smtpd_hard_error_limit=1000
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
_

次に、2番目のIPを/etc/amavisd/amavisd.confに追加したので、Blocked-MTAエラーは発生しません。

@inet_acl = qw( 127.0.0.1 [::1] 1.2.3.4.5.22);

DNSを更新し、mail2.thecompany.comと一致する逆引きDNSを作成しました

次に、AmavisdとPostfixを再起動し、DNSパネルに移動して、company.comDNSに新しいAレコードを作成しました。

_mail2.thecompany.com A 1.2.3.4.5.22_

次に、IPをmail2.thecompany.comに一致させる逆引きDNSを作成しました。

意図したとおりにDOMAIN5.COMに新しいMXレコードを追加

次に、DOMAIN5.COM DNSパネルに移動し、別のMXレコードも追加します。

_MX      10       mail.thecompany.com   
MX      15       mail2.thecompany.com
_

DNSが解決したら、Postfixを起動してテストしましたが、メールログにエラーは表示されませんでした。

次に、電子メールクライアント(Thunderbird)で、SMTPとIMAPの設定を使用して[email protected]にメールを設定します。

IMAP

_Host: mail2.thecompany.com
username: [email protected]
pass: mypass
_

SMTP

_Host: mail2.thecompany.com
username: [email protected]
pass: mypass
_

最後に、テストのメールをGmailアカウントに送信し、ログからそれがpostfix-second/smtpから送信されたのを確認しました。その後、次の行が表示される場所に到達するまで、問題ないと考えましたそれはpostfix/smtpからgmailに送信されました:(... Went to my gmail、and email email header、andわたしはメールがデフォルトのIP --1.2.3.4.5.11ではなく1.2.3.4.5.22

ああ、良いニュースは、IMAPとSMTP設定が正常に機能し、すべてのメールが送受信されているため、mail.thecompany.comに設定された他の4つのドメインです:)。

私の質問は今です:domain5.comをIPを使用して送信するように設定する方法1.2.3.4.5.22 IPからではなく1.2.3.4.5.11

[2018年10月28日更新]ついに、それは機能しています!

次のように、postfixの2番目のインスタンスでcontent_filteringを無効にした後、2018年10月27日に上記の構成が機能していたことを確認したいと思います。

/etc/postfix-second/main.cfで、次の行にコメントしました:

_#content_filter = smtp-amavis[1.2.3.4.5.22]:10024_

また、/ etc/postfix-second /master.cfのcontent_filterにコメントします。

_smtp      inet  n       -       n       -       -       smtpd
#       -o content_filter=smtp-amavis:1.2.3.4.5.22:10024
_

2番目のインスタンスが機能しているかどうかを実際にテストするために、すべてのpostfixインスタンスを停止してから、次のコマンドを使用して2番目のpostfixインスタンスのみを起動します。

_postmulti -i postfix-second -p start
_

そして、はい、メールが送信され、それを受信することもできました:)。

今、私自身の質問に答えるには:** domain5.comを設定する方法 IPを使用して送信されるように1.2.3.4.5.22 IPからではなく1.2 .3.4.5.11?**

メールクライアント(Thunderbird)のSMTP/OUTGOINGSERVERをmail2.thecompany.comに設定するだけです。これで完了です。目的のIPで送信を開始します。戻りたいときは、ThunderbirdのSMTPサーバーをmail.thecompany.comに設定しても、電子メールを送信できます。

また、このアプローチの利点は、mail2.thecompany.comに何かが発生した場合(ブラックリストに登録された場合など)、ユーザー自身でもSMTP設定を変更してmail.thecompany.comに戻ることができ、メールが再び機能することです。 。

これで十分だと感じた人は、ここでやめることができます。

しかし、私にとっては、content_filterを有効にしてpostfixの2番目のインスタンスを機能させる方法について知りたいと思っていました。しかし、それは別の質問になります。

あなたの幸運を祈ります。

[2018年10月29日更新]結論と最終更新:

これがこの仕事の私の結論です。管理側からのすべての要件が満たされているため、これが実行されます。これで、Amavisコンテンツフィルターが内部ネットワークに対してバイパスされたときに、domain5.comを同じサーバー上の他のIPから送信できるようになりました。

ただし、同じアプローチで実行しているPostfixの両方のインスタンスを保護するためにAmavisが行うべきことを行う必要があるため、私はこのアプローチに問題があると感じていません。

AmavisのコンテンツフィルタリングをONに設定すると、Amavisはスキャンが完了した後にsmtpをpostfixの最初のインスタンスに転送します。

Amavisdは複数のTCPポートをリッスンするように構成できますが、残念ながら、postfixの2番目のインスタンスから送信されたすべてのメールを実際にpostfixの1番目のインスタンスに転送する単一の$ notify_methodおよび$ forward_methodのみをサポートします。したがって、2番目のインスタンスからメールが送信されたときに、IPは1.2.3.4.11(最初のIP)に戻りました。

Postfix1をIP1から送信し、Postfix2をIP2から送信し続ける唯一の方法は、内部ネットワークへのcontent_filteringのためにAmavisをバイパスすることです。ただし、マルウェアがサーバーに侵入した場合、少なくとも他のサーバーへの電子メールの送信を阻止するセキュリティがないことも意味します。これは(少なくとも私にとっては)ありそうにありません。

最後に、postfixを別のインスタンスに作成する代わりに、サーバー仮想化アプローチを採用しました。

これが私と同じ問題を抱えている人に役立つことを願っています。

チェリオ!

1
busythomas