MT4のメール送信サーバにGmail を使う。

MetaTrader4 にはメール送信機能があり、シグナルなどをメールで送ることが出来ます。
メールサーバ(SMTPサーバ)の設定は、下図のダイアログで行いますが、Gmail ( smtp.gmail.com:465 ) を送信先にしようとすると上手くいきません。

Testボタンを押しても何も起きないか、以下のようなエラーが記録されるだけです。

23:13:50 Mail: login to smtp.gmail.com:465 failed
23:15:39 Mail: 530 5.7.0 Must issue a STARTTLS command first. 23sm1440141pzk.4
23:15:39 Mail: 'Test message' failed

これは、GmailSMTP通信はSSLによる暗号化が必要なのに、MT4 が対応していない為に生じる問題です。今日は、そんな場合の対応策を説明します。





対策と言っても、実は簡単な話で、MT4 が SSLに対応していないのなら、代わりに SSLの暗号化を行うアプリ ( stone ) を途中に入れてしまえば通信できるはずです。
概念図はこんな感じ。

×通信できない MT4 -(非暗号化通信)-> Gmail SMTPServer
○通信できる MT4 -(非暗号化通信)-> stone -(SSL暗号化通信)-> Gmail SMTPServer


以下、stone の設定と使い方です。
GmailSMTPサーバと通信する為の設定ファイル ( stone.conf ) は以下のように書きます。

smtp.gmail.com:465/ssl 127.0.0.1:465

これは、ローカルPC(127.0.0.1)の465ポートと、smtp.gmail.comの465ポートをSSLで暗号化して繋ぐという設定です。
ローカル側のポートは任意の値に変更することも出来ます。



設定ファイルを利用したWindowsサービスとしてstoneを実行するには以下のようなバッチファイル ( INSTALL.bat ) で登録/実行できます。

c:\stone\stone.exe -M install repeater -C C:\stone\stone.conf
net start repeater
pause

これら2つのファイルを同梱したstone をこちらに置きました。
解凍後のファイル一式を、C:\stone フォルダ内に置いて、INSTALL.bat を右クリックして、管理者として実行(Vistaの場合) すると、

のようになります。
この状態で、MT4上で smtp.gmail.com:465 の代わりに 127.0.0.1:465 を指定すると、stone 経由で Gmail に繋がります。



このままでは、Windows を再起動すると、stone のサービスが止まってしまうので、マイコンピュータを右クリックして「管理」からサービスの設定を変更します。

サービスの中から、Stone repeater を選び、右クリックしてプロパティ画面から「スタートアップの種類」を「自動」にします。



今までGmail を使えなくて困っていた人は参考にしてみてください。



以下余談ですが…
ネット上には、Gmail が普通に使えているよっという報告もあります。でも、私のアカウントでは何をどう変えてみてもNGっぽかったです。
それから、STARTTLS がどう とかエラーメッセージを受取っていますが、特にSTARTTLS を使わなくても、ただのSSL(SMTPS) で送信できています。