web-dev-qa-db-ja.com

passwd情報の検索での接尾辞エラー(キャッチオール)

接尾辞で、不明なローカルアカウントのキャッチオールアドレスを設定しようとしています。ローカルユーザーに配信できるメールはすべて、ローカルメールボックスに配信する必要があります(ローカルエイリアスとメールを外部に転送するエイリアスの両方について、/etc/aliasesのエイリアスを尊重します)。 /etc/aliasesまたは/etc/passwdに存在しないユーザー宛てのメールは、rootにリダイレクトする必要があります。 rootの場合、/etc/aliasesにエイリアスを設定して、別のメールアドレス[email protected](ローカルサーバー上ではない)にリダイレクトします。

これを達成するために、私はmain.cfで設定しました。

luser_relay = root
local_recipient_maps =

luser_relayに対して試したその他の設定は次のとおりです。

[email protected]
root@localhost
[email protected]
root@--server hostname--
root@$local
--other user with no alias--
--other user with no alias--@localhost
--other user with no [email protected]
--other user with no alias--@--server hostname--
--other user with no alias--@$local

しかし、ユーザールックアップエラーが発生し続けます(mail -s test testを使用して存在しないテストユーザーにメールを送信する場合):

Jan  4 14:08:03 test postfix/pickup[28595]: A4E3382454: uid=--uid-- from=<--local user-->
Jan  4 14:08:03 test postfix/cleanup[29192]: A4E3382454: message-id=<20150104140803.A4E3382454@--server hostname-->
Jan  4 14:08:03 test postfix/qmgr[28596]: A4E3382454: from=<--local user--@--server hostname-->, size=456, nrcpt=1 (queue active)
Jan  4 14:08:03 test postfix/local[29194]: warning: error looking up passwd info for test: No such file or directory
Jan  4 14:08:03 test postfix/local[29194]: A4E3382454: to=<test@--server hostname-->, orig_to=<test>, relay=local, delay=0.02, delays=0.01/0/0/0, dsn=4.0.0, status=deferred (user lookup error)

キャッチオールアドレスが[email protected]に設定されているソリューションがある場合は問題ありませんが、rootにリダイレクトし、/etc/aliasesesを尊重することをお勧めします。 [email protected]を変更します。/etc/aliasesで行うだけで、別の接尾辞構成ファイルでも行う必要はありません。

私のpostfixバージョンは2.10.1(CentOS 7)で、上記のluser_relaylocal_recipient_mapsの他に、recipient_bcc_mapstransport_mapsを追加しました。

おそらく私の路線図はluser_relayに干渉しますか?

/.*@localhost(\.localdomain)?$/  local:
/.*@--the server's hostname--/   local:
/.*@--company domain--           relay:
/.*/                             discard:

トランスポートマップの目的は、ローカルメールを配信し、メールを会社のドメインに送信できるようにすることですが、その他のメールは破棄します。 recipient_bcc_mapsは、トランスポートマップで破棄されたすべてのメールをデバッグアドレスにbccするように設定されています。また、/etc/aliasesrootのエイリアスは--other domain to not discard--に分類されます。これは開発サーバーに関係するため、ローカルメールをそのまま配信し、会社のドメイン宛てのメールも配信しますが、他のメールが外部に送信されないようにします。

postconf -nの出力:

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5
html_directory = no
inet_interfaces = localhost
inet_protocols = all
local_recipient_maps =
luser_relay = root
mail_owner = postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
mydestination = $myhostname, localhost.$mydomain, localhost
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES
recipient_bcc_maps = pcre:/etc/postfix/recipient_bcc
sample_directory = /usr/share/doc/postfix-2.10.1/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
transport_maps = pcre:/etc/postfix/transport
unknown_local_recipient_reject_code = 550

私の構成のエラーを見つけることができる人はいますか?

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

2
SunMar

長い時間がかかりましたが、ようやく問題を見つけることができました。 NSS構成/etc/nsswitch.confにあります。私のRackspaceCloudServerにはデフォルトでyumパッケージsssd-clientがインストールされており、/etc/nsswitch.confにはpasswdおよびsssを使用するその他のファイルのデフォルトエントリがあります。

基本的に、デフォルトの/etc/nsswitch.confがあり、sssd-clientパッケージをインストールすると、CentOS7でNo such file or directoryの問題が発生します。これは/var/lib/sss/mc/passwdを検索しようとするためです(最終的にはこれがわかりました) straceの助けを借りて、これも適切に機能させるのに大きな手間でした)。ただし、sssdを設定していない場合、そのファイルは存在しません。 CentOSWebサイトからCentOS7 DVDをダウンロードし、VMに最小限のインストールをインストールすることで、これをテストしました。次に、正常に機能するPostfix構成にluser_relayを追加しました。その後、sssd-clientをインストールするだけで、「魔法のように」機能しなくなりました。

修正1:/etc/nsswitch.confからsssを削除します。

次のような行が表示されます。

passwd: files sss

これを次のように変更します。

passwd: files

デフォルトでは、sssshadowgroupservices、およびnetgroupに対しても有効になっていますが、これらについても削除する必要があります。 libnssがそれらにアクセスしようとするとそこで問題が発生します。

修正2:sssd-clientパッケージを削除します。

sssd-clientパッケージを削除すると、問題も修正されます。クライアントがないと、libnss/etc/nsswitch.confsssディレクティブを無視するためです。不要な場合は、yum remove sssd-clientで削除することをお勧めします。

4
SunMar