- PR -

qmailで外部への送信ができません

1
投稿者投稿内容
bee
会議室デビュー日: 2003/04/01
投稿数: 11
投稿日時: 2003-04-01 16:15
初投稿になります。よろしくおねがいします。

現在、qmailでメールサーバを構築しているのですが
外部サーバへのメール送信が出来ない状態になっています。
サーバの内部から内部への送信と、内部、外部両方からの受信は
問題なくできます。
/var/log/maillogには以下のようなエラーがでています。

Apr 1 16:03:46 dell qmail: 1049180626.484794 delivery 12: deferral: Sorry,_I_wa
sn't_able_to_establish_an_SMTP_connection._(#4.4.1)/

相手側のSMTPサーバに接続できないようなことだと思うのですが、
別のメールサーバを使った場合は正常に送信できます。
また、iptablesでフィルタリングを行っていますが25, 110はあけています。
これは外部からtelnetで25, 110番ポートに接続できるので大丈夫だと思っています。
このエラーの原因は一体どこにあるのでしょうか。
説明が下手で分かりにくいかと思いますが、どなたかご教授よろしくお願いいたします。

OS:RedHat 8.0
メールサーバ: qmail-1.0.3
ucspi-tcp-0.88
vpopmail-5.2.1
daemontools-0.76
sumi
常連さん
会議室デビュー日: 2002/01/11
投稿数: 42
投稿日時: 2003-04-02 03:23
こんにちは。素人なのにちょっとでしゃばります。
多分、DNSの設定ではないでしょうか?
ホストネームあたりかMXレコードが書き間違えてるとか
そのあたりだと思います。

ヒントになれば幸いです。
bee
会議室デビュー日: 2003/04/01
投稿数: 11
投稿日時: 2003-04-02 08:35
sumi様、回答ありがとうございます。
私もDNSの設定に問題があるのかなと思っていたのですが
別の作業を行っているときに1024番から65535番までの
tcpとudpポートを開放したところメールが外部に送信されるように
なりました。メールが送信できるようになったのはいいのですが
理由がいまいちよくわからないのでなんか変な感じです。
メール送信には25番ポート以外に使われるものがあるのでしょうか?
どのポートを開放すればいいのかがはっきりとしていないため
現在は1024番から65535番までのポートを開放しているため
セキュリティ上も問題がある気がしてなりません。

ご存じの方がいらっしゃいましたらご教授よろしくお願いいたします。
McLaren
ぬし
会議室デビュー日: 2002/01/15
投稿数: 784
お住まい・勤務地: 東京
投稿日時: 2003-04-02 09:51
 この件に関しては私も一年前に随分悩みました。キーワードとしては「TCP」 と 「3ウェイハンドシェイク」で検索してみると疑問が解けると思います。またそれに対応するiptablesに関するキーワードは「established」です。私の下手な説明よりもgoogleで検索するほうがわかりやすいと思いますので参考にしていだければ幸いです。

 1024番から65535番をオープンすることはあながち間違いではありませんが、「established」が分かれば、そこまでがっさり開けずに済みます。ご検討をお祈りしております。
bee
会議室デビュー日: 2003/04/01
投稿数: 11
投稿日時: 2003-04-02 14:32
okumura様、回答ありがとうございます。
早速調べてみました。
3ウェイハンドシェイクが行われていることに関しては知っていたのですが、
これは通信を行おうとするポートとは別のポートを使って行われているという
解釈でよろしいのでしょうか。
また、SMTP以外でも3ウェイハンドシェイクは行われていると思うのですが
なぜ、SMTPだけがフィルタリングに引っかかってしまったのでしょう。
同一サーバにはPOP, HTTP, DNS, SSHが稼働していて、SMTPと同様な
フィルタリングルールを適応していたのですが、特に問題なく通信が
出来ています。それとも、出来ているように見えるだけで実は問題が
発生する可能性はあるのでしょうか。調べれば調べるほど分からないことが
山積みになっていってます・・・
ヒントだけでも良いのでどなたかお助けください。お願いします。
わらび
ベテラン
会議室デビュー日: 2002/08/30
投稿数: 53
投稿日時: 2003-04-02 15:34
こんにちは。わらびです。

少し整理してみますと、

クライアント     サーバ
|−−−−|    |――――|
|    |−−−−|    |
|−−−−|    |――――|

の間で、

クライアント     サーバ
|−−−−| SYN  |――――|
|    |−−−>|    |
|−−−−|    |――――|
1024以降の 25
 任意のポート SMTPポート


クライアント     サーバ
|−−−−|SYN+ACK |――――|
|    |<−−−|    |
|−−−−|    |――――|
1024以降の 25
 任意のポート SMTPポート


クライアント     サーバ
|−−−−| ACK  |――――|
|    |−−−>|    |
|−−−−|    |――――|
1024以降の 25
 任意のポート SMTPポート

これで、接続が確立するわけですよね。
beeさんのSMTPサーバから、外部にメール転送する時は、
この図だと、クライアントにあたるわけですよね。

そうすると、どこのパケットをDROPしてしまうため、通信が
確立できなくなるか、お分かりですね。

そうすると、ほかのプロトコルでうまくいってた理由もお分かりでしょう。
DNSのforworderを設定していると同様の問題にあたる可能性がありますね。

それでは

追記 レイアウトが狂ってしまいましたが、雰囲気は伝わると思います。すみません

[ メッセージ編集済み 編集者: わらび 編集日時 2003-04-02 15:35 ]
bee
会議室デビュー日: 2003/04/01
投稿数: 11
投稿日時: 2003-04-08 09:01
わらびさん、回答ありがとうございます。
別件で忙しかったもので、返事が遅れて申し訳ありません。

わかりやすい説明ありがとうございます。
この場合SMTPサーバが「クライアント」になるのですね。
ここに気がつけばそんなに難しい問題でもないのですが、
自分ひとりで考えていたら気づくのにどれくらいかかっただろうか・・・

他のサービス(WEBサーバ等)は「サーバ」として機能していたため
問題なく通信が出来ていたということですね。
これで納得できました。これを元にフィルタリングルールを
再設計してみようと思います。
みなさま、どうもありがとうございました。
1

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