- PR -

Sendmailについて

投稿者投稿内容
ミニ
会議室デビュー日: 2005/05/16
投稿数: 9
投稿日時: 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あたりの設定まで見直さないと無理なのでしょうか?

もし分かる方がいましたら、フォローしていただけると助かります。
あるいはここを見て勉強したら理解しやすいというのでも結構です。

それでは、よろしくお願いいたします。
kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2006-09-14 19:51
こんばんわ.
引用:

ミニさんの書き込み (2006-09-14 19:39) より:

ホームページ上のcgiフォームからxxx@hogehoge.co.jpにメールを送るとローカルのコンピュータ名(hogehoge.co.jp)と同じなので、外に出て行かずに自サーバー内でメールボックスを探してしまい、見つからないとエラーになってしまいます。


つまり www server 上の MTA を用いて
e_mail server 上の spool に届くようにしたいというお話ですか?

mailertable とか SMARTHOST を使って転送するとか,
そういう話ではダメですか?
少なくとも「sendmail 周りの設定を一切変更しない」で
実現するのは無理だと思いますよ.
ミニ
会議室デビュー日: 2005/05/16
投稿数: 9
投稿日時: 2006-09-14 21:02
早々にありがとうございます!

引用:

つまり www server 上の MTA を用いて
e_mail server 上の spool に届くようにしたいというお話ですか?



そうなのです。拙い説明で理解して頂き感謝です。

引用:

mailertable とか SMARTHOST を使って転送するとか,
そういう話ではダメですか?
少なくとも「sendmail 周りの設定を一切変更しない」で
実現するのは無理だと思いますよ.



こうなったら方法はいとわないです。
なるべくならば、簡潔に行える方法が良いです。

mailertable とか SMARTHOSTとはソフトでしょうか?
これについては後ほど、どういうものなのか調べてみたいと思います。

出来ればsendmailの設定などで回避できれば幸いです。

それでは、宜しくお願い致します。
kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2006-09-14 23:20
引用:

ミニさんの書き込み (2006-09-14 21:02) より:

mailertable とか SMARTHOSTとはソフトでしょうか?
これについては後ほど、どういうものなのか調べてみたいと思います。

出来ればsendmailの設定などで回避できれば幸いです。


ではまず調べてみてください.
いずれも sendmail ではごくありふれた設定です.
ミニ
会議室デビュー日: 2005/05/16
投稿数: 9
投稿日時: 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が入っていませんでした。こちらは少々敷居が高そうなので調査中です。

お手数ですが、フォロー頂けると幸いです。

kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2006-09-15 22:14
こんばんわ.
引用:

ミニさんの書き込み (2006-09-15 11:39) より:

尚、smarthostの方はsendmail.mcを修正する必要があるみたいですがレンタルサーバーなのでsendmail.mcが入っていませんでした。こちらは少々敷居が高そうなので調査中です。


いずれの場合も sendmail.cf で定義されていないとダメです.
ただ,読み返してみると
引用:

ホームページ上のcgiフォームからxxx@hogehoge.co.jpにメールを送るとローカルのコンピュータ名(hogehoge.co.jp)と同じなので、外に出て行かずに自サーバー内でメールボックスを探してしまい、見つからないとエラーになってしまいます。


ここはおかしくないですか?
xxx@hogehoge.co.jp に送ろうとして弾かれているのでは?
つまり e_mail server 側で受け取れるように設定されていないのでは?
User Unknown であれば,送られた側が
「User Unknown で弾いたよ」という log があると思います.
それは www/e_mail server のどちらにありますか?
F/A
ぬし
会議室デビュー日: 2006/03/18
投稿数: 312
お住まい・勤務地: Tokyo
投稿日時: 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 と書いて、
該当メールをメールサーバに転送する方法になると思います。
ミニ
会議室デビュー日: 2005/05/16
投稿数: 9
投稿日時: 2006-09-16 11:20
ありがとうございます。

引用:

xxx@hogehoge.co.jp に送ろうとして弾かれているのでは?
つまり e_mail server 側で受け取れるように設定されていないのでは?
User Unknown であれば,送られた側が
「User Unknown で弾いたよ」という log があると思います.
それは www/e_mail server のどちらにありますか?



エラーログはwwwサーバーの方にありました。
なので外に出ていっていないと判断しているところです。

お手数お掛けします。

スキルアップ/キャリアアップ(JOB@IT)