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
私はこの質問が少し古いことを知っているので、私はそれがすでに十分に回答されていると想定しています。
私はこれと同じ問題を抱えていて、何が起こっているのかを理解するのにしばらく時間がかかりました。私の状況は元の質問と同じだったと思います。
Postfixはallメールをインターネット上の他のサーバーにリレーする必要があります。実際にはドメインのメールを受信しません。したがって、example.comに送信されたメールはすべて、example.comのメールサーバーに転送されます。 techieb0yで説明したように、解決策は$ mydomainを行から削除することです。
mydestination = $mydomain, localhost.$mydomain, localhost
この行は、$ mydomainに送信されたすべてのメッセージが受信され、thisサーバーに格納されることをpostfixに伝えます。それは私が望んでいることではありません。それらのメッセージをexample.comの実際のメールサーバーに送信します。これに気づき、example.comを削除すると、メールは期待どおりに機能しました。この説明は、この説明が将来この質問に遭遇する他の誰かを助けるためにオフチャンスで投稿しています。
エラーはかなり自己記述的です:ターゲットのメールユーザー名(@記号の左側)は、システムのローカルユーザー(デフォルトのPostfix設定)にも、仮想ドメインにもマッピングできません(何も設定されていないため)ボックス)。このマッピングを試行して実行するかどうかの決定は、「mydestination」内のドメイン(および仮想ドメイン)のリストによって制御されます。このマシンが実際にドメインのプライマリMXである場合、存在しないユーザーはメールを壊しています。このボックスが送信メッセージのみを送信する必要がある場合は、(リストから$ mydomainを削除することによって)mydestinationからターゲットドメインを削除するだけで十分です。user@ hostname.domain.tldのメッセージはそのまま受け付けますが、user @のメッセージはそのままです。 domain.tldは、他の場所に配信するためにMXルックアッププロセスを実行します。トランスポートマップ(個々のドメインの場合)、またはスマートホストの構成(すべてのメールの場合)を行うことで、プロセスを短縮できます。
ローカルドメインにメッセージを送信するとき、postfixは受信者が存在することを確認する責任があります。他のドメインにメールを送信する場合、postfixはそのような責任を負いません。
Testというローカルユーザーが必要です
useradd -s /bin/bash -d /home/test -U test
または、テストから/ etc/aliasesのローカルユーザーへのエイリアスが必要です
echo "test: root" >> /etc/aliases
postalias /etc/aliases
あなたはすべて設定する必要があります。
だから私は同様の問題を抱えており、まだそれを完全には理解していませんが、これはあなたを正しい方向に動かすはずです:
http://www.postfix.org/STANDARD_CONFIGURATION_README.html
「Postfix on a null client」セクションを見てください-それがあなたの望んでいることだと思います。また、postfixのWebサイトのLOCAL_RECIPIENT_README.htmlで指定されているlocal_recipient_maps設定を設定してみました
どちらのリンクもここで行うことを実行するはずですが、それらを機能させることができません。完全なnullクライアントセットアップを実行すると、テストSMTP電子メールを送信するためにtelnetを試行しても機能しません。 「telnet:アドレス97.74.92.30に接続:接続が拒否されました」と表示されます。ローカル受信者マップを設定する場合、RCPT TO:コマンドでの検索では以前のようなエラーメッセージは表示されませんが、電子メールを送信すると(正常に見える)、実際には電子メールが送信されず、メールログにエラーがあります。
「550-Mailbox unknown。この550-nameに関連付けられたメールボックスがないか、それを表示する権限がありません。5505.1.1 User unknown」
運が良ければ教えてください。
エイリアスに電子メールを送信すると、このエラーが発生しました。 Postfixは、/ etc/aliasesから次のコマンドを実行して生成される/etc/aliases.dbを使用しています。これでエラーが解決しました:
newaliases