どこかのメールサーバの設定で結構苦戦したので
それのメモです。
まずそれぞれどんな物なのかという話です。
○smtps
smtpsはsmtpをsslでやり取りしようというもので、
通信内容がsslで暗号化されるのでネットワーク上を流れる
データがある程度安全になります。
sslという事で証明書が関係してきます。
証明書はちゃんとした機関から取得しているサーバもありますが、
なんちゃって証明書のとこも結構あります。
というか多分なんちゃっての方が多いでしょう。
(俗に言うオレオレ証明書ですね)
そのなんちゃって証明書はサーバ側で提供しているのかは
分りませんが、今回苦戦してたとこは提供してくれなくて
検証不要って事になってたりします。
目的がネットワークデータの暗号化なので暗号化されてさえいれば
証明とかどうでもいいという感じなんでしょうね。
smtpsは通信自体を暗号化する為、既存のsmtpとポート共存は
できません。(やろうと思えばできるんだろうけど)
そんな関係で通常smtpsは別途ポートが用意されている事が
殆どだと思います。
通常はsmtpsはポート465が使われるようです。
○cram-md5
cram-md5はSMTP認証方式のうちの1つです。
SMTP接続後にSMTP-AUTHというコマンドで
認証を行います。
認証方式は他にもいくつかありますが、EHLOコマンドで
サーバから使える認証方式がレスポンスで返ってきます。
cram-md5が利用可能なとこならその中の1つに入ってると思います。
cram-md5はIDとパスワードで認証するのですが、
IDは平文、パスワードは暗号化したものを送ります。
CRAM(ChallengeResponseAuthenticationMechanism)、
つまりチャレンジレスポンスなのでまずはサーバから
チャレンジ(キー)が送られてくるのでそれを元にパスワードを
MD5にかけてレスポンスを返します。
キーは基本的に毎回変わる(と思う)のでそれでMD5する事で
暗号化結果も毎回変わるという訳ですね。
今回苦戦したのは実はパスワードが間違ってたのです。
それは苦戦するわな。というか絶対無理だしw
ちなみにcram-md5は接続後の認証です。
なので接続自体は可能です。
なのでcram-md5でエラーになるという問題とsmtps接続で
エラーになるという現象は全く別物です。
エラー原因を探るにはまずはここの切り分けから入るべきですね。
とりあえず今回のお話はここまでにしておきます。
折があればこれのjavaのお話でも書こうかと思います。
というか書こうと思ったけどここまで書いた時点で
話が長過ぎるのでそこまで辿り着けなかっただけだったり。
PR