- - PR -
postfix + dovecot 構成にて送受信エラー:POPの取り出しおよびSMTP-AUTH
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-07-16 10:28
CentOS5で postfix + dovecot によるメールサーバ環境を構築しようとしているのですが、送受信がうまくいかずに困っております。(一見送信はうまくいっているようなのですが…)
何か原因がつかめればと思い投稿させていただきました。 やりたいことは、SMTP-Auth認証を有効にしたLANおよび外部からのメール環境の構築です。 CentOSのネットワークサーバ構築ガイド等を参考にして、必要なパッケージをインストール済みです。 (ちなみにyumにてインストールしました。) ※ 環境は、 【環境構成】 ◆サーバ OS=CentOS5 Linux hoge.com 2.6.18-92.1.6.el5 #1 SMP Wed Jun 25 13:49:24 EDT 2008 i686 i686 i386 GNU/Linux SMTP=postfix POP3=dovecot ・インストールしたパッケージ構成 postfix-2.3.3-2 cyrus-sasl-plain-2.1.22-4 cyrus-sasl-lib-2.1.22-4 cyrus-sasl-2.1.22-4 system-switch-mail-gnome-0.5.25-12 dovecot-1.0.7-2.el5 mysql-5.0.45-7.el5 perl-DBI-1.52-1.fc6 ・SELinux : OFF ・F/W設定済 tcp 0 0 :::110 :::* LISTEN tcp 0 0 :::143 :::* LISTEN tcp 0 0 :::993 :::* LISTEN tcp 0 0 :::995 :::* LISTEN tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN ◆クライアント1 サーバマシンと同機 メーラ:thunderbird 2.0.0.14 ◆クライアント2 bridge接続他機 OS=Windows XP SP2 メーラ:thunderbird 2.0.0.14 ※ 現象は、 P001:postfix SMTP-AUTH で送信ができない P002:thunderbird で受信ができない。 SMTP-AUTHがうまくいっていない(?)にせよ、送信はうまくいっているようで スプールにはメールが送信されていることが確認できます。(/var/mail/username) なので、とりあえず、「P002:thunderbird で受信ができない。」を解決しようとしています。 [root@myhost mail]# pwd /var/mail [root@myhost mail]# ll | grep cvsum040 -rw-rw---- 1 cvsum040 mail 741 7月 15 10:19 cvsum040 [root@myhost mail]# 中身もちゃんとあり、受信内容も正しいようです。 しかし、thunderbird 2.0.0.14で受信トレイを開く際に 「パスワードを送信できませんでした。メールサーバXXからの応答:Internal login failure. Refer to server log for more information」というエラーダイアログがでます。 【ログ:/var/log/maillog】 /var/log/maillog には、以下のように出力されています。 Jul 15 20:08:45 hidetarou dovecot: Logins with UID 0 not permitted (user root) Jul 15 20:08:45 hidetarou dovecot: pop3-login: Internal login failure: user=<root>, method=PLAIN, rip=::ffff:221.191.108.88, lip=::ffff:192.168.1.40 どうやらpop3-loginがこけているようなのはわかるんですが、ここから先がわかりませんでした。 一応関連する情報を集め、dovecot.confなどを疑って修正したりしたのですが、現象は変わりません。 ※設定は、 【設定内容】 ◆/etc/postfix/main.cf queue_directory = /var/spool/postfix command_directory = /usr/sbin daemon_directory = /usr/libexec/postfix mail_owner = postfix myhostname = myhost.hoge.com mydomain = hoge.com myorigin = $myhostname inet_interfaces = all mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain local_recipient_maps = unix:passwd.byname $alias_maps unknown_local_recipient_reject_code = 550 alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases debug_peer_level = 2 debugger_command = sendmail_path = /usr/sbin/sendmail.postfix newaliases_path = /usr/bin/newaliases.postfix mailq_path = /usr/bin/mailq.postfix setgid_group = postdrop html_directory = no manpage_directory = /usr/share/man sample_directory = /usr/share/doc/postfix-2.3.3/samples readme_directory = /usr/share/doc/postfix-2.3.3/README_FILES # SMTP-Auth設定 smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous broken_sasl_auth_clients = yes smtpd_recipient_restrictions = permit_mynetworks, permit_auth_destination, permit_sasl_authenticated, reject ◆/usr/lib/sasl2/smtpd.conf pwcheck_method: saslauthd mech_list: plain login cram-md5 digest-md5 ◆/etc/dovecot.conf protocols = imap imaps pop3 pop3s default_mail_env = mbox:~/mail/:INBOX=/var/mail/%u protocol imap { } protocol pop3 { } protocol lda { postmaster_address = postmaster@example.com } auth default { mechanisms = plain passdb pam { } userdb passwd { } user = root } dict { } plugin { } どなたか原因がわかりましたら、ご教授お願い致します。 |
|
投稿日時: 2008-07-16 12:27
まず第一段階なんですが、
thunderbird での受信には成功しました。 結果をご報告いたしますと、 なんと、root でpopから取得しようとしてたためでした。 これは、やってはいけないことだったんですね。 (普通はROOT宛は転送設定とかしますっけ) 別ユーザーでならば、パスワードいれれば、ちゃんと取得できました。 基本的なセキュリティの問題だったようです。 お騒がせしました。 次に…SMTPにとりかかっているところです。 これももしかしたらケアレスミスっぽいですが… 何かお気づきの方いらっしゃれば、ご指摘いただけると助かります。 |
|
投稿日時: 2008-07-16 16:23
次に第二段階ですが…経過報告いたします。
◆SMTP-AUTH周りの確認を行いました。 うまくいっているのかいないのか、一見判断しずらかったので検証してみました。 メールサーバ外部からSMTPを指定して接続を試み、 外部のアカウントに飛ぶか 内部のアカウントに飛ぶかをチェックしてみました。 なお、クライアントはメーラとJavaMailによるTOOLの両方で確認しました。 メールサーバ(SRV):domain.com クライアント(CLI):c_host 外部メールアカウント1:out@hoge.com 外部メールアカウント2:out2@hoge.com 内部メールアカウント1:u1@domain.com 内部メールアカウント2:root@domain.com サーバ側では、前述の投稿のような設定で、SMTP-AUTH を有効設定にしたつもりでおります。 結果は ID SRV CLI SMTP FROM TO RESULT test01 domain.com c_host domain.com out@hoge.com u1@domain.com OK test02 domain.com c_host domain.com out@hoge.com root@domain.com OK test03 domain.com c_host domain.com out2@hoge.com u1@domain.com OK test04 domain.com c_host domain.com out2@hoge.com root@domain.com OK test05 domain.com c_host domain.com u1@domain.com u1@domain.com OK test06 domain.com c_host domain.com u1@domain.com root@domain.com OK test07 domain.com c_host domain.com u1@domain.com out@hoge.com NG test08 domain.com c_host domain.com u1@domain.com out2@hoge.com NG test09 domain.com c_host domain.com root@domain.com u1@domain.com OK test10 domain.com c_host domain.com root@domain.com root@domain.com OK test11 domain.com c_host domain.com root@domain.com out@hoge.com NG test12 domain.com c_host domain.com root@domain.com out2@hoge.com NG test13 domain.com c_host null out@hoge.com u1@domain.com NG test14 domain.com c_host null out@hoge.com root@domain.com NG test15 domain.com c_host null out2@hoge.com u1@domain.com NG test16 domain.com c_host null out2@hoge.com root@domain.com NG test17 domain.com c_host null u1@domain.com u1@domain.com NG test18 domain.com c_host null u1@domain.com root@domain.com NG test19 domain.com c_host null u1@domain.com out@hoge.com NG test20 domain.com c_host null u1@domain.com out2@hoge.com NG test21 domain.com c_host null root@domain.com u1@domain.com NG test22 domain.com c_host null root@domain.com root@domain.com NG test23 domain.com c_host null root@domain.com out@hoge.com NG test24 domain.com c_host null root@domain.com out2@hoge.com NG これがうまくいっているのかいないのかの検証ですが、 まずここまでは、メールクライアント側でSMTP-AUTH を設定せずに行いました。 なので、疎通しないもんだと思ってたんですが、自分の内部メールアカウントに 対しては、認証もせずに…飛びます。(test01~test06,test09,test10) 再び、メールクライアント側でSMTP-AUTH を設定して行うと ID SRV CLI SMTP FROM TO RESULT test25 domain.com c_host domain.com u1@domain.com out@hoge.com OK test26 domain.com c_host domain.com u1@domain.com out2@hoge.com OK となりました。 この時点でようやくすっきりした気分になりました。 test07,test08 では結果はNGでしたが、それはSMTP-AUTH が効いていたためはじかれており クライアントで設定すると通りました。(test25,test26) あと、そもそもrootユーザでの確認は論外でした。 ということで、まずは、ここまでは何とかいったようです。 ありがとうございました。 もっと手の込んだ設定をしたらどうなるかわからないのですが、一旦はこれで解決したようです。 結構ややこしかったです。(ふー) |
|
投稿日時: 2008-07-16 19:56
また新たな問題が発生してしまい、まだ設定は不備があることが判明しました。。。
再び詰まっています。 一応LAN内部においてメールサーバとは違うクライアントからの疎通はうまくいったようなんですが、ルータ外部から、SMTP接続送信しようとすると、うまくいかないようです。 メーラからも接続を拒否されますが、 JavaMailのクライアントからやってみても DEBUG SMTP: useEhlo true, useAuth true DEBUG SMTP: trying to connect to host "hoge.mail.com", port 25, isSSL false javax.mail.MessagingException: Could not connect to SMTP host: hoge.mail.com, port: 25; nested exception is: java.net.ConnectException: Connection refused: connect となり接続拒否されてしまいます。 サーバ側のログには 反応なし・・・ ということはクライアントから接続さえできていない。。。といった感じです。 ちなみに、hosts.allow には smtp で使用する外部のアクセスを許可しています。 他にも設定するところがあるでしょうか? もしわかる方がいらっしゃいましたら、お手数ですが、ご教授くださいませ。 よろしくお願いいたします。 |
|
投稿日時: 2008-07-16 20:53
> 一応LAN内部においてメールサーバとは違うクライアントからの疎通は
> うまくいったようなんですが、ルータ外部から、SMTP接続送信しようとすると、 > うまくいかないようです。 それがSMTPに限ってであれば… ・ファイアウォール設定 ですかね? なにも繋がらないのであれば、 ・デフォルトゲートウェイ という可能性もありますね。 外部ネットワークからpingは通るかどうかとか、 まずはその辺りから確認されてはいかがでしょうか? |
|
投稿日時: 2008-07-17 10:44
F/Aさん
どうもコメントありがとうございます。 確認してみました。 ・ファイアウォール設定 cat /etc/sysconfig/iptables | grep 25 -A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT あけております。 ・ルータ側 こちらも通してあります。 そもそもLAN内部とはいえ他機からアクセスできる時点で、ここらへんは設定済みかと思っているのですが… ・/etc/hosts.allow 指定IP許可ずみです。 smtp:192.168.x. hogeip ・DNS DynDNSの設定は? ここが怪しいのかな?と思って確認してみました。 DNSは自分でたてていなくて、借り物ですが、 Mail Routing: Yes, let me configure Email routing. MX Hostname:hoge Primary: Yes, use it as my primary mail relay. No, use it as backup MX record. で、ここは MX Hostnameに何を入れるべきなのかで悩んだんですが、 最初にドメイン名そのものを入れてみて 結果は: LAN内部他機からの疎通OK:通るんですね… LAN外部他機からの疎通NG 適当な名前、ここではhogeをいれてみる (ここはDNSへの自己申告名ですよね?適当でいいと聞いてますが…) で結果変わらずでした。 LAN内部他機からの疎通OK:通るんですね…ということはあんまし関係ないのかな。 LAN外部他機からの疎通NG もう一度頭を整理すると LAN外部から対象のSMTP経由送信:NG LAN外部から対象のメールサーバのアカウントへの送信:OK です。 まあ、考えてみれば、外部からSMTPを踏み台にされていない構成なので、むしろこちらのほうが望ましい気もしますが、そういう指定をまだした記憶はなく、どこでしているのかがはっきりしません。 現在のところ、そのような状態です。 postfixをお使いの方でお気づきの方がございましたら、コメントいただけると助かります。 |
|
投稿日時: 2008-07-17 13:22
第三段階のご報告です。
OutLookExpressやthunderbirdなどのメーラにおいて、 ルータ内部、外部どちらも送受信ができるようになったことを確認できました。 なぜか初回はエラーが生じ、 [送信トレイ] フォルダからメッセージを開けませんでした。 アカウント : 'hoge.com', サーバー : 'hoge.com', プロトコル : SMTP, ポート : 25, セキュリティ (SSL): なし, エラー番号 : 0x800420C8 と出るのですが、POP受信には成功し、その後、そのアカウントから送信するとうまくいったようでした。?なぜ初回にこけたのかわかりません。 いままで使用していた確認用の JavaMailのほうは 依然として、前回投稿した内容の現象のままです。 ルータ内部と外部の現象が、同じクライアントアプリを利用して異なることに疑問を抱いているところです。 現在の疑いどころは、DNSの部分なのですが、 メーラでは成功してしまったので、この部分が直接関係しないのかなと感じていたりします。 以上、経過報告でした。 まだしっくりと、きていません。。。 |
|
投稿日時: 2008-07-17 19:36
いまいちネットワーク構成が把握出来ないですが…
ルータと仰られているのはADSLとかFTTHのNATブロードバンドルータですか? それともCISCOとかの業務用L3スイッチですか? DynDNSってキーワードが気になっています。 ちなみにJavaMailはSMTP送信ではなく、POP受信であれば 外部からでも可能なのですか? なおAUTHを使うなら25じゃなく587がいいかもしれませんね。 OP25Bなんかもあるかもしれませんし。 それとDNSが原因かどうかはSMTPサーバをIPアドレスで指定すれば 切り分け可能だと思います。 [ メッセージ編集済み 編集者: F/A 編集日時 2008-07-17 19:43 ] |
1