2010年に EC-CUBE 2系をベースに構築したシステムがあり、さくらの専用サーバ(ベーシック)上で稼働している。
システムも、サーバもさすがに老朽化が進んできていて、メンテナンスを継続できないので、新規システムをフルスクラッチで制作し、AWS 上で稼働させることにしたい。
ただ、システムを一から作り直すには時間が足りないので、まず現行システムをそのまま AWS に移行させる。そこまでが第1フェイズ。
AWS 上での安定運転を確認してから、おもむろにシステム制作に着手し、リリースする。これが第2フェイズ。
第1フェイズでは、現行システムが1台の物理サーバで兼務している各機能(ただしストレージ用途にはもう1台、別の物理サーバがある)を、AWS のそれぞれのサービスに分担させる(もちろん最小限の改修は必要)。
- EC2 - Web/APサーバ
- RDS - データベース
- S3 - ストレージ
- SES - メールサーバ
しかし、SES で数時間ハマった。
EC-CUBE 2系では、メール送信で内部的に PEAR を使用している。いろいろ設定を変えてやってみたが、これがうまく SES と連携してメールを送信することができない。
最終的になんとかメール送信までこぎつけたが、その設定とカスタマイズは次のようにした。
- 管理画面にログインし、
- SMTP_HOST を "tls://email-smtp.us-west-2.amazonaws.com" に設定
- SMTP_PORT を "465" に設定
- /data/class/SC_SendMail.php を以下のように変更
function getBackendParams($backend) {
switch ($backend) {
/* 省略 */
case "smtp":
default:
$arrParams = array(
'host' => $this->host,
'port' => $this->port,
'auth' => TRUE, // 追加
'username' => SES_USER, // 追加
'password' => SES_PASSWORD // 追加
);
break;
}
return $arrParams;
}
SMTP_HOST を "tls://" で始めるのがポイント。これがないとどうやっても STARTTLS コマンドを送出できない。また、ポート番号は 465 しか効かなかった。587 でがんばっても、たぶん徒労。あ、あと管理画面からパラメータを設定するときは、両端の "
を忘れないようにする。
EC-CUBE 2系から SES を使用してメールを送信しよう…などと考える人はまずいないと思うけど、万が一にもありえないとは言い切れないので、参考のために記録を残しておく。