- - PR -
Sendmailについて
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-09-14 19:39
お世話になります。
Linuxの超初心者です。 あまりに失礼な質問になったら申し訳ありません。 前提条件として、ホームページとメールサーバが別のサーバーに入っています。これがまず良くないですが。 ホームページはwww.hogehoge.co.jp、メールサーバはmail.hogehoge.co.jpという名前を 付け、メールサーバ側のDNSにてホームページ側(www.hogehoge.co.jpの名前とアドレス)を登録をしています。 この度、ホームページ上のcgiフォームからメールサーバにメールを送る必要が発生しました。ホームページ上のosはFree BSD 4.7、メールプログラムはsendmail8.13.6になります。 ホームページ上のcgiフォームからxxx@hogehoge.co.jpにメールを送るとローカルのコンピュータ名(hogehoge.co.jp)と同じなので、外に出て行かずに自サーバー内でメールボックスを探してしまい、見つからないとエラーになってしまいます。 以下、エラーメールになります。 The original message was received at Thu, 14 Sep 2006 11:49:00 +0900 (JST) from www@localhost ----- The following addresses had permanent fatal errors ----- xxx@hogehoge.co.jp (reason: 550 5.1.1 <xxx@hogehoge.co.jp>... User unknown) (expanded from: xxx@hogehoge.co.jp) ----- Transcript of session follows ----- ... while talking to localhost..: >>> DATA <<< 550 5.1.1 <xxx@hogehoge.co.jp>... User unknown 550 5.1.1 xxx@hogehoge.co.jp... User unknown <<< 503 5.0.0 Need RCPT (recipient) サーバー側のログは以下の通りです。 Sep 14 10:06:17 hogehoge sendmail[69729]: k8E16Hlc069729: from=www, size=1238, class=0, nrcpts=1, msgid=<200609140106.k8E16Hlc069729@hogehoge.co.jp>, relay=www@localhost Sep 14 10:06:17 hogehoge sm-mta[69730]: k8E16Hop069730: <xxx@hogehoge.co.jp>... User unknown Sep 14 10:06:17 hogehoge sendmail[69729]: k8E16Hlc069729: to=xxx@hogehoge.co.jp, ctladdr=www (80/80), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=31238, relay=localhost.my.domain. [127.0.0.1], dsn=5.3.0, stat=User unknown Sep 14 10:06:17 hogehoge sm-mta[69730]: k8E16Hop069730: from=<www@hogehoge.co.jp>, size=1238, class=0, nrcpts=0, proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1] Sep 14 10:06:17 hogehoge sendmail[69729]: k8E16Hlc069729: k8E16Hld069729: DSN: User unknown Sep 14 10:06:17 hogehoge sm-mta[69730]: k8E16Hor069730: from=<>, size=3087, class=0, nrcpts=1, msgid=<200609140106.k8E16Hld069729@hogehoge.co.jp>, proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1] Sep 14 10:06:17 hogehoge sendmail[69729]: k8E16Hld069729: to=www, delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=32262, relay=localhost.my.domain. [127.0.0.1], dsn=2.0.0, stat=Sent (k8E16Hor069730 Message accepted for delivery) Sep 14 10:06:17 hogehoge sm-mta[69731]: k8E16Hor069730: to=<www@hogehoge.co.jp>, delay=00:00:00, xdelay=00:00:00, mailer=local, pri=33271, relay=local, dsn=2.0.0, stat=Sent 色々と自分ながらに調べ、「local-host-names」の中に「hogehoge.co.jp」の 記載があったため、ここで自サーバー名を判別しているのかと思い、記載を消し再起動したのですが状況は変わりませんでした。 「virtusertable」の中に「@hogehoge.co.jp error:nouser User unknown」という記述があったため、記述を消してmakemapしたのですがこれもダメでした。 いずれも見当違いのようでした。 やはりsendmail.cfあたりの設定まで見直さないと無理なのでしょうか? もし分かる方がいましたら、フォローしていただけると助かります。 あるいはここを見て勉強したら理解しやすいというのでも結構です。 それでは、よろしくお願いいたします。 | ||||||||
|
投稿日時: 2006-09-14 19:51
こんばんわ.
つまり www server 上の MTA を用いて e_mail server 上の spool に届くようにしたいというお話ですか? mailertable とか SMARTHOST を使って転送するとか, そういう話ではダメですか? 少なくとも「sendmail 周りの設定を一切変更しない」で 実現するのは無理だと思いますよ. | ||||||||
|
投稿日時: 2006-09-14 21:02
早々にありがとうございます!
そうなのです。拙い説明で理解して頂き感謝です。
こうなったら方法はいとわないです。 なるべくならば、簡潔に行える方法が良いです。 mailertable とか SMARTHOSTとはソフトでしょうか? これについては後ほど、どういうものなのか調べてみたいと思います。 出来ればsendmailの設定などで回避できれば幸いです。 それでは、宜しくお願い致します。 | ||||||||
|
投稿日時: 2006-09-14 23:20
ではまず調べてみてください. いずれも sendmail ではごくありふれた設定です. | ||||||||
|
投稿日時: 2006-09-15 11:39
お世話になります。
まずはmailertableに以下のように設定して、 hogehoge.co.jp smtp:[外部smtpサーバーのIPアドレス] makemapしてみました。 makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable mailertable.dbが出来たので取りあえずsendmailを再起動し、テストしてみました。 結果ですが、relay先は相変わらずwww@localhostになってしまいました。 Sep 15 11:15:13 hogehoge sendmail[3135]: k8F2FDNZ003135: from=www, size=1238, class=0, nrcpts=1, msgid=<200609150215.k8F2FDNZ003135@hogehoge.co.jp>, relay=www@localhost Sep 15 11:15:13 hogehoge sm-mta[3136]: k8F2FDSx003136: <info@hogehoge.co.jp>... User unknown mailertableにはlocalhostの場合の記述を書くのでしょうか? 調べたのですがそういう例を見つけられませんでした。 mailertableの書き方が悪いのか、それとも他に問題があるのでしょうか? 尚、smarthostの方はsendmail.mcを修正する必要があるみたいですがレンタルサーバーなのでsendmail.mcが入っていませんでした。こちらは少々敷居が高そうなので調査中です。 お手数ですが、フォロー頂けると幸いです。 | ||||||||
|
投稿日時: 2006-09-15 22:14
こんばんわ.
いずれの場合も sendmail.cf で定義されていないとダメです. ただ,読み返してみると
ここはおかしくないですか? xxx@hogehoge.co.jp に送ろうとして弾かれているのでは? つまり e_mail server 側で受け取れるように設定されていないのでは? User Unknown であれば,送られた側が 「User Unknown で弾いたよ」という log があると思います. それは www/e_mail server のどちらにありますか? | ||||||||
|
投稿日時: 2006-09-16 00:06
そもそも、Webサーバのホスト名がhogehoge.co.jpと、
どうしてwww.hogehoge.co.jpといった名前にしなかったのかが問題点です。 さて、FQDNが宛先のメールはsendmail的には自マシンで受け取けとるのが、 MTAの基本動作ですのでそう簡単に変更は難しいです。 sendmail.cfを再構築するとすれば、 mail_hubやdomaintable辺りで対処可能です。 残念ながらmailtertableやsmarthostはリモートメールをどこに配送するかという 事を決定する為に存在する為、ローカルメールは影響を受けません。 ミニさんの書き込みから、最も簡単な対処方法は virtuasertableの中で ユーザ名@hogehoge.co.jp ユーザー名@メールサーバFQDN と書いて、 該当メールをメールサーバに転送する方法になると思います。 | ||||||||
|
投稿日時: 2006-09-16 11:20
ありがとうございます。
エラーログはwwwサーバーの方にありました。 なので外に出ていっていないと判断しているところです。 お手数お掛けします。 |