2014年9月4日カテゴリー:未分類

EC-CUBEのメールサーバの設定によりエラーメール(リターンメール・バウンズメール)の処理

★EC-CUBE2.12系から仕様変更されました。

購入手続きが完了すると、利用者に自動配信メールが送信されます。
メールアドレスの記述ミス等で、自動配信メールが相手方に届かない場合は、Mail Delivery Systemのエラーメールが管理者に戻ってきてほしいところですが、EC-CUBEの通常インストールではエラーメールは戻ってきません。

インストール時のオプション設定(メールサーバの設定)を行わないでインストールすると、メーラーバックエンドは「mail」が選択された状態でインストールされます。
メーラーバックエンドが「mail」の状態なので、エラーメールが戻ってこないわけです。

そこで、既にインストールされているEC-CUBEを、SMTPまたはsendmailに変更します。
SMTPとsendmailはサーバ機能に依存しているので、利用中のサーバ(メールサーバ)情報が必要になります。
「mail」ではPHPだけでメール送受信の処理が完結できることもあり、EC-CUBEではデフォルトが「mail」になっているのだと思います。

(1)SMTPに変更する

インストール時に生成される下記ファイルをダウンロードし修正します。
■data/config/config.php

[php]
define(‘MAIL_BACKEND’, ‘smtp’);
define(‘SMTP_HOST’, ‘■■■’);
define(‘SMTP_PORT’, ‘○○○’);
define(‘SMTP_USER’, ‘▼▼▼’);
define(‘SMTP_PASSWORD’, ‘△△△’);
[/php]

MAIL_BACKEND → smtp
SMTP_HOST以降については、利用しているのメールソフトを開き下図の箇所を確認し入力します。
(下図はWindows Live メール)

【注意】
管理画面の基本情報管理>SHOPマスターで、メールアドレスを変更するときは、再度■data/config/config.phpを確認する必要があります。

(2)sendmailに変更する

 ■data/config/config.php

[php]
define(‘MAIL_BACKEND’, ‘sendmail’);
define(‘SMTP_HOST’, ”);
define(‘SMTP_PORT’, ”);
define(‘SMTP_USER’, ”);
define(‘SMTP_PASSWORD’, ”);
[/php]

MAIL_BACKEND → sendmail
SMTP_HOST以降は入力しない。

 次に利用しているサーバのsendmailパスを確認し、サーバのsendmailパスを設定しなければいけません。
EC-CUBEでは、/usr/bin/sendmailが設定されているので、仮にサーバのsendmailパスが/usr/sbin/sendmailに設定されている場合は変更する必要があります。
変更方法は次の通りです。

■data/class/SC_SendMail.php 344行目付近
【変更前】

[php]
‘sendmail_path’ => ‘/usr/bin/sendmail’,
[/php]

【変更後】

[php]
‘sendmail_path’ => ‘/usr/sbin/sendmail’,
[/php]

【注意】
管理画面の基本情報管理>SHOPマスターで、メールアドレスを変更するときは、再度■data/class/SC_SendMail.phpを確認する必要があります。

▼最後にメールの送受信が正常に行われるか確認する必要があります。

(1)正しいメールアドレスで購入手続きを完了する。
(2)管理者に自動メールが配信される。
(3)購入者に自動メールが配信される。

(4)誤ったメールアドレスで購入手続きを完了する。
(5)管理者に自動メールが配信される。
(6)管理者にエラーメールが配信される。

mail」または「sendmail」を選択すると、送信者メールアドレスのドメインのSPFレコードにEC-CUBEをインストールしたサーバーが登録されていない場合、自動送信メールが送信先メールサーバーでなりすましメールと判定されるなどして相手に届かない可能性があります。