後置:受信者アドレスが拒否されました:ローカル受信者テーブルでユーザーが不明です


30

Postfixサーバーで同じドメインのアドレスにメールを送信しようとすると(たとえば、サーバーのホスト名がmail.example.comで、test @ example.comにメールを送信しようとすると)、ログに次のエラーがあり、メールは配信されません:Recipient address rejected: User unknown in local recipient table。別のドメインのアドレスに送信する場合、問題はありません。ここに私の/etc/postfix/main.cfファイルがあります:

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
readme_directory = no
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
myhostname = mail.example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
#myorigin = /etc/mailname
myorigin = $mydomain
mydestination = $mydomain, localhost.$mydomain, localhost
relayhost =
#fake IP address
mynetworks = 127.0.0.0/8 100.837.191.223
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

何らかの理由でサーバーに正しいホスト名が設定されていないときに、これに遭遇しました。ドメインはmail.example.comMXレコードとして設定されていますか?このサーバーは本当にmail.example.comですか?
バート

回答:


42

私はこの質問が少し古いことを知っているので、すでに十分に回答されていると思います。

私はこの同じ問題を抱えていましたが、何が起こっているのかを理解するのに時間がかかりました。私の状況は元の質問と同じだったと思います。

Postfixはすべてのメールをインターネット上の他のサーバーに中継する必要があります。実際にはどのドメインのメールも受信しません。したがって、example.comに送信されたメールは、example.comのメールサーバーに転送する必要があります。b techieb0yで説明したように、解決策は、行から$ mydomainを削除することです。

mydestination = $mydomain, localhost.$mydomain, localhost

この行は、$ mydomainに送信されたメッセージが受信され、このサーバーに保存されることをpostfixに伝えます。それは私が望んでいることではなく、それらのメッセージをexample.comの実際のメールサーバーに送信したいのです。これに気付き、example.comを削除すると、メールは期待どおりに機能しました。この説明が将来この質問に出くわす他の誰かを助けるという偶然の機会にこれを投稿しています。


18

このエラーは非常にわかりやすいものです。ターゲットの電子メールユーザー名(@記号の左側)は、システム上のローカルユーザー(デフォルトのpostfix設定)または仮想ドメイン(いずれも外部で構成されていないため)ボックス)。このマッピングを実行しようとする決定は、「mydestination」のドメインのリスト(および仮想ドメイン)によって制御されます。このマシンが実際にドメインのプライマリMXである場合、存在しないユーザーはメールが壊れています。このボックスが送信メッセージのみを送信する必要がある場合は、mydestinationからターゲットドメインを削除するだけで十分です(リストから$ mydomainを削除します)。user@ hostname.domain.tldのメッセージは直接受け付けますが、user @のメッセージはそのまま受け付けますdomain.tldは、他の場所に配信するためにMXルックアッププロセスを実行します。


1
あなたは私の一日を救った、私は怒っていた...なぜ私は自分のために2人のユーザー、tstaerkとthorstenを持っているのですか?)
Thorsten Staerk 14年

5

ローカルドメインにメッセージを送信すると、受信者が存在することをpostfixが確認します。他のドメインにメールを送信する場合、postfixはそのような責任を負いません。

testというローカルユーザーが必要です

useradd -s /bin/bash -d /home/test -U test

または、/ etc / aliasesのtestからローカルユーザーへのエイリアスが必要です。

echo "test: root" >> /etc/aliases
postalias /etc/aliases

あなたはすべて設定する必要があります。


このチェックをバイパスする方法はありますか?メールを送信する相手ごとにユーザーを作成する必要はありませんか?エラーが発生したときにアプリケーションから送信メールを送信するためだけに、このサーバーをプライマリメールサーバーとして使用したくありません。アプリケーション電子メールの新しい受信者を追加するたびにサーバーを更新する必要はありません。
タイの二乗

'administrator@domainz.com'にメールを送信したい場合、ローカルのpostfixが 'domainz.com'の責任を負わないようにする必要があります。そうしないと、ユーザーをローカルで検証しようとします。したがって、ディレクティブ「mydomain」を「mydomain = local.server」などの別の値に設定すると、postfixは「domainz.com」を担当するサーバーにメールを送信します
Julien Vehent

1

だから私は同様の問題を抱えており、まだそれを十分に理解していませんが、これは正しい方向にあなたを動かすはずです:

http://www.postfix.org/STANDARD_CONFIGURATION_README.html

「nullクライアントのPostfix」セクションを見てください-それがあなたが望むものだと思います。また、ページのLOCAL_RECIPIENT_README.htmlのpostfixのWebサイトで指定されているlocal_recipient_maps設定を設定しようとしました。

両方のリンクは、私たちがここにいることをするはずですが、私はそれらを動作させることができません。nullクライアントの完全セットアップを行うと、テストSMTP電子メールを送信するためにtelnetを試行しても機能しません。「telnet:アドレス97.74.92.30への接続:接続が拒否されました」というメッセージが表示されます。ローカル受信者マップを設定する場合、RCPT TO:コマンドでのルックアップでは以前のようなエラーメッセージは表示されませんが、電子メールを送信すると(正常に見える)、実際に電子メールは送信されず、メールログにエラーがあります:

「550-Mailbox unknown。この550-nameに関連付けられたメールボックスがないか、表示する権限がありません。5505.1.1 User unknown」

運がよければ教えてください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.