
私のPostfixサーバーから同じドメインのアドレスにメールを送信しようとすると(例えば、サーバーのホスト名がmail.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
答え1
この質問は少し古いので、すでに満足のいく回答が出ているものと想定しています。
私も同じ問題を抱えていて、何が起こっているのか理解するのにしばらく時間がかかりました。私の状況は元の質問と同じだったと思います。
Postfixはリレーするべき全てインターネット上の他のサーバーにメールを送信しますが、実際にはどのドメインのメールも受信しません。したがって、example.com に送信されたメールはすべて、example.com のメール サーバーに転送する必要があります。techieb0y が説明しているように、解決策は、次の行から $mydomain を削除することです。
mydestination = $mydomain, localhost.$mydomain, localhost
この行は、$mydomainに送信されたすべてのメッセージが受信され、保存されることをpostfixに伝えます。これサーバー。これは私が望んでいることではありません。これらのメッセージを example.com の実際のメール サーバーに送信したいのです。これに気づいて example.com を削除すると、メールは期待どおりに機能しました。この説明が将来この質問に遭遇した他の誰かの役に立つかもしれないという可能性を考えて、これを投稿します。
答え2
エラーの内容は、かなり自明です。ターゲットの電子メール ユーザー名 (@ 記号の左側) は、システム上のローカル ユーザー (デフォルトの postfix 設定) にも仮想ドメイン (いずれも初期設定されていないため) にもマッピングできません。このマッピングを試行して実行するかどうかは、「mydestination」内のドメイン リスト (および仮想ドメイン) によって決まります。このマシンが実際にドメインのプライマリ MX である場合、存在しないユーザーのメールは壊れています。このボックスで送信メッセージのみを送信する必要がある場合は、ターゲット ドメインを mydestination から削除する (リストから $mydomain を削除する) だけで十分です。引き続き、直接メッセージを受け付けます。[メールアドレス]、しかし、[メールアドレス]他の場所に配信するために、MX ルックアップ プロセスが実行されます。トランスポート マップ (個々のドメイン用) を設定するか、スマートホスト (すべてのメール用) を構成することで、プロセスを短縮できます。
答え3
ローカル ドメインにメッセージを送信する場合、受信者が存在するかどうかを確認するのは postfix の役割です。他のドメインに電子メールを送信する場合、postfix にはそのような責任はありません。
testというローカルユーザーを作成する必要があります
useradd -s /bin/bash -d /home/test -U test
または、/etc/aliasesにtestからローカルユーザーへのエイリアスが必要です。
echo "test: root" >> /etc/aliases
postalias /etc/aliases
これで準備は完了です。
答え4
ファイルに/etc/postfix/main.cf
行を追加しますlocal_recipient_maps =
。そのとおりです。空の値です (デフォルトでは値はアクティブで空ではないため、空の行を追加する必要があります)。