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
何が原因かわかりませんでしょうか?
もし受信が出来るようになりましたらそれなりの御礼はさせて頂きたいと思います。
宜しくお願い致します。
とりあえず 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 や ネットワークの問題になりますね。。。
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 形式を
使っているのですが、そういう設定はしましたか?
現状の設定と照らし合わせて書きます。
どうも何が原因なのかポート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=
の状態です。
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 では特別なことはされてないように思います。
(あんまり詳しくはないのですが。。。)
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アドレス]
宜しくお願いします。
ログより、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
一応原因不明のままですがルーター再起動をかけるといきました…。
最後までお付き合い頂きましてありがとうございました。
# 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の設定でユーザーメールボックスに外部からのメールが届かないということがあるのでしょうか?