XAMPPの『Mercury/32』を使って外部にメールを送る設定(OP25B対応)

ども。鉄王です。

いま、自社のウェブサイトをせっせと作っております。今回は全面的に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のメールサーバを利用したい方の参考になれば。

「XAMPPの『Mercury/32』を使って外部にメールを送る設定(OP25B対応)」への3件のフィードバック

  1. 助かりました。悪戦苦闘がこの記事で無事、Breakthroughです。
    ただ、php.ini の smtp_port=587(その他 Default) でエラーがとれました。
    環境:WinVista XAMPP1.7.3 php5.3
    rubyでの構築をあきらめ、phpに方針転換してやっとOKです。
    これで「問い合わせ」画面が本格開発できます。
    大変、ありがとうございます。感謝

  2. naさん

    たいへん詳しいフォロー、ありがとうございます。
    わたしも、試行錯誤しながら設定していたので、理屈がわかり参考になりました!

  3. とても有用な記事だと思いますので、補足させてください。
    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の設定が重要です。
    長々と失礼いたしました。

na にコメントする コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.