ページへ戻る

− Links

 印刷 

Biglobe が「Outbound Port 25 Blocking」を開始 のソース :: XOOPS マニア

UsersWiki:nao-pon/blog/2006-07-31のソース

« Prev[3]  
** Biglobe が「Outbound Port 25 Blocking」を開始 [#sd2fe6d0]
#keyword()
RIGHT:&tag(ネット,自宅サーバー);

携帯にサイトの更新通知が届かないので、おかしいな〜?って思っていたら、なんと Biglobe が [[Outbound Port 25 Blocking:http://office.biglobe.ne.jp/service/spam/index.html#FC]] を開始していました。

7月下旬から携帯各社宛をブロックし始め、9月下旬までにすべてのメールがブロックされるようです。

「そんな、殺生な〜!」って言ってみたところで仕方ありません。最近の流れですからね。

じゃあ!ということで、biglobe の SMTPサーバーを経由して送ることにしました。

メールサーバーは XMail(Win32) を使っているので、「SMTP フォワーダ」ですべてのメールをmail.biglobe.ne.jp へ転送!~
そして、SMTP クライアント認証 にログイン情報を設定。

多くのプロバイダーならこれでOK!・・・だけど Biglobe は、もうちょっと設定が必要。

Biglobeは、SMTPシェイクハンド時の MAIL FROM: を見るので、そこにBiglobeのメールアドレスを指定しなくてはいけません。~
通常はメールヘッダの From: のメールアドレスに指定したアドレスが使われるようなので、これではすべてのメールがそのBiglobeのメールアドレスからしか送信できないので、それはまずい。

そこで、XMail.exe のソースをいじって、SMTPシェイクハンド時の MAIL FROM: のメールアドレスが Biglobe のアドレスになるようにしたところ、問題なく送ることができました。

ただ、送信したメールヘッダに Biglobe のアドレスが、記載されてしまうのが難点といえば、難点。~
メールアドレスを公開することになってしまうので、Biglobeのスパムフィルターに頑張ってもらわないとね。((念のため送信専用に[[セカンドメールボックス:http://email.biglobe.ne.jp/2ndbox/settei.html]]を取得しました。))

XMail のソースをいじって、コンパイルするには、次のアプリケーションが必要ですが、どれも無料です。
-[[Visual C++ 2005 Express Edition:http://www.microsoft.com/japan/msdn/vstudio/express/visualc/]]
-[[Windows Platform SDK:http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en#filelist]]

初期状態でビルドすると、多分エラーが出ます。

私の環境では、次のようにすることで正常に完了しました。

-実行可能ファイルとインクルードファイルとライブラリファイルにPlatform SDKの各フォルダを追加
--オプション - プロジェクトおよびソリューション - VC++ディレクトリ
---C:\Program Files\Microsoft Platform SDK\Bin
---C:\Program Files\Microsoft Platform SDK\Include
---C:\Program Files\Microsoft Platform SDK\Lib

-SysDepWin.cpp の冒頭に次のコードを追加

 #pragma comment(lib, "winmm.lib")
 #pragma comment(lib, "wsock32.lib")
 #pragma comment(lib, "advapi32.lib")

-肝心の修正箇所は、SMTPUtils.cpp の USmtpSendMail()関数内を修正。

 	SysSNPrintf(szRTXBuffer, sizeof(szRTXBuffer) - 1, "MAIL FROM:<%s> SIZE=%lu",
 			    pszFrom, ulMessageSize); 
 } else
 	SysSNPrintf(szRTXBuffer, sizeof(szRTXBuffer) - 1, "MAIL FROM:<%s>", pszFrom);
--ソースを読み解くのが面倒だったので、%s の部分にハードコードしてしまいました。 :p

とこれで完了!結構時間が掛かりました。

#comment(,btn:つっこみ)
----

« Prev[3]