web-dev-qa-db-ja.com

apache sendmail:ユーザーの「差出人」アドレスをApacheからドメインアカウントに変更しようとしています

すでに回答済みの質問をしている場合はお詫びしますが、私の問題は、回答が見つからないということではありません。実際、私は自分の問題に対する半ダースの異なる「解決策」を見つけ、それらすべてをさまざまな組み合わせで試しましたが、一貫して失敗しました。

目標

私がやりたいのは、常に[email protected]から[email protected]に送信されるすべての電子メールのエンベロープ「from」アドレスを変更することです。


私がすでにしたこと

CentOS 5.5でApache、PHP、sendmailを実行しています[email protected]。 192.168.0.4にSMTPサーバーがあります。ドメインのメールアカウントはすべて@ domain.orgにあります。

sendmail.mcファイルの次の行を使用して、「スマートホスト」を正常にセットアップしました。

define(`SMART_Host', `192.168.0.4')dnl

それから私はマスカレードを設定しました、そしてこれがそれを解決することを望みました。私はこれを.mcファイルに持っています:

FEATURE(`masquerade_entire_domain')dnl
FEATURE(`masquerade_envelope')dnl
FEATURE(`allmasquerade')dnl
MASQUERADE_AS(`domain.org')dnl
MASQUERADE_DOMAIN(`domain.org.')dnl
MASQUERADE_DOMAIN(`localhost.localdomain.')dnl

これにより、「宛先」アドレスは書き換えられますが、「差出人」アドレスは書き換えられません。コマンドラインからのテスト:

sendmail -v [email protected]

常にローカルユーザー(この場合はroot、または私のローカルユーザーアカウント)から表示されます。

「sendmail」コマンドがマスカレードをバイパスすることがあることを読みました。それでも、「mail」コマンドを使用しても同じ結果になります。

その後、私は次のようないくつかの「解決策」を検討しました。

  • 郵送可能
  • virtusertable
  • FEATURE(ʻaccept_unresolvable_domains ')dnl
  • LOCAL_DOMAIN( `localhost.localdomain ')dnl
  • FEATURE( `genericstable ')dnl
  • / etc/mail/accessファイル
  • / etc/mail/local-Host-namesファイル
  • / etc/mail/trusted-usersファイル

影響はありません。


私が試した最後のこと

そこで、別の方向に進んで、PHP経由でエンベロープの「from」アドレスを設定することにしました。/ etc/php.iniの構成を使用するか、-f mail()関数またはsendmailコマンドのパラメーター。

このコマンドを実行すると:

sendmail -v -f [email protected] [email protected]

/ var/log/maillogでこのエラーが発生します:

Mar 30 08:56:16 localhost sendmail[24022]: p2UCuE8w024022: [email protected], size=5, class=0, nrcpts=1, msgid=<[email protected]>, relay=user@localhost
Mar 30 08:56:19 localhost sendmail[24022]: p2UCuE8w024022: [email protected], [email protected] (500/502), delay=00:00:05, xdelay=00:00:03, mailer=relay, pri=30005, relay=[192.168.0.4] [192.168.0.4], dsn=5.1.1, stat=User unknown
Mar 30 08:56:19 localhost sendmail[24022]: p2UCuE8w024022: p2UCuE8x024022: DSN: User unknown
Mar 30 08:56:23 localhost sendmail[24022]: p2UCuE8x024022: [email protected], delay=00:00:04, xdelay=00:00:04, mailer=relay, pri=31029, relay=[192.168.0.4] [192.168.0.4], dsn=2.0.0, stat=Sent (Ok: queued as B5E2E40E0A2)

これは基本的に「ユーザー不明」550エラーです。


助けて

助けてください。何を変更する必要がありますか? sendmail.mcファイルで最初からやり直す必要がありますか?何日にもわたって試してみると、たくさんの設定オプションが詰め込まれています。コマンドラインからエンベロープの「from」アドレスを変更すると、「Userunknown」エラーが発生するのはなぜですか。

2
Wes

-fパラメーターを使用して理解しました。 sendmail.mcを最初から変更し始めましたが、MASQUERADE_ASプロパティのみを含めました。

それは私たちのネットワークのファイアウォールによる拒否であることが判明しました。ファイアウォールに例外を追加しました。 ため息.。

編集:私はPOSTFIXを使用してこれを解決しました。 sendmailを忘れて...

1
Wes