- PR -

Postfixでメールサーバーを作成したがうまく送受信しない

投稿者投稿内容
naka
常連さん
会議室デビュー日: 2005/01/24
投稿数: 22
投稿日時: 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サーバに行う?
kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2005-01-24 21:34
こんばんわ.
引用:

nakaさんの書き込み (2005-01-24 20:49) より:

2. ping linux@〜example.com (FQDNで)
  応答なし:

という結果でした。


名前解決がうまくいっていないのではなく,
名前解決の仕方が間違っていると思います.
$ 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 していますか?
naka
常連さん
会議室デビュー日: 2005/01/24
投稿数: 22
投稿日時: 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 していますか? とありましたが、
この確認はどのようにすればよろしいのでしょうか?

kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2005-01-25 23:44
こんばんわ.
引用:

nakaさんの書き込み (2005-01-25 11:13) より:

メールを送信などしていたのは昨日のお昼くらいですが。


で,「送る」はできて「受ける」はできたのでしょうか?
引用:

localhost で 25/tcp は listen していますか? とありましたが、
この確認はどのようにすればよろしいのでしょうか?


$ netstat -an | grep smtp
として tcp 〜 Listen と出力されれば「聴いて」くれています.
が,client から「送信」出来たのであれば,
聴いてくれているはずです.

# postconf -n
とすると,設定内容を調査してくれるようで,
postfix 使いにはわかりやすいようです.
その内容を差し支えない範囲で貼りこまれたら如何でしょう?
ぽんす
ぬし
会議室デビュー日: 2003/05/21
投稿数: 1023
投稿日時: 2005-01-26 01:56
えーと、ログの提示されている部分だけから分かることは
「メールの配送には成功している」ということです。
Maildirの中をのぞいてみればファイルがあるはずです。

どこから来たメールかを示す部分のログがありませんが、
「クライアントからメールを送信したログが」ということですので
25番ポートで受けるところはできているのでしょう。

・・・と思いきや、
> postfix/pickup[〜]
とあるのは、pickupデーモンのログを削ったものかしら。
だとすると、これはローカルから投げられたメールですね。
「クライアントからメールを送信した」というのを、「postfix を
動かしているのとは異なるマシンのMUAを使って送信した」という
意味であると理解したのですが、そうではないようですなあ。
となると、25番ポートで受けられているかどうかは不明。

「何をやってみて、何が出来て何が出来ないのか」ということが
分かりませんのでこれ以上はなんとも。

[ メッセージ編集済み 編集者: ぽんす 編集日時 2005-01-26 10:24 ]
naka
常連さん
会議室デビュー日: 2005/01/24
投稿数: 22
投稿日時: 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を開放しているつもりです。
kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2005-01-27 00:11
こんばんわ.
引用:

nakaさんの書き込み (2005-01-26 21:10) より:

まず最初に先日ログを見て、届いていたと思っていたメールについてですが、
これは私はてっきりクライアントから送信したものが届いたものだと思っていましたが、
ローカルからのメールが届いたものでした。
大変申し訳ありません。
よってクライアントから送信したものはぜんぜん届いていないようです。


まずお詫びですが,自分は 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 で弾かれているのか?」ということの手がかりになると思います.

以上,ご参考までに.
ぽんす
ぬし
会議室デビュー日: 2003/05/21
投稿数: 1023
投稿日時: 2005-01-27 01:30
えーと、どうでもいいことなんですが netstat -an を
grep smtp しちゃあダメです。やるなら netstat -a で。
ですが、pickupデーモンやらqmgrデーモンやらが動いているのにsmtpdだけが
動作していないとは考えにくいので、listen してるでしょう。

kaz さんが書かれているとおり、telnet で25番ポートにつないでみる
ところからですね。おそらくつながらないと思います。
で、ファイアウォール機の設定を見直すこともひとつありますが、
あと、postfix を動かしているサーバの iptables (かな?)の
設定がどうなってるかも確かめたほうがよいです。

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