私の専用サーバーには、Web サイト経由で電子メールを送信するための Postfix がインストールされています。クライアントの 1 社は電子メールをサードパーティでホストしているため、ドメインに MX レコードが設定されています。
しかし、サーバーから Postfix メールを送信すると、メールが受信されません。ドメインがサーバー自体を指しているため、サーバー自体にメールを送信しようとしますが、サーバー上にそのドメインのメールを処理するものがないと考えられます。(他のドメインのメール アカウントは正常に動作しています。)
Postfix でドメインの MX レコードを使用して電子メールを送信するにはどうすればよいでしょうか?サーバーは、標準 LAMP スタックを備えた Ubuntu 8.10 です。Webmin がインストールされており、ホストによって「Matrix」というコントロール パネルが提供されています。
編集: 自分のアドレスからメールを送信しようとすると、メール配信システムから次のエラーを含むエラーメールが届きます。
<[email protected]>: user unknown. Command output: Invalid user specified.
Final-Recipient: rfc822; [email protected]
Action: failed
Status: 5.1.1
Diagnostic-Code: x-unix; Invalid user specified.
作成されたログエントリは次のとおりです。
Jan 6 18:06:52 localhost postfix/pickup[29006]: 0329D3F69: uid=33 from=<[email protected]>
Jan 6 18:06:52 localhost postfix/cleanup[30495]: 0329D3F69: message-id=<[email protected]>
Jan 6 18:06:52 localhost postfix/qmgr[22461]: 0329D3F69: from=<[email protected]>, size=611, nrcpt=2 (queue active)
Jan 6 18:06:52 localhost postfix/pipe[30497]: 0329D3F69: to=<[email protected]>, relay=maildrop, delay=0.15, delays=0.1/0/0/0.04, dsn=5.1.1, status=bounced (user unknown. Command output: Invalid user specified. )
Jan 6 18:06:52 localhost postfix/smtp[30498]: 0329D3F69: to=<[email protected]>, relay=gmail-smtp-in.l.google.com[209.85.227.27]:25, delay=0.61, delays=0.1/0.01/0.06/0.45, dsn=2.0.0, status=sent (250 2.0.0 OK 1294337212 o18si30528441wbo.103)
Jan 6 18:06:52 localhost postfix/cleanup[30495]: 868723F75: message-id=<[email protected]>
Jan 6 18:06:52 localhost postfix/bounce[30500]: 0329D3F69: sender non-delivery notification: 868723F75
Jan 6 18:06:52 localhost postfix/qmgr[22461]: 868723F75: from=<>, size=2553, nrcpt=1 (queue active)
Jan 6 18:06:52 localhost postfix/qmgr[22461]: 0329D3F69: removed
Jan 6 18:06:52 localhost postfix/pipe[30497]: 868723F75: to=<[email protected]>, relay=maildrop, delay=0.06, delays=0.01/0/0/0.05, dsn=2.0.0, status=sent (delivered via maildrop service)
Jan 6 18:06:52 localhost postfix/qmgr[22461]: 868723F75: removed
答え1
仕事で退屈だったので、次のことを書こうと思いました。このサイトはこれまで一度も使ったことがないので、ご容赦ください。
あなたは、回答の 1 つに対して、後で次のようにコメントしました。
「OK、virtual_mailbox_domains = $transport_maps と transport_maps = hash:/etc/postfix/transport があります。そのファイル内に condorproperties.co.uk maildrop: という行があります。この行を削除したほうがよいでしょうか? – DisgruntledGoat 昨日」
そして次のように続けた。
「@Devdas: その行を削除して Postfix を再起動してみたのですが、問題は解決しません。"maildrop" を別のものに変更する必要がありますか? – DisgruntledGoat 昨日」
最初の質問に対する答えは、「はい」です。/etc/postfix/transport のその行は、condorproperties.co.uk 宛ての電子メールに対して、ローカル メール配信 (maildrop 経由) を強制していました。これを削除するのが最も適切です。問題は、変更を適用するには、単に postfix を再起動するだけでは不十分であることです。
問題は、設定ファイルで設定されているマップがハッシュ:/etc/postfix/transport であることです。/etc/postfix/transport ファイルは、ファイルの人間が読めるバージョンであり、対応する /etc/postfix/transport.db (コンパイルされたハッシュマップ) ファイルも持っている必要があります。人間が読めるバージョンをハッシュ バージョンにコンパイルするには、postmap コマンドを使用します。Postfix は変更時間をチェックし、/etc/postfix/transport.db が古くなっていることをログ ファイルで大声で報告するはずです。必要なのは、postmap /etc/postfix/transport を実行して、以前に行った変更 (condorproperties.co.uk の行を削除) を有効にすることだけです。実際、postmap コマンドを発行したら、変更を有効にするために postfix をリロードする必要はないと思いますが、リロードしても問題はありません。
簡単に言うと、 postmap /etc/postfix/transport を実行してから postfix をリロードします。
乾杯。
ちなみに、ログファイル内の大きな手がかりは次の行でした: Jan 6 18:06:52 localhost postfix/pipe[30497]: 0329D3F69: to=、relay=maildrop、delay=0.15、delays=0.1/0/0/0.04、dsn=5.1.1、status=bounced (user unknown. Command output: Invalid user provided. )
途中で、relay=maildrop と書かれているのに気づきましたか?
答え2
ここに postconf -n を貼り付けていただけますか?
おそらく、mydomain.co.uk は、maildrop のトランスポートを使用して、mydestination、virtual_mailbox_domains、または relay_domains のいずれかに明示的にリストされているはずです。
ring0 の考えは正しいのですが、私の理解では、質問の解釈が間違っています。目標は、サーバー上のドメインの 1 つ宛ての電子メールを別の場所に送ることですが、その電子メールは Postfix に残ります。
どのメール サーバーでも、DNS よりも優先されるローカル構成があります。そのため、MTA が DNS を参照していない場合は、ローカル構成にドメインがあります。
答え3
postfix
標準に従ってドメイン名の MX エントリ解決を実行し、メールを送信するために次に接続するサーバーを特定します。
ドメイン名 (ゾーン) の TTL が原因で問題が発生する場合があります。たとえば、レジストラで MX エントリを更新したが、そのドメインの TTL により、以前に解決されたエントリがドメイン ネーム サーバーのキャッシュに残る場合があります。
また、ターゲットサーバーのドメイン名は次のように宣言されていない可能性があります。地元
/var/log/mail.log
、送信サーバーがターゲット サーバー ( ) 経由でリレー (スパム) しようとしていると見なして、サーバーがメールを拒否するようになります (ログを参照、例:mydestination
)/etc/postfix/main.cf
。
dig +nocmd mydomain.tld mx +noall +answer
関心のあるドメインの TTL などの情報を簡単に読み取れるようにしてください。
答え4
また、メールを送信する予定のリモート ドメインに対して、カスタム トランスポートまたはトランスポート マップが何らかの形で定義されていないことも確認してください。