2011年6月2日木曜日

ローカルで SMTP サーバを利用してメールの送信 - BlackJumboDog, Mercury で OP25B への対応

ローカルで 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 を追加。

CropperCapture[190]

ホスト設定」タブにおいて、

  1. 対象ドメインを * とし、転送サーバは上記でメモした ISP で指定されている メールサーバ と ポート番号 を記入。
  2. SMTP 認証にチェックを入れ、ISP から渡されたメールサーバにアクセスするためのユーザ名とパスワードを入力して追加。

CropperCapture[191]

ACL」タブにおいて、127.0.0.1 からのアクセスのみを許可するように追加。

CropperCapture[192]

これによりメールを送信できるようになった。

ちなみに、上記「ホスト設定」の転送サーバに誤って空白文字を入力していたことに長いこと気づかず、なかなか使うことができなかった。 (+_+)

 

XAMPP の Mercury を利用する場合

xampp の中の Mercury には SMTP サーバの機能が含まれている。

XAMPP Control Panel を開き、Mercury の Start ボタンを押し、Admin を起動する。

CropperCapture[194]

メニューより Configuration > Protocol modules…

CropperCapture[197]

以下の 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 のチェックをはずす。

CropperCapture[195]

 

SMTP Client
  • メニューより、Configuration > SMTP Client
  1. Smart host name, Connection port/type には、上記でメモした ISP で指定されている メールサーバ と ポート番号を入力。
  2. Credentials for SMTP Authentication, if required に、ISP から渡されたメールサーバにアクセスするためのユーザ名とパスワードを入力。

CropperCapture[196]

これによりメールの送信が行えるようになった。

 

終了してない SMTP サーバのプロセスを確認

ところで、いくつか SMTP サーバを試していたら、プロセスが正常に終了してないものがあった。これにより、SMTP サーバの起動時にエラーとなることがある。

他のプログラムに80番ポートが専有されてApacheが起動できない場合の対処方法 - 床のトルストイ、ゲイとするとのこと」によると、

netstat -oan

これで、ポートを開いているプロセスの一覧が表示される。(-oはPIDの表示、-aは全ての接続を表示、-nはアドレス・ポートを数値で表示)

ここで、80番を使用しているプロセスのPIDを覚えておき、タスクマネージャでそのPIDに対応するプログラム名を調べる。

タスクマネージャのプロセスタブでPIDを出すには、「表示 > 列の選択」でPIDをチェック。PID順にソートすると見つけやすくなる。

上記の説明にある「80番」を「25番」と読み替えて対処する。

 

参考サイト

2コメント:

田中 さんのコメント...

皆様、こんにちは。
今頃ですが、OP25Bの対応で、この投稿を見させていただき、私もメール送信できるようになりました。
BlackJumboDocを使用させていただいております。
そこで、解れば!で結構ですが、複数の人間で使用する場合、BJDのホスト設定で複数の人分登録し、
中継も、例えば、192.168.12.*で入力しました。
そうすると、メールは送れなくなってしまいました。
単一の登録ではOKでしたが、何故かわかりません。
あまりネットワーク等詳しくなく、申し訳ありませんが、ご教授いただけましたら幸甚です。
すみません。よろしくお願いします。
田中

田中 さんのコメント...

すみません。
自レスです。

BCJ関係のサイトを参照に解決しました。
お騒がせしました。
ありがとうございました。

田中