- - PR -
Postfixでメールサーバーを作成したがうまく送受信しない
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-01-24 20:49
はじめまして。
今回初めてメールサーバーをたてようとしているのですがうまくいきません。 皆さんのお知恵をお借りできればと思い、こちらに書き込ませていただきます。 まず現在行っていることですが、離れている2地点(A地点とB地点)の ネットワーク環境の再構築です。 それぞれにファイアウォールをたててその2地点をVPNで結びます。 そしてA地点では特に外部に公開しないので、内部ネットワークのみ構成します。 B地点では外部DNSサーバ、メールサーバ、WebサーバをDMZにたてる予定です。 そして内部にftpサーバ、sambaサーバ、内部DNSサーバをたてます。 サーバマシンに使用するディストリビューションはFedracore3です。 今のところ、ファイアウォールの構築と2地点間のVPNの設定は終わりまして 各サーバをたてるという段階で、現在メールサーバの設定を行っています。 MTAソフトとしてPostfix、またpop3サーバソフトとしてdovecotをインストールし 書籍やWebなどに記載してある設定を参考にして設定しました。 しかし、mailコマンドを使って配信テストを行っても、受信できない状態です。 内部で自分同士でメールの送受信を行ってみたのですが、 返事がきませんでした。 メーラーはOutlook Expressで下記のようなエラーメッセージが出ました。 サーバーへの接続は失敗しました。アカウント:’192.168.10.2',サーバー:’192.168.10.2', プロトコル:SMTP,ポート:25, セキュリティ(SSL):なし,ソケットエラー:10060,エラー番号」:0x800CCC0E pingをうつと以下のような結果が返ってきました。 1. ping 192.168.1.〜 (DMZにあるサーバーマシンの IP アドレス) 応答あり 2. ping linux@〜example.com (FQDNで) 応答なし: という結果でした。 この場合、名前解決がうまくいってないのでしょうか? その場合、設定は外部DNSサーバに行う? | ||||||||
|
投稿日時: 2005-01-24 21:34
こんばんわ.
名前解決がうまくいっていないのではなく, 名前解決の仕方が間違っていると思います. $ ping 〜example.com @ の前はいらないでしょう. client から server への受け渡しがうまくいっていないのですよね? outlook 上では SMTP server は "192.168.10.2" と設定されています? であれば,名前解決の必要は全くありません. 端的に書くと「server 側で受け取る準備が出来ていない」のではないかと. http://pittari-mail.net/outlook.html まず,postfix は起動していますか? 起動しているとしたら,maillog には error など記述されていませんか? localhost で 25/tcp は listen していますか? | ||||||||
|
投稿日時: 2005-01-25 11:13
kazさん
お返事ありがとうございます。 postfixが起動しているか確認しました。 # ps -ef | grep postfix postfix 29691 29690 0 17:10:07 ? 0:00 pickup -l -t fifo -u -c postfix 29692 29690 0 17:10:07 ? 0:00 qmgr -l -t fifo -u -c root 29690 1 0 17:10:07 ? 0:00 /usr/libexec/postfix/master 無事動いているように思います。 次にmaillogを確認しましたが クライアントからメールを送信したログが下記のように出ています。 ちなみにクライアントから自分あてにメールは送信しました。 postfix/pickup[〜] postfix/cleanup[〜] Jan 25 04:02:03 linux(サーバー名) postfix/local[]: 2134F85774 to=<client@linux.example.com>(クライアントのメールアドレス), orig_to=<root>, relay=local, delay=0, status=sent (delivered to maildir) postfix/qmgr[〜] 〜 removed となっていました。 メールを送信などしていたのは昨日のお昼くらいですが。 localhost で 25/tcp は listen していますか? とありましたが、 この確認はどのようにすればよろしいのでしょうか? | ||||||||
|
投稿日時: 2005-01-25 23:44
こんばんわ.
で,「送る」はできて「受ける」はできたのでしょうか?
$ netstat -an | grep smtp として tcp 〜 Listen と出力されれば「聴いて」くれています. が,client から「送信」出来たのであれば, 聴いてくれているはずです. # postconf -n とすると,設定内容を調査してくれるようで, postfix 使いにはわかりやすいようです. その内容を差し支えない範囲で貼りこまれたら如何でしょう? | ||||||||
|
投稿日時: 2005-01-26 01:56
えーと、ログの提示されている部分だけから分かることは
「メールの配送には成功している」ということです。 Maildirの中をのぞいてみればファイルがあるはずです。 どこから来たメールかを示す部分のログがありませんが、 「クライアントからメールを送信したログが」ということですので 25番ポートで受けるところはできているのでしょう。 ・・・と思いきや、 > postfix/pickup[〜] とあるのは、pickupデーモンのログを削ったものかしら。 だとすると、これはローカルから投げられたメールですね。 「クライアントからメールを送信した」というのを、「postfix を 動かしているのとは異なるマシンのMUAを使って送信した」という 意味であると理解したのですが、そうではないようですなあ。 となると、25番ポートで受けられているかどうかは不明。 「何をやってみて、何が出来て何が出来ないのか」ということが 分かりませんのでこれ以上はなんとも。 [ メッセージ編集済み 編集者: ぽんす 編集日時 2005-01-26 10:24 ] | ||||||||
|
投稿日時: 2005-01-26 21:10
kazさん、ぼんすさん
お返事ありがとうございます。 まず最初に先日ログを見て、届いていたと思っていたメールについてですが、 これは私はてっきりクライアントから送信したものが届いたものだと思っていましたが、 ローカルからのメールが届いたものでした。 大変申し訳ありません。 よってクライアントから送信したものはぜんぜん届いていないようです。 次にkazさんからお教えいただいたコマンドをやってみました。 [root@linux ~]# netstat -an|grep smtp unix 2 [ ACC ] STREAM LISTENING 6818 private/smtp unix 2 [ ACC ] STREAM LISTENING 6870 private/bsmtp [root@linux ~]# postconf -n alias_database = hash:/etc/aliases alias_maps = hash:/etc/aliases command_directory = /usr/sbin config_directory = /etc/postfix daemon_directory = /usr/libexec/postfix debug_peer_level = 2 home_mailbox = Maildir/ html_directory = no inet_interfaces = all mail_owner = postfix mailq_path = /usr/bin/mailq.postfix manpage_directory = /usr/share/man mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain mydomain = example.com myhostname = linux.example.com mynetworks = 192.168.1.0/24, 127.0.0.0/8 mynetworks_style = subnet myorigin = $myhostname newaliases_path = /usr/bin/newaliases.postfix queue_directory = /var/spool/postfix readme_directory = /usr/share/doc/postfix-2.1.5/README_FILES relay_domains = $mydestination sample_directory = /usr/share/doc/postfix-2.1.5/samples sendmail_path = /usr/sbin/sendmail.postfix setgid_group = postdrop smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = $myhostname unknown_local_recipient_reject_code = 550 となっておりました。 やはりファイアーウォールの設定がうまくいってないのでしょうか? ファイアーウォールはLinuxマシンなど普通PCを使用して設定せずに ファイアーウォールマシンを購入して設定しているのですが、 メールのところがうまくいってるかが疑問です。 エクスプローラーなどのソフトでつないで設定するやつです。 おそらくフィルターのところで設定するのでよいとは思うのですが。。 ただいまの内容としては メール受信にはE-mailのプロキシというものを使用し、 DNSとHTTPはNATを利用します。 ファイアーウォールの外側インタフェースにエイリアスを設定し、 TCPとUDPのポート53(DNS)宛のパケットはDMZにあるメールサーバへNATし TCPのポート80(HTTP)宛のパケットはDMZにあるWebサーバにNATしています。 ここで内部ネットワークとDMZ間のポート25を開放しているつもりです。 | ||||||||
|
投稿日時: 2005-01-27 00:11
こんばんわ.
まずお詫びですが,自分は postfix について詳しくないので, postconf -n の結果については解説できません. 次に 「client -- server 間のやり取りが出来ているか?」 「出来ているとしてどの段階まで?」 という点については,client から telnet で接続してみると良いと思います. > telnet server 25 とすると,server の 25/tcp,つまり smtp daemon に接続できます. ちなみに > telnet server 110 とすると pop3 daemon に接続できます. 具体的な確認方法については "telnet" と "smtp" という語句で検索すると たくさん hit すると思いますし,ここの部屋でも頻出の内容です. この方法はつまり,「MUA と MTA のやりとりを telnet で実演する」ものなので, 「MUA がなぜ error で弾かれているのか?」ということの手がかりになると思います. 以上,ご参考までに. | ||||||||
|
投稿日時: 2005-01-27 01:30
えーと、どうでもいいことなんですが netstat -an を
grep smtp しちゃあダメです。やるなら netstat -a で。 ですが、pickupデーモンやらqmgrデーモンやらが動いているのにsmtpdだけが 動作していないとは考えにくいので、listen してるでしょう。 kaz さんが書かれているとおり、telnet で25番ポートにつないでみる ところからですね。おそらくつながらないと思います。 で、ファイアウォール機の設定を見直すこともひとつありますが、 あと、postfix を動かしているサーバの iptables (かな?)の 設定がどうなってるかも確かめたほうがよいです。 |