CRONで定期的にメールを送信するプログラムが動かなくなってしまった。 原因は、使っているレンタルサーバのサーバの環境が変わったから。
- さくらインターネット スタンダードプラン
- POP before SMTP だったのが SMTP-AUTH(SMTP認証) になった
そこから、SMTP-AUTHでメールを送信するための試行錯誤がはじまる。
SMTP-AUTH の認証方法
メールを受信する際のPOP3がIDとパスワードで認証を行って 受信を行うのと同様に、SMTP-AUTHでも、IDとパスワードでの認証が必要になる。
その際に、IDとパスワードがそのままネットワークに流れると盗み見られてしまう可能性があるため、見られても大丈夫なような処理をほどこさないといけない。
見られても大丈夫にするやり方としては、
- サーバーとの通信をSSLで暗号化する
- IDとパスワードを暗号化して送信する
の2通りがある。
SMTP-AUTHの認証方式はいくつかあって、
- PLAIN
- LOGIN
- CRAM-MD5
- DIGEST-MD5
の4つの方法があるようだ。
1,2は平文が送信されるので、通信経路の暗号化が必須で、3,4がIDとパスワードの暗号化に相当する(厳密にはハッシュ値の計算)
さくらインターネットはPLAINかLOGIN
さくらインターネットは、上記の認証方式のうち、1,2 の PLAIN かLOGIN のみ可能なようです。(出典が見つけられないが、MD5系はだめだった)
一方で、GmailのSMTP-AUTHの場合はMD5系が使えるようだった。
SMTP-AUTH を使える Perlモジュール
詳しくは、別エントリーにするけれども、PerlでSMTP-AUTHを使うことができるCPANモジュールは下記のものがみつかった。
しかし、いずれもクセがあるので、注意。使い方注意を別エントリに書く。