- PR -

sendmailで、受信可ですが送信できません

投稿者投稿内容
Psyduck
常連さん
会議室デビュー日: 2004/01/18
投稿数: 39
投稿日時: 2004-02-19 14:35
みなさんこんにちは、いつもお世話になっております、Psyduckです。
今回はsendmailを使った送信に関して
アドバイスをいただければありがたいです。

[1]環境
RedHat7.3
sendmail 8.12.9

[2]現象
sendmailサーバを立ち上げております。
インターネットからのメール受信は問題なく出来ております。

メーラーとしてOutlookExpressを使い
送信サーバとしてこのsendmailサーバのIPアドレスを指定して
OutlookExpressから送信すると送信できません。(エラーは[3]参照)

送信サーバとして、ISPが提供しているSMTPサーバを指定すれば
問題なく送信できます。

ちなみに、Linuxのmailコマンドを用いても同じく送信できません。

[3]詳細
送信時にOutlookExpressに現れるエラーメッセージは以下の通りです。
なお、()内は私のコメントです。
−−−−−−−−−−−−−−−−−−−−−−
send不可 from 192.168.1.100 (これはLAN内のメールサーバのアドレスで、WANは異なります)
受信者の 1 人がサーバーによって拒否されたため、メッセージを送信できませんでした。
拒否された電子メール アドレス : user1@xxx.com (これは受信者のアドレスです)
件名 'test', アカウント : 'aaa@bbb',
サーバー : '192.168.1.100', プロトコル : SMTP,
サーバーの応答 : '550 5.7.1 <user1@xxx.com>... Relaying denied.
IP name lookup failed [192.168.1.101]', ポート : 25, セキュリティ (SSL): なし,
サーバー エラー : 550, エラー番号 : 0x800CCC79
−−−−−−−−−−−−−−−−−−−−−−

[4]備考
受信者のメールサーバに、
192.168.1.100からメールを出したという情報だけ行っているので
それが原因ではないかと思っています。
自分のドメイン名がそこに現れるように出来ればOKなのではないかと思います。
たぶん、sendmail.mc で、何らかの情報を書き忘れているのではないかと
思っていますが、どうすればいいのか判りません。

おそらく既出の質問ではないかと思っていますが
@IT内を検索しても、目的の情報に辿り着けませんでした。

どなたか、アドバイスをいただければ大変ありがたいです。

コブラ
ぬし
会議室デビュー日: 2003/07/18
投稿数: 1038
お住まい・勤務地: 神奈川
投稿日時: 2004-02-19 16:02
いやぁ、普通はメールサーバーのネットワークアドレスとクライアントのネットワークアドレス
が同じ、、上の例でいうと、 192.168.1. である限り問題なく送信できる筈ですが・・

ひょっとして

/etc/mail/access に

192.168.1 RELAY
127.0.0.1 RELAY
localhost RELAY
localhost.localdomain RELAY

こういうの書いてない
とか、
/etc/hosts にサーバー・クライアントのホスト名、IPアドレスを 記述してない、とか、
/etc/mail/mailertable にメールで使うドメイン名を記述してない、とか、
/etc/mail/relay-domains にリレー先の FQDN 書いてない、とか。。。

どうでしょう?
はゆる
ぬし
会議室デビュー日: 2004/02/16
投稿数: 1008
お住まい・勤務地: 首都圏をウロウロと
投稿日時: 2004-02-19 16:07
こんにちは〜。

サーバの応答が 「Relaying denied」 というからには、サーバ側でメールのリレーを
拒否する設定にしていると思われるのですが…。

RHL では、デフォルトで提供されている sendmail.cf を利用した場合、127.0.0.1
からの接続しか受け付けないように設定されている、とある本に記述されているの
ですが、その点はどうでしょう?
sendmail.mc でいうところの
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1,Name=MTA')
です。
上記のままですと、sendmail がインストールされているサーバからしかメールを送信
できません。
こちらのスレッドも参照してみてくださいね。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?forum=10&topic=8973
がるがる
ぬし
会議室デビュー日: 2002/04/12
投稿数: 873
投稿日時: 2004-02-19 16:25
どもも。がると申します。
んと、とりあえず状況を整理してみたいのですが。

・SMTPサーバ:RedHat7.3 上の sendmail 8.12.9
がありまして。
例えばこのSMTPサーバの受信すべきドメインがsmtp.comだとして。

*外部SMTPサーバから@smtp.comへメールを送ると、正しくmailboxに格納される
*問題になるSMTPからメールを送ろうとするとNGである

という認識でよいでしょうか?
とりあえず上記認識を基準に、もう少し詳細を調べていきたいと思います。

当面、まずポイントは
・根本的に送れないのか
・別IPからだから送れないのか
を判断したく思います。

mailコマンドを…との事なので恐らく「根本的に」NGだとは思うのですが、
一応念のため、もう少し直接的にアタックしてみたいかと思います。

1.内部からアタック
SMTPサーバのコンソールにloginしてください。
以降、コンソールからの操作になります。
コード:
telnet 127.0.0.1 smtp


で、SMTPサーバにアクセスします。
あとはSMTPサーバとのやり取りになります。
基本的には
コード:
HELO 適当なドメイン


で一発目のご挨拶を。
コード:
MAIL_FROM fromのメールアドレス


で自分のアドレスを、
コード:
RCPT_TO 送りたいメールアドレス


で送りたいメールアドレスを指定します。
その後
コード:
DATA


でメールの入力モードに入ります。
注意点は「メールヘッダからの入力」になるので。
例えば以下のように入力してくださいませ。
コード:
From: 適当に
To: 適当に
Subject: メールタイトル。英数字のほうが分かりやすいかも

本文〜


本文の直前の空改行を忘れずに^^
本文の入力が終わったら、^d(コントロール+d)で終了させると
メールが送れる…はずです。
ここでNGだと「そもそもメールが送れない」ことになります。

1.内部からアタック2
同じく内部から。ただし、telnetを
telnet SMTPサーバのIP smtp
としてから後は同様に。

3.外部から
適当な、Winodwsあたりでよいので、マシンを選択します。
telnet SMTPサーバのIP smtp
でtelnet接続して、後は同様に。

これで「どこで引っかかってるか?」が大体判定できます。

------------
んで。
多分127.0.0.1以外がはじかれてると思うです。
もしそうだとすると、九分九厘
/etc/mail/access
ファイル関連かなぁ、と。
このファイルは、簡単に言うと「SMTPでの送信を受け付けてもいい
IPアドレスが書き込める」モノだと思ってもらってよいと思います。
# 実際にはOKとNGの両方が書き込めるのですが

ここに、LANからであれば内部ネットワークとかドメインとかを
指定してみてください。
で、
makemap hash /etc/mail/access < /etc/mail/access
を実行してからsendmailプロセスを再起動、っと。

-----------
これは「不用意なリレーをさせないため」の、SMTPサーバの多くが
持つ基本的な防御方針のためです。
治って一段落してから
・SMTP
・リレー
・不正
あたりをキーにgoogleあたりで調べて色々なPageを読むと、
バックボーンが見えてくると思います ^^

追伸
qmailも使いやすいですよ〜
っと、個人的な好みから会話をしてみる(笑
Psyduck
常連さん
会議室デビュー日: 2004/01/18
投稿数: 39
投稿日時: 2004-02-20 05:09
こんにちは、Psyduckです。

コブラさん、早速のレスをどうもありがとうございます。

>/etc/mail/access に
>
>192.168.1 RELAY
>127.0.0.1 RELAY
>localhost RELAY
>localhost.localdomain RELAY

192.168.1 RELAY
がありませんでしたので、この1行を加えて
sendmailを再起動しましたが
結果は変わりませんでした。

>/etc/hosts にサーバー・クライアントのホスト名、IPアドレスを 記述してない、とか、

記述されていました。

>/etc/mail/mailertable にメールで使うドメイン名を記述してない、とか、

このファイルは、存在していましたが空のファイルでした。
どのように記述すべきなのか教えていただけませんでしょうか?

>/etc/mail/relay-domains にリレー先の FQDN 書いてない、とか。。。

これは、ファイルを検索してみましたが
どこにも見当たりませんでした。
どのように作成して何を記述すべきか教えていただければ幸いです。

はゆるさん、どうもありがとうございます。

>DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1,Name=MTA')

教えていただいたURLを参考にして
DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')
を加えて、sendmail.cfを再作成してから再起動しましたが
現象は変わりませんでした。

Psyduck
常連さん
会議室デビュー日: 2004/01/18
投稿数: 39
投稿日時: 2004-02-20 05:51
がるさん、レスポンスをありがとうございます。

>*外部SMTPサーバから@smtp.comへメールを送ると、正しくmailboxに格納される
>*問題になるSMTPからメールを送ろうとするとNGである

おっしゃる通りです。

問題切り分けがやりやすいかと思い
OutlookExpressに表示されるエラーメッセージと
sendmailサーバに残っている送信時のエラーを以下に載せます。

sendmailサーバ
−−−−−−−−−−−−−−−−−−−−−−−−−−
Feb 19 12:10:23 xxxxx sendmail[xxxxx]: xxxxxxxx009774:
to=<user1@xxx.com>,
ctladdr=<root@localhost.localdomain> (0/0), delay=16:21:37,
xdelay=00:06:18, mailer=esmtp, pri=5880347, relay=mx.xxx.com. [xx.x.xx.x], dsn=4.0.0, stat=Def
erred: Connection timed out with mx.xxx.com.
−−−−−−−−−−−−−−−−−−−−−−−−−−

OutlookExpress
−−−−−−−−−−−−−−−−−−−−−−−−−−
受信者の 1 人がサーバーによって拒否されたため、メッセージを送信できませんでした。
拒否された電子メール アドレス : user1@xxx.com 件名 'test',
アカウント : 'xxxxx', サーバー : '192.168.1.100', プロトコル : SMTP,
サーバーの応答 : '550 5.7.1 <user1@xxx.com>... Relaying denied.
IP name lookup failed [192.168.1.101]', ポート : 25, セキュリティ (SSL): なし,
サーバー エラー : 550, エラー番号 : 0x800CCC79
−−−−−−−−−−−−−−−−−−−−−−−−−−

送り先のSMTPサーバが
Relay(この場合は受信?)を拒否しているのではないかと思います。

ちなみに、送り先アドレスをまったく違うものに変えても同じ現象です。

だから、何か送信時の設定が違っていて
こちらからの情報が足りなくて相手のサーバが拒否しているのかなぁ?
とも思っています。

>HELO 適当なドメイン

コンソールにログインして
telnet 127.0.0.1 smtp
は出来たのですが
どうもその後の入力方法が違っていたのか、Ctrl/Dで終了できず
仕方が無いのでkillコマンドで終了しました。
という事で、教えていただいた「問題の切り分け」が出来ておりません。

しかし、他のIPアドレスのOutlookExpressから
このsendmailサーバを使った送信をした場合も同様の現象ですので

>・根本的に送れないのか
>・別IPからだから送れないのか

これは「根本的に送れない」という事だと思います。

また、前述のように
/etc/mail/access
を変更してみましたが、現象は変わっていません。

現状での/etc/mail/access ファイルの内容は
localhost.localdomain RELAY
localhost RELAY
127.0.0.1 RELAY
192.168.1 RELAY
になっています。

何かアドバイスをいただければありがたいです。
kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2004-02-20 09:07
引用:

sendmailサーバ
−−−−−−−−−−−−−−−−−−−−−−−−−−
Feb 19 12:10:23 xxxxx sendmail[xxxxx]: xxxxxxxx009774:
to=<user1@xxx.com>,
ctladdr=<root@localhost.localdomain> (0/0), delay=16:21:37,
xdelay=00:06:18, mailer=esmtp, pri=5880347, relay=mx.xxx.com. [xx.x.xx.x], dsn=4.0.0, stat=Def
erred: Connection timed out with mx.xxx.com.
−−−−−−−−−−−−−−−−−−−−−−−−−−
送り先のSMTPサーバが
Relay(この場合は受信?)を拒否しているのではないかと思います。

ちなみに、送り先アドレスをまったく違うものに変えても同じ現象です。

だから、何か送信時の設定が違っていて
こちらからの情報が足りなくて相手のサーバが拒否しているのかなぁ?
とも思っています。



OutlookExpress の " Relaying denied. IP name lookup failed [192.168.1.101]" という内容は見あたりませんか?この内容の log だと,mx.xxx.com に繋ぎに行って timeout で connection が切れたように見えます.

引用:

また、前述のように
/etc/mail/access
を変更してみましたが、現象は変わっていません。

現状での/etc/mail/access ファイルの内容は
localhost.localdomain RELAY
localhost RELAY
127.0.0.1 RELAY
192.168.1 RELAY
になっています。



これがあるのに " Relaying denied. IP name lookup failed [192.168.1.101]" ということは,access.db を参照していないんじゃないかと...
ちなみに該当の MTA は直接 Internet へ配送してますよね?
できれば sendmail.mc を貼り付けてみては?
※話の流れから cf で作ってると思っています.

引用:

makemap hash /etc/mail/access < /etc/mail/access
を実行してからsendmailプロセスを再起動



この場合,sendmail は kill -HUP しなくて良いと思います.
Psyduck
常連さん
会議室デビュー日: 2004/01/18
投稿数: 39
投稿日時: 2004-02-20 09:36
kazさん、ならびに時間を割いてアドバイスを下さった皆さん。
こんにちは、Psyduckです。

>makemap hash /etc/mail/access < /etc/mail/access
>を実行してからsendmailプロセスを再起動

すみませんでした。
これを忘れていました。
access.dbを再作成したら
エラーは出なくなりました。

ただ、送信後数分経った今も正常にメールが届いていないのが気になりますが
ちょっと様子を見てみようと思います。

お忙しい中、アドバイスをいただき
本当にありがとうございます。m(__)m

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