細田さん
林です。
いろいろヒントありがとうございます。
結論から言うと、証明書に変化があったらしいということで
docomo関連証明書をいったん削除して作り直したつもりが、
ルート証明書まで消してしまっていたのに気がつかなかった、
ということのようです。
エラーメッセージに出てくるのが DOCOMO でなく VeriSign というのが
気にはなっていたのですが、
| $ ps w|grep stunnel
| 3370 pts/9 Ss+ 0:00 /usr/sbin/stunnel /tmp/chifumi14888os2/mew14888CdT
| 13761 pts/7 S+ 0:00 grep stunnel
| $ cat /tmp/chifumi14888os2/mew14888CdT|sed -e '/verify/s/2/0/' | tee stunnel.conf-docomo465
| client=yes
| pid=
| verify=0
| foreground=yes
| debug=debug
| CApath=/home/chifumi/.certs
| [8941]
| accept=
127.0.0.1:8941
| connect=
smtp.spmode.ne.jp:465
| $ kill 3370
| $ stunnel stunnel.conf-docomo465 > ,stunnel.out 2>&1 &
| [1] 29342
| $ telnet localhost 8941 < /dev/null
| Trying 127.0.0.1...
| Connected to localhost.localdomain (127.0.0.1).
| Escape character is '^]'.
| 220 ESMTP Server Ready
| Connection closed by foreign host.
| $ grep -n VERIFY ,stunnel.out
| 37:2015.06.02 14:54:57 LOG5[27639:47080597137728]: VERIFY IGNORE: depth=2, /C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=(c) 2006 VeriSign, Inc. - For authorized use only/CN=VeriSign Class 3 Public Primary Certification Authority - G5
| 38:2015.06.02 14:54:57 LOG5[27639:47080597137728]: VERIFY IGNORE: depth=2, /C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=(c) 2006 VeriSign, Inc. - For authorized use only/CN=VeriSign Class 3 Public Primary Certification Authority - G5
| 39:2015.06.02 14:54:57 LOG5[27639:47080597137728]: VERIFY IGNORE: depth=1, /C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=Terms of use at
https://www.verisign.com/rpa (c)10/CN=VeriSign Class 3 International Server CA - G3
| 40:2015.06.02 14:54:57 LOG5[27639:47080597137728]: VERIFY IGNORE: depth=0, /C=JP/ST=Tokyo/L=Chiyoda-ku/O=NTT DOCOMO.INC/OU=Services Platform Department 02/CN=
smtp.spmode.ne.jp
というのを見て、depth=2 の行がダブっていておかしいけれど、
| $ openssl s_client -connect
smtp.spmode.ne.jp:465 -showcerts </dev/null |egrep 'depth| s:| i:'
| depth=3 /C=US/O=VeriSign, Inc./OU=Class 3 Public Primary Certification Authority
| verify return:1
| depth=2 /C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=(c) 2006 VeriSign, Inc. - For authorized use only/CN=VeriSign Class 3 Public Primary Certification Authority - G5
| verify return:1
| depth=1 /C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=Terms of use at
https://www.verisign.com/rpa (c)10/CN=VeriSign Class 3 International Server CA - G3
| verify return:1
| depth=0 /C=JP/ST=Tokyo/L=Chiyoda-ku/O=NTT DOCOMO.INC/OU=Services Platform Department 02/CN=
smtp.spmode.ne.jp
| verify return:1
| DONE
| 0 s:/C=JP/ST=Tokyo/L=Chiyoda-ku/O=NTT DOCOMO.INC/OU=Services Platform Department 02/CN=
smtp.spmode.ne.jp
| i:/C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=Terms of use at
https://www.verisign.com/rpa (c)10/CN=VeriSign Class 3 International Server CA - G3
| 1 s:/C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=Terms of use at
https://www.verisign.com/rpa (c)10/CN=VeriSign Class 3 International Server CA - G3
| i:/C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=(c) 2006 VeriSign, Inc. - For authorized use only/CN=VeriSign Class 3 Public Primary Certification Authority - G5
| 2 s:/C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=(c) 2006 VeriSign, Inc. - For authorized use only/CN=VeriSign Class 3 Public Primary Certification Authority - G5
| i:/C=US/O=VeriSign, Inc./OU=Class 3 Public Primary Certification Authority
| $
とすると ちゃんと depth=3 depth=2 ... と出て、どうも
「OU=Class 3 Public Primary Certification Authority」な証明書が読めてなさそう、
ということで確認したら、.certs に確かに見当たりませんでした。
CentOS なので /etc/pki/tls/certs/ca-bundle.crt をさがすと、その中にはちゃんとありました。
今まで メールサーバの証明書(中間証明書も含む)は 添付 addcerts script で
| $ addcerts
imap.spmode.ne.jp:993
| $ addcerts
smtp.spmode.ne.jp:465
で作るが ルート証明書は ca-bundle 見て手作業でしたが、
けっこう面倒だし 今回のような時の復活もたいへんなので、
添付のような Makefile を作って
| $ (cd .certs; make)
で一括作成するようにしてしまいました。
上記の手順で .certs を作り直したら、
送受信ともに問題なく行えるようになりました。
どうも お騒がせしました。
--
林 千史
chi...@tree2.info