web-dev-qa-db-ja.com

アウトバウンドEメールを送信するためのPostfixインスタンスの指定

Postfix 2.6x(デフォルトのディストリビューション)を実行しているCentOS 6.5サーバーがあり、5つのパブリックIPv4IPがバインドされています。各IPには、DNSとrDNSが個別に設定されています。それぞれが異なるドメインで異なるホスト名を使用します。次の例のように、5つのPostfixインスタンスがあり、1つは各IPにバインドされています。

  • 192.168.34.104 red.example.com/etc/postfix
  • 192.168.36.48 green.example.net/etc/postfix-green
  • 192.168.36.49 pink.example.org/etc/postfix-pink
  • 192.168.36.50 orange.example.info/etc/postfix-orange
  • 192.168.36.51 blue.example.us/etc/postfix-blue

ポート25にtelnetして、各IPをテストしました。正しいホスト名で適切に応答とバナーをポストフィックスします。これらすべてのインスタンスで問題なく電子メールが受信され、正しい場所にルーティングされます。このセットアップは、最終インスタンスを除いて、数年前から存在しており、機能します。

ただし、メインインスタンス以外を通過するように送信メールを設定する必要はありませんでした。必要はありませんでした。次に、実際にそのインターフェイスとIPから離れるblue.example.usから電子メールを送信する必要があります。これにより、Receivedヘッダーに送信メールホストとしてblue.example.usが表示され、SPFとDKIMが検証されます。

Blue.example.comから送信される電子メールは、サーバー上の単一のシェルアカウント(account5)、この電子メールの送信専用のアカウントによって送信されるフィードバックループです。アカウントは、他のネットワーク上のサーバーからフィードバックループの電子メールを受信し、それらの電子メールの本文を保存してから、新しい送信電子メールヘッダーを生成し、保存された本文を追加して、電子メールを送信します。各メールをsendmail -oi -tにパイプで送信します。この方法で、初期サーバーのIDをマスクします。これらの電子メールを処理するprocmailスクリプトは正しく機能します。

ただし、私はcannot適切なPostfixインスタンス/ IP /インターフェースを介して電子メールを送信するようにこのアカウントを構成します。まったく同じアカウントとスクリプトが、メインのPostfixインスタンス/ etc/postfixを介して問題なくメールを送信します。ただし、.bash_profileまたはこの電子メールを処理するProcmailスクリプトのいずれかで/ etc/postfix-blueを指すようにMAIL_CONFIGを変更すると、次のエラーが発生します。

sendmail: fatal: User account5(###) is not allowed to submit mail

Postfix.orgのマニュアルを読み、Googleを検索し、ServerFault.comの以前の3つの回答の提案を試しました。

Postfix-送信メールを配信するインターフェイスを指定します

Postfixユーザーはメールを送信できません

Postfixはphpメールを拒否します

構成を変更するたびにPostfixを停止して再起動するように注意し、結果をテストしました。何も機能していません。メインの接尾辞インスタンスは、account5からの送信メールを問題なく受け入れます。 postfix-blueインスタンスは、上記のsendmailエラーでaccount5からのメールを引き続き拒否します。

マシンの敵意を非難するのは魅力的ですが、私は何かを見逃しているか、何か間違ったことをしているに違いないことを知っています。誰かがそれが何であるかについて何か提案がありますか?必要に応じて、私のセットアップに関する詳細情報をお気軽にお問い合わせください。

=-=-=-=-=-=-=-=-=-=

レスポンダーの要求に応じて、a)メインの接尾辞インスタンス( "red.example.com")およびb)FBLインスタンス( "blue.example.us")のmain.cfおよびmaster.cfを次に示します。

[注:以下で指定されていないすべてのパラメーターは、デフォルトのPostfix2.6設定のままになっています]

メイン:

master.cf

smtp      inet  n       -       n       -       -       smtpd

main.cf

myhostname = red.example.com
mydomain = example.com
inet_interfaces = $myhostname, localhost
inet_protocols = all
lmtp_Host_lookup = native
smtp_Host_lookup = native
ignore_mx_lookup_error = yes
mydestination = $myhostname, localhost.$mydomain, localhost
local_recipient_maps =
mynetworks = 192.168.34.104/32
relay_domains = example.com,
            example.info,
            example.net,
            example.org,
            example.us
relayhost = [192.168.34.102] # Separate physical server, main mailserver.
relay_recipient_maps = hash:/etc/postfix/relay_recipients
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
smtpd_banner = $myhostname ESMTP $mail_name
multi_instance_wrapper = ${command_directory}/postmulti -p --
multi_instance_enable = yes
multi_instance_directories = /etc/postfix-green /etc/postfix-pink /etc/postfix-orange /etc/postfix-blue

FBL:

master.cf

184.173.119.103:25      inet  n       -       n       -       -       smtpd

main.cf

myhostname = blue.example.us
mydomain = blue.example.us <= Deliberately set to subdomain only.
myorigin = $mydomain
inet_interfaces = $myhostname
lmtp_Host_lookup = native
smtp_Host_lookup = native
ignore_mx_lookup_error = yes
mydestination = $myhostname
local_recipient_maps  = unix:passwd.byname $alias_maps $virtual_alias_maps
mynetworks = 192.168.36.51/32, 192.168.35.20/31 <= Second IP is backup MX servers
relay_domains = $mydestination
recipient_canonical_maps = hash:/etc/postfix-blue/canonical
virtual_alias_maps = hash:/etc/postfix-fbl/virtual
alias_maps = hash:/etc/aliases, hash:/etc/postfix-blue/canonical
alias_maps = hash:/etc/aliases, hash:/etc/postfix-blue/canonical
mailbox_command = /usr/bin/procmail -a "$EXTENSION" DEFAULT=$HOME/Mail/ MAILDIR=$HOME/Mail
smtpd_banner = $myhostname ESMTP $mail_name
authorized_submit_users = 
multi_instance_name = postfix-blue
multi_instance_enable = yes

** Masegaloehの最新の提案をテストした後の追加情報**

「account5」をauthorized_submit_usersに追加し、「exportMAIL_CONFIG」も設定した「account5」シェルアカウントの.bash_profileにMAIL_CONFIGを設定してみました。 Procmailはもう文句を言いません。 FBLを適切に生成して送信していると考えます。ただし、maillogは次のことを報告します。

May 29 14:47:42 newton postfix-blue/qmgr[3522]: 5BC773E612F: from=<[email protected]>, size=1106, nrcpt=1 (queue active)
May 29 14:47:42 newton postfix-blue/qmgr[3522]: warning: connect to transport private/smtp: Connection refused
May 29 14:47:42 newton postfix-blue/error[3766]: 5BC773E612F: to=<[email protected]>, relay=none, delay=0.01, delays=0/0/0/0, dsn=4.3.0, status=deferred (mail transport unavailable)

おそらく、トランスポート構成ファイルに何かを追加する必要がありますか?

2

ローカル送信a.k.asendmailを介してメールを送信すると、デフォルトのインスタンスが使用されます。 red.example.com。この動作は 接尾辞の公式ドキュメント で説明されています。

1つのPostfixインスタンスは特別です。これは、構成ディレクトリがPostfixユーティリティにコンパイルされたデフォルトのインスタンスであるインスタンスです。デフォルトの構成ディレクトリの場所は通常/ etc/postfixであり、「postconf-dconfig_directory」コマンドを使用して照会できます。この構成ディレクトリを持つインスタンスを「デフォルトインスタンス」と呼びます。

デフォルトのインスタンスは、ローカルメールの送信を担当します。 setgid postdrop(1)ユーティリティは、sendmail(1)ローカル送信プログラムによって使用され、デフォルトインスタンスのキューディレクトリのmaildropサブディレクトリにメッセージをスプールします。

「sendmail-C」を使用してローカルメールをデフォルト以外のPostfixインスタンスに送信するというまれなケースでも、セキュリティ上の理由から、postdrop(1)はデフォルトのmain.cfファイルを参照して、要求された非デフォルトの有効性を確認します。デフォルトの設定ディレクトリ。

したがって、他のほとんどの点で、すべてのインスタンスは等しいですが、デフォルトのインスタンスは「他のインスタンスよりも等しい」です。追加のインスタンスを作成することもできますが、少なくともデフォルトのインスタンスが必要であり、その構成ディレクトリはデフォルトのコンパイル済みの場所にあります。

いくつかの提案:

  1. 上記のスニペットに基づいて、sendmail -Cを使用して、電子メールを送信するインスタンスを指定することができます。または
  2. 他の回避策は、インスタンスを交換することです。 red.example.comblue.example.usになり、その逆も同様です。 。

以下のコメントに基づいて編集

sendmail: fatal: User account5(###) is not allowed to submit mail

authorized_submit_usersパラメータによって引き起こされた上記のエラーは空白です(接尾辞-青いインスタンス)。その結果、postfix-blueインスタンスを介して誰もsendmailを実行できなくなります。そのパラメータにaccount5を追加すると、問題が解決するはずです。

別のエラー

warning: connect to transport private/smtp: Connection refused

master.cfsmtpトランスポートがないことが原因でした。この行がmaster.cfに存在することを確認してください

smtp      unix  -       -       n       -       -       smtp

行の最後に-o smtp_bind_address = 192.168.36.51を追加して、電子メールがアドレス192.168.36.51を介して送信されるようにします。

1
masegaloeh