[2019.1.14追記]
メールフォームの動作確認など、特に外部にメール送信する必要がなければ『MailHog』を使う方法がより簡便です。よろしければ下記の記事をご参照ください。
ども。鉄王です。
いま、自社のウェブサイトをせっせと作っております。今回は全面的にWordPressを導入したサイトにしようということで(会社としても制作のノウハウを溜めることになるし)、ローカルにXAMPP環境を構築して試行錯誤しながらやっている最中です。テンプレートの修正がすぐ反映されるのがいいですね、ローカルに環境をこしらえると。
で、ずっと後回しにしていたメールフォームまわりの構築に取りかかっていったわけです。
メールフォームの動作を確認するためにもメールサーバを整えねば、ということで登場いただいたのが、XAMPPに含まれている『Mercury/32』。試行錯誤しながらの設定で外部にメールを飛ばせましたので、ここに報告いたします。設定例がないかと事前にググってみたんだけど、OP25B対策をしているISPのSMTPサーバにメールを送る事例が見つからなかったんですよね。
あくまで当方での設定例なので、例によってご利用は計画的に。前提条件は以下のとおりです。
(コメント欄 na さんの詳しいフォローもぜひご参照ください)
- XAMPP環境のWindows PCはブロードバンドルータを通じてISPに接続
- ISPは@nifty OP25B対策が施されており、587番ポートを利用するにはSMTP-Authが必須
[php.ini の mail function の項]
; For Win32 only.
SMTP = localhost
smtp_port = 587
; For Win32 only.
sendmail_from = hogehoge@tecking.org
[Mercury/32 の設定]
Configurationメニュー → MercuryS SMTP Serverメニュー → Connection control タブ
「Do not permit SMTP relaying of non-local mail」と「Authenticated SMTP connections may relay mail」のチェックを外す
Configurationメニュー → MercuryC SMTP Clientメニュー
SMTP “Smart” Host detailsの項
Smart host name …… smtp.nifty.com
Connect to TCP/IP port …… 587
Credentials for SMTP Authentication, if required
Username …… 《ISPのユーザーID》
Password …… 《ISPのパスワード》
という感じで。OP25Bが施されているISPのメールサーバを利用したい方の参考になれば。
助かりました。悪戦苦闘がこの記事で無事、Breakthroughです。
ただ、php.ini の smtp_port=587(その他 Default) でエラーがとれました。
環境:WinVista XAMPP1.7.3 php5.3
rubyでの構築をあきらめ、phpに方針転換してやっとOKです。
これで「問い合わせ」画面が本格開発できます。
大変、ありがとうございます。感謝
naさん
たいへん詳しいフォロー、ありがとうございます。
わたしも、試行錯誤しながら設定していたので、理屈がわかり参考になりました!
とても有用な記事だと思いますので、補足させてください。
XAMPP 1.7.3(Windows XP Professional)で話を進めます。
この記事の例のような場合に必要なMercuryは、
Mercury S(PHPスクリプトなどからの要求を待ち受ける)
Mercury C(受け付けたメールをISPに中継する)
の2つです。XAMPP 1.7.3付属のMercuryは「Mercury C」ではなく
「Mercury E」が標準で有効になっていますので、
Configuration → Protocol Modules…
でCを有効にしておきます。(今回の例では、SとCだけに
チェックしておけば十分。)
php.iniについては、デフォルトから特に
設定を変更する必要はありません。php.iniでのsmtp_portは、
Mercury Sの待ち受けポートです。ISP宛てではありませんので、
標準の25番のままで問題ありません。
むしろ、587番に変えたときにはMercury Sの
Listenポートを変更する必要があります。
sendmail_fromも、必ず設定しなくてはいけない
たぐいのものではありません。ただし、
設定の有無によって[mb_]send_mail()に影響します。
次にMercury Sですが、これもデフォルトのままで
動作すると思います。デフォルトでは
Do not permit SMTP relaying of non-local mail
にチェック、
Authenticated SMTP connections may relay mail
が無チェックでした。特に前者はPHPスクリプトを
localで動かすならば、チェックを入れておいたほうが
セキュリティが高まります。
というわけで、事実上Mercury Cの設定が重要です。
長々と失礼いたしました。