ローカルで SMTP サーバを立て、PHP でメールの送信テストをしたい。
以前は MELON を利用してローカルからメールを送信。しかし、今回同じように試したところ、いつまで経ってもメールが送信されない。
ISP の OP25B による迷惑メールに対する対処
理由は「メールサーバの OP25B対策」によると、
インターネットに蔓延する迷惑メール(…)の対策として、大手 ISPはほぼ全てが OP25B(Outbound Port 25 Blocking)を実施するようになった。…
OP25Bとは、ISPが自社網内のユーザが撒き散らす迷惑メールを封じ込めることを目的として、自社網の動的IPアドレスのホストが網外の SMTPサーバに向けて25番ポートからメールを直送する処理を規制する技術である。 …
これに対する対処法は、
有効な解決策は、ISPが提供する中継サーバ(ポート番号は 25番あるいは 587番。ISPが特に指定したものがなくても、通常のメール送信用 SMTPサーバが使えるはず)を経由してメール送信するようにメールサーバを設定することである。
(同上より)
自分が利用している ISP の HP において、
OP25B
で検索したら、迷惑メール対策として、昨年より制限が加えられていたことがわかった。
このための新たなメールサーバのホストと、ポート番号 587 をメモ。
BlackJumboDog を利用する場合
SMTP サーバとして MELON を使う前は Radish を利用していた。
現在 Radish は サッポロワークス によると、Radishの後継バージョンとして、ニューBlackJumboDog(Ver5.x) が開発されています
そこで BlackJumboDog をダウンロード。
BJD.exe を起動。
設定
SMTP サーバを起動するために、
- メニューより、「オプション > メールサーバ > SMTP サーバ」
「SMTP サーバを使用する」をチェック。
「中継許可」タブにおいて、許可リスト優先に 127.0.0.1 を追加。
「ホスト設定」タブにおいて、
- 対象ドメインを * とし、転送サーバは上記でメモした ISP で指定されている メールサーバ と ポート番号 を記入。
- SMTP 認証にチェックを入れ、ISP から渡されたメールサーバにアクセスするためのユーザ名とパスワードを入力して追加。
「ACL」タブにおいて、127.0.0.1 からのアクセスのみを許可するように追加。
これによりメールを送信できるようになった。
ちなみに、上記「ホスト設定」の転送サーバに誤って空白文字を入力していたことに長いこと気づかず、なかなか使うことができなかった。 (+_+)
XAMPP の Mercury を利用する場合
xampp の中の Mercury には SMTP サーバの機能が含まれている。
XAMPP Control Panel を開き、Mercury の Start ボタンを押し、Admin を起動する。
メニューより Configuration > Protocol modules…
以下の 2 つを有効にする。
- MercuryS SMTP server
- MercuryC SMTP relaying clinent
SMTP server
- メニューより、Configuration > Mercury SMTP Server
Connection control タブにおいて、 Do not permit SMTP relaying of non-local mail のチェックをはずす。
SMTP Client
- メニューより、Configuration > SMTP Client
- Smart host name, Connection port/type には、上記でメモした ISP で指定されている メールサーバ と ポート番号を入力。
- Credentials for SMTP Authentication, if required に、ISP から渡されたメールサーバにアクセスするためのユーザ名とパスワードを入力。
これによりメールの送信が行えるようになった。
終了してない SMTP サーバのプロセスを確認
ところで、いくつか SMTP サーバを試していたら、プロセスが正常に終了してないものがあった。これにより、SMTP サーバの起動時にエラーとなることがある。
「他のプログラムに80番ポートが専有されてApacheが起動できない場合の対処方法 - 床のトルストイ、ゲイとするとのこと」によると、
netstat -oan
これで、ポートを開いているプロセスの一覧が表示される。(-oはPIDの表示、-aは全ての接続を表示、-nはアドレス・ポートを数値で表示)
ここで、80番を使用しているプロセスのPIDを覚えておき、タスクマネージャでそのPIDに対応するプログラム名を調べる。
タスクマネージャのプロセスタブでPIDを出すには、「表示 > 列の選択」でPIDをチェック。PID順にソートすると見つけやすくなる。
上記の説明にある「80番」を「25番」と読み替えて対処する。
参考サイト
- XAMPP環境で外部のメールアドレスへメール送信する設定メモ – JunkVOX
- XAMPP:Mercuryからメール送信の設定 < ホームページ作成・WEB制作・CMSカスタマイズ・ツール作成ならtiny-p
- XAMPPでメール送信 radish? Mercury? | Tech Blog Hibachiya
- WindowsXPとXAMPPのMercuryでmb_send_mailメール送信できない | QUALL - blog
2コメント:
皆様、こんにちは。
今頃ですが、OP25Bの対応で、この投稿を見させていただき、私もメール送信できるようになりました。
BlackJumboDocを使用させていただいております。
そこで、解れば!で結構ですが、複数の人間で使用する場合、BJDのホスト設定で複数の人分登録し、
中継も、例えば、192.168.12.*で入力しました。
そうすると、メールは送れなくなってしまいました。
単一の登録ではOKでしたが、何故かわかりません。
あまりネットワーク等詳しくなく、申し訳ありませんが、ご教授いただけましたら幸甚です。
すみません。よろしくお願いします。
田中
すみません。
自レスです。
BCJ関係のサイトを参照に解決しました。
お騒がせしました。
ありがとうございました。
田中
コメントを投稿