[PHP-users 35159] Re: phpのmail関数がたまにfalseを返す
takegu @ takegu.com
takegu @ takegu.com
2010年 4月 25日 (日) 01:26:26 JST
どうもこんばんは。
たけぐです。
きれいな教え方で無く申し訳なく、使っている単語も正しくない部分があるかも
ですが、
tcpdump -x port 25
で、私のmxに向けてrcpt toを発行すると、こんな感じになります。
-xでバイナリではなくてプロトコルのテキストの部分がわかるので、
01:14:57.966743 IP 172.16.0.220.33359 > 72.14.213.27.smtp: P 56:85(29)
ack 157 win 1460 <nop,nop,timestamp 2737209985 227974637>
0x0000: 4510 0051 7b7a 4000 4006 f506 ac10 00dc E..Q{z @ .@.......
0x0010: 480e d51b 824f 0019 7b3c 5e6e 89ac 010c H....O..{<^n....
0x0020: 8018 05b4 d6ae 0000 0101 080a a326 8281 .............&..
この行の当たりで私のアドレスを送信して、
0x0030: 0d96 9ded 7263 7074 2074 6f3a 3c74 616b ....rcpt.to:<tak
0x0040: 6567 7540 7461 6b65 6775 2e63 6f6d 3e0d egu @ takegu.com>.
0x0050: 0a .
01:14:58.082699 IP 72.14.213.27.smtp > 172.16.0.220.33359: . ack 85 win 89 <nop,nop,timestamp 227986252 2737209985,nop,nop,sack sack 1 {56:85} >
0x0000: 4500 0040 5f65 0000 3406 5d3d 480e d51b E.. @ _e..4.]=H...
0x0010: ac10 00dc 0019 824f 89ac 010c 7b3c 5e8b .......O....{<^.
0x0020: b010 0059 dd50 0000 0101 080a 0d96 cb4c ...Y.P.........L
0x0030: a326 8281 0101 050a 7b3c 5e6e 7b3c 5e8b .&......{<^n{<^.
01:14:58.405103 IP 72.14.213.27.smtp > 172.16.0.220.33359: P 157:190(33) ack 85 win 89 <nop,nop,timestamp 227986574 2737209985>
0x0000: 4500 0055 5f66 0000 3406 5d27 480e d51b E..U_f..4.]'H...
0x0010: ac10 00dc 0019 824f 89ac 010c 7b3c 5e8b .......O....{<^.
0x0020: 8018 0059 0298 0000 0101 080a 0d96 cc8e ...Y............
ここで250番のステータスが帰ってきてます。
0x0030: a326 8281 3235 3020 322e 312e 3520 4f4b
.&..250.2.1.5.OK
0x0040: 2062 3137 7369 3439 3032 3330 3772 7666 .b17si4902307rvf
0x0050: 2e36 .6
01:14:58.405124 IP 172.16.0.220.33359 > 72.14.213.27.smtp: . ack 190 win 1460 <nop,nop,timestamp 2737210424 227986574>
0x0000: 4510 0034 7b7c 4000 4006 f521 ac10 00dc E..4{|@. @ ..!....
0x0010: 480e d51b 824f 0019 7b3c 5e8b 89ac 012d H....O..{<^....-
0x0020: 8010 05b4 be65 0000 0101 080a a326 8438 .....e.......&.8
0x0030: 0d96 cc8e ....
これはOKな例です。
で、メールに書かれているものに、右側の部分が無いのですが、ありませんでし
た?
一生懸命頑張れば16進数の部分もわかるのですが、できれば出ていてほしいなと。
> sendmailにわたって
> なんらかの処理がされているということですよね?
はい。tcpで接続しているので、それをトレースできるだろうと。
いうところです。
> sendmailのログ(/var/log/maillog)にも
> なにか記載されると思うのですが、そうでは
> ないのでしょうか?
sendmailの設定に問題がなければ出てくるはずです。
SYNで終わっていたり、TCPでの接続が確立していない状況だと、
falseが帰ってくるのはtimeoutなどが原因かと思います。
phpそのものが原因ではないと思います。
手でSMTPを叩いてみるのが、今後の参考になるかと。
helo hostname
mail from:<>
rcpt to:<>
data
.
という感じです。
# telnet aspmx.l.google.com. 25
Trying 72.14.213.27...
Connected to aspmx.l.google.com (72.14.213.27).
Escape character is '^]'.
220 mx.google.com ESMTP b15si4925130rvn.61
これはgoogleですが、
220が帰ってこないんじゃないかなと。
firewallかselinuxなどをはずしてみるのが良いと思います。
php以外ですが堪忍してくださいませ。
--
<takegu @ takegu.com>
PHP-users メーリングリストの案内