Dovecot IMAP POP3 受信方法について。


OS:REDHAT EL3 WS使用

インストモジュール
dovecot0.99.14-1.1.el3.rf
courier-imap 4.0.3-1
courier-imap-debuginfo 4.0.3-1.fc3.bits
dovecot 0.99.14-1.1.el3.rf
imap 2002d-2
imap-devel 2002d-2
imap-utils 2002d-11
php-imap 4.3.2-8.ent
popt 1.8.1-4.2
Postfix2.4.1

courier-imap-debuginfo 4.0.3-1.fc3.bitsはfc3ですがrpmでインストできたためそのままにしました。

上記インストール後、dovecot.confを

protocols = imap imaps pop3 pop3s
ssl_cert_file = /usr/local/certs/server.crt
ssl_key_file = /usr/local/certs/server.key

と変更し、pop3で受信出来るように設定したつもりです。
localhostではpop3受信は出来ます。
127.0.0.1、192.168や外部からではメールが届きません。(外部から送信してもエラーは帰ってきません)
又phpの imap_open()が使用できません。
Warning: imap_open(): Couldn't open stream {localhost:110/pop}INBOX in /var/www/html/php3test.php on line 3

何が原因かわかりませんでしょうか?
もし受信が出来るようになりましたらそれなりの御礼はさせて頂きたいと思います。

宜しくお願い致します。

回答の条件
  • URL必須
  • 1人30回まで
  • 登録:
  • 終了:2007/06/02 18:33:40
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答4件)

id:bayan No.1

回答回数100ベストアンサー獲得回数13

ポイント23pt

とりあえず dovecot は起動しているんでしょうか

root で以下を実行して結果を教えてください。

# ps afx | grep dove

# chkconfig --list dovecot

# netstat -lnp | grep :110

# service dovecot status


> localhostではpop3受信は出来ます。

Devecot をインストールしたマシン上で

# telnet localhost 110

とか試したということでしょうか。

> 127.0.0.1、192.168や外部からではメールが届きません。(外部から送信してもエラーは帰ってきません)

127.0.0.1、192.168.?.? はDovecot を入れたマシンのアドレスですか?

また POPの受信ができないということでしょうか、それともマシンの外から送信したメールが届かないということであれば

Dovecot ではなく Postfix や ネットワークの問題になりますね。。。



http://www.aconus.com/~oyaji/centos/dovecot_centos.htm

http://www.nurs.or.jp/~telnet/pop3.html

id:zenval

# ps afx | grep dove

3729 ? S 0:00 dovecot

3738 ? S 0:00 \_ dovecot-auth

5977 pts/1 S 0:00 \_ grep dove

# chkconfig --list dovecot

# netstat -lnp | grep :110

dovecot 0:オフ 1:オフ 2:オン 3:オン 4:オン 5:オン 6:オフ

# service dovecot status

dovecot (pid 3729) を実行中...

> localhostではpop3受信は出来ます。

>Devecot をインストールしたマシン上で

># telnet localhost 110

>とか試したということでしょうか。

Linuxサーバーのメーラーでlocalhostで接続した所受信可能でした。

又、telnet IPadress 110 で接続したところ、110ポートは空いているようです。

user アカウント

pass パス で OKと出てきます。

postfixの設定でユーザーメールボックスに外部からのメールが届かないということがあるのでしょうか?

2007/05/30 13:11:18
id:bayan No.2

回答回数100ベストアンサー獲得回数13

ポイント23pt

devocot の動作はよさそうですね。。。

tail -f /var/log/maillog を実行して、メールログの確認をしながら、

外部からメールを送信すると何が記録されますか?

また、telnet サーバーの名前 25 を実行するとどうでしょうか。

a Linux サーバー上

b 同じネットワークの他のマシン

c 外部から

(サーバーの名前が localhost ってことはないですよね?)


ちなみに念のためご確認します。

Linuxサーバーを公開して、たとえば example.com というドメイン宛の

メールを外部から受け取ろうとしているという前提でのご確認です。

もう済んでいるということであればごめんなさい。


1) example.com というドメインの登録は済んでいますか?

2) また メールサーバーを mail.example.com で公開するとして、

example.com 宛のメールを受取るサーバーの名前は mail.example.com

であるという情報 (MXレコード)と、mail.example.com に対応する

IPアドレスの情報を(Aレコード)をDNSサーバーに登録しましたか?

3) Linux サーバーにグローバルIPアドレスを割り当てて、インター

ネットに接続していますか?

あるいは、Linux サーバーにプライベートIPアドレスを割り当てて

いる場合、ルーターやファイヤウォールでTCP ポート25番(SMTP) 宛の

通信をLinux サーバーに転送するといった措置をしていますか?

4) Linux サーバーのパケットフィルタ(ipchains ? iptables )で

TCP ポート25番宛の通信を許可していますか?

5) Postfix の設定で 127.0.0.1 以外のIPアドレスでも、TCPポート25番

宛の接続を待ち受けるようになっていますか?

main.cf で inet_interfaces = localhost になっているとだめです。

コメントにして、代わりに inet_interfaces = all を生かします。

6) また example.com 宛のメールの最終目的地であるという設定(mydestination)は

してありますか?

サーバーのホスト名が mail.example.com に設定してあれば

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain が

有効になっていれば十分かとと思いますが、そうでない場合は

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain , example.com

のように明示しないといけません。


あと、以下のURL例ではメールボックスの形式に Maildir 形式を

使っているのですが、そういう設定はしましたか?

http://www.aconus.com/~oyaji/centos/smtp-centos.htm

id:zenval

現状の設定と照らし合わせて書きます。

どうも何が原因なのかポート25がとじてしまってました。(imapモジュールをインストしていじってたせいなのでしょうか…原因究明中です。)

phpscriptでサーバーから外部へのメール送信は可能でした。outlookからの送信は不可能でした。受信は可能です。

telnet localhost 25 は可能でした。

ドメインですが、xxxxx.mydns.jp でテスト中です。


xxxxx.mydns.jp の反映はされてます。

メールサーバー設定ですが、xxxxx.mydns.jp で送受信できるようになっています。

linuxファイアウォールははずしてます。

ルーターでは25ポートもあけてます。

postfixの main.cf ですが

inet_interfaces = all

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain , xxxxxx.mydns.jp

となっています。

又、mbox ではなく、Maildir に変えてます。


※ポート25解放後

xxxxxmydns postfix/smtpd[6005]: disconnect from xxxxxxxx.osk.mesh.ad.jp[IPアドレス]

というエラーです。

outlookのエラーは 0x800CCC79 サーバー応答

554 です…。

outlook

現状ではメールは受信出来るようになりました。

送信が出来ません。

outlookでは受信できるのですが imap_open()で開けません…。

postfixでは以前サブミッションポート設定でてこずってましてpostfixのmaster.cfを変更していました。

現状は

smtp inet n - n - - smtpd

#submission inet n - n - - smtpd

# -o smtpd_etern_restrictions=reject

# -o smtpd_client_restrictions=permit_sasl_authenticated,reject

#628 inet n - n - - qmqpd

pickup fifo n - n 60 1 pickup

cleanup unix n - n - 0 cleanup

qmgr fifo n - n 300 1 qmgr

#qmgr fifo n - n 300 1 oqmgr

tlsmgr unix - - n 1000? 1 tlsmgr

rewrite unix - - n - - trivial-rewrite

bounce unix - - n - 0 bounce

defer unix - - n - 0 bounce

trace unix - - n - 0 bounce

verify unix - - n - 1 verify

flush unix n - n 1000? 0 flush

proxymap unix - - n - - proxymap

smtp unix - - n - - smtp

# When relaying mail as backup MX, disable fallback_relay to avoid MX loops

relay unix - - n - - smtp

-o fallback_relay=

の状態です。

2007/05/30 18:45:42
id:bayan No.3

回答回数100ベストアンサー獲得回数13

ポイント22pt

DNSやネットワークの設定は済んでいるわけですね。


imap_open について調べましたが、警告メッセージからすると

第一引数が "{localhost:110/pop}INBOX" であるかと思います。

次のようにするとどうでしょう。


"{localhost:110/pop3}INBOX"


または "{localhost:110/service=pop3}INBOX"


※マニュアルを見る限り pop というフラグはないようです。

http://www.php.net/manual/ja/function.imap-open.php


それと Outlook からの送信ですが、554 ということで

拒否されていますね。

あて先ドメインは xxxxx.mydns.jp でしょうか、

それともそれ以外ですか?


>xxxxxmydns postfix/smtpd[6005]: disconnect from xxxxxxxx.osk.mesh.ad.jp[IPアドレス]

はクライアントからの切断でエラーとは言えないと思います。


これより前に次のようなエラーメッセージは出てないでしょうか?

postfix/smtpd[18212]: NOQUEUE: reject: RCPT from xxxxxxxx.osk.mesh.ad.jp[IPアドレス]:

554 5.7.1 <yyy@xxxxx.mydns.jp>: Relay access denied; from=<xxx@xxxxx.mydns.jp</p>

to=<yyy@xxxxx.mydns.jp> proto=ESMTP helo=<hoge>


postconf -n の出力を見せていただくことはできますか?


master.cf では特別なことはされてないように思います。

(あんまり詳しくはないのですが。。。)

id:zenval

postconf-n の中身です。

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

mail_spool_directory = /var/mail

mailbox_command = /usr/bin/procmail

mailq_path = /usr/bin/mailq

manpage_directory = /usr/local/man

mydestination = $myhostname, localhost.$mydomain, $mydomain, xxxx.mydns.jp

mydomain = xxxx.mydns.jp

mynetworks = 192.168.0.0/23, 127.0.0.0/8

myorigin = $mydomain

newaliases_path = /usr/bin/newaliases

readme_directory = no

relay_domains = $mydestination

sample_directory = /etc/postfix

sendmail_path = /usr/sbin/sendmail

setgid_group = postdrop

transport_maps = hash:/etc/postfix/transport

unknown_local_recipient_reject_code = 450

>>あて先ドメインは xxxxx.mydns.jp でしょうか、

それともそれ以外ですか?

ですが、あて先はxxxxx.mydns.jp外です。

送信した時のmaillogです。

May 31 10:48:36 xxxx postfix/smtpd[9520]: NOQUEUE: reject: RCPT from xxxx.osk.mesh.ad.jp[IPアドレス]: 554 5.7.1 <送り先メールアドレス>: Relay ac cess denied; from=<hoge@xxxx.mydns.jp> to=<送り先メールアドレス> proto=SM TP helo=<xxxx>

May 31 10:48:36 xxxx postfix/smtpd[9520]: disconnect from xxxx.osk.mesh.ad.jp[IPアドレス]

宜しくお願いします。

2007/05/31 10:51:35
id:bayan No.4

回答回数100ベストアンサー獲得回数13

ポイント100pt

ログより、Outlook から送信したときの、送信元クライアント

ホストが xxxx.osk.mesh.ad.jp[IPアドレス] であることがわかります。


このIPアドレスはルーターのWAN側IPアドレスではないかと

推測します。メールを送信するパソコンからインターネットに

接続するためルーターでアドレス・ポート変換を掛けてられて

いらっしゃるのではないかと思います。


メールのあて先が xxxxx.mydns.jp 外、なので mydestination に

含まれません。よって他所のサーバーにリレーすることに

なりますが、送信元ホストが mynetworks に含まれてないので、

リレーを拒否されていると見てよいでしょう。


メールを送信するパソコンとLinuxサーバーが同じLANに

いる (192.168.0.0/23 に含まれる) のであれば、Outlook で

設定する送信サーバーをLinux サーバー のLAN内のIPアドレスに

するという方法が取れるかもしれません。


あと SMTP認証とか POP before SMTP を使い、認証された

送信元からはリレーを許可するのが、LAN外からの送信にも

対応できて本命でしょうか。。。


SMTP認証は以前 RHL9 の Postfix 2.0.18 と cyrus-sasl-2.1.8 で

やったことがありますが、内容をにわかに思い出せないのと、

RHEL3 WS や Postfix 2.4 を実際にいじったことはないので、

まずはリンクを張っておきます。


http://www.stackasterisk.jp/tech/systemConstruction/postfix02_01...

http://www.postfix-jp.info/trans-2.3/jhtml/SASL_README.html

http://wiki.poyo.jp/read/Writing/sd_fedora_beginners/08_Mail

http://www.aconus.com/~oyaji/centos/smtp-centos.htm

http://centossrv.com/postfix.shtml

id:zenval

一応原因不明のままですがルーター再起動をかけるといきました…。

最後までお付き合い頂きましてありがとうございました。

2007/06/02 18:33:03

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません