【MT4】Linux上でEメール通知機能を有効にする方法

Linux上でのメール通知機能 お役立ち集
この記事は約7分で読めます。

以前の記事で「MT4を動かすVPSをLinux OS (Ubuntu 18.04 LTS) にする方法」を書きました。


その中で残っていた課題である「MT4からEメール通知機能が動作しない」を解決しました ので、対応方法を紹介します!!

以前の記事
スポンサーリンク

【元々の問題は何だっけ?】

元記事にも書いていますが、元々の問題は (Windowsと同じ設定をしても)『Mail: login to smtp.gmail.com:465 failed』と表示されてEメール送信に失敗するでした。

MT4のEメール設定画面
PC版MT4のEメール通知設定画面
Eメール送信失敗メッセージ
Ubuntu LTS 18.04でのEメール送信失敗メッセージ

さて、この問題はどうやって解決しましょう・・・。

スポンサーリンク

【Eメール通知機能を動作させる方法】

MT4のログを見てみましたが、なぜSMTPサーバへのログインに失敗するのか 手掛かりが得られなかったため、Canaryは 中継サーバを構築してそこから送信してしまえ という方法で解決 (…と言うより回避) しました。

Canary
Canary

ある意味ズルですw

中継サーバのソフトには Postfix を使用します。

Ubuntu上でのメール送信
Eメール通知機能対応イメージ

具体的な対応手順

SMTPサーバにGmailサーバを使用した場合を例として、具体的な対応手順を記載します。

  • 前段として必要な『GmailアカウントのSMTPアクセスを有効にする方法』については、こちらのサイト(外部) を参照してご対応ください。※この対応はWindowsの場合でも必要です。

中継サーバ (Postfix) のインストールと設定

まずは必要なソフトをインストールします。

$ sudo apt install -y postfix libsasl2-modules mailutils

  • 「mailutils」は中継サーバに直接必要はありませんが、メール送信の動作確認用にインストールします。
  • インストール途中で「Postfix Configuration」画面が表示された場合は、『Internet Site』を選択してください。

次に、インストールした「Postfix」を中継サーバとして設定します。

$ sudo vi /etc/postfix/main.cf で以下を追記します。

inet_interfaces = loopback-only
default_transport = smtp
relay_transport = smtp
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
smtp_tls_security_level = encrypt
smtpd_timeout = 5s
header_size_limit = 4096000
header_checks = regexp:/etc/postfix/header_checks
relayhost = [smtp.gmail.com]:587
  • 12行目で、最終アクセス先のGmailサーバのポート番号を (Windowsで設定していた465番ではなく) 587番 に設定していますが、設定している認証方法に合わせるためになります。
  • SMTPサーバの都合等で465番にする必要がある場合は、認証方法も適宜変更ください。#Canaryは465番だとうまく行きませんでした… (汗)

以下も追加実行して、Postfixの設定と起動は完了です。

sudo sh -c "echo '[smtp.gmail.com]:587 youraccount@gmail.com:yourpassword' > /etc/postfix/sasl_passwd"
sudo sh -c "echo '/^From:(.*)$/ PREPEND References: <dummy@foobar>' >> /etc/postfix/header_checks"
sudo chmod 600 /etc/postfix/sasl_passwd
sudo postmap /etc/postfix/sasl_passwd
sudo systemctl start postfix
  • 1行目の「youraccount」と「yourpassword」は、ご自分のGmailアカウントの情報に適宜置き換えください。
  • 2行目は送信メールの「Referencesヘッダ」を固定値に置き換えるための措置です。これにより、以下に示すように (同じ差出人・件名の) 受信メールがGmail上で1つのスレッドにまとまってくれて便利です。

そして最後に「mailutils」を使ってメール送信確認を行います。

$ echo TESTTEST | mail -s "TEST" -r youraccount1@gmail.com youraccount2@gmail.com

  • 上記の「youraccount1」(送信元)、「youraccount2」(送信先)は、適宜変更願います。
  • 件名が「TEST」、本文が「TESTTEST」のメールが届けば中継サーバの構築は成功です。
  • いきなり下のMT4ソフトで確認してしまっても構いませんが、うまく行かない場合は本方法で問題の切り分けが出来ます。

MT4ソフトの設定

MT4のPCアプリ側は以下のように設定します。

  • Gmailサーバへのアクセス情報は上述のPostfix側に設定されているので、Poftfixにアクセスするための情報のみ設定すればOKです。
設定項目設定内容
SMTPサーバー『localhost:25』を設定する
SMTPログインID@入りのダミーのアドレスを設定する
SMTPパスワード空欄でOK
発信元送信元のメールアドレスを設定する
送信先送信先のメールアドレスを設定する

「テスト」ボタンを押してメールが届けば全て完了!

トラブルシューティング

メールが届かない場合、色々な原因が考えられますが、Canaryが実際にハマった2点とその対策を記載しておきます。

■原因①:Gmailアカウントのセキュリティ設定が正しくない

  • 対策手順
    • 該当アカウントでGmailにログイン。
    • https://myaccount.google.com/security にアクセス。
    • 『2段階認証プロセス』がONになっていたらOFFにする。
    • 『安全性の低いアプリのアクセス』がOFFになっていたらONにする。

■原因②:(試行錯誤で何度もGmailにアクセスしたことにより) Gmailアカウントへのアクセスがブロックされてしまっている。

①、②ともログファイル (/var/log/mail.log) に『SASL authentication failed』等のエラーメッセージが出力され、認証系のエラーということには気付けますが、特に②は原因がしばらく分からず、解決するのにだいぶ時間が掛かりました・・・ 💧

スポンサーリンク

【まとめ】

Linux (Ubuntu 18.04 LTS) 上でEメール通知機能を動作させる方法』をご紹介いたしました。

間違いや動かない等のご報告は、下のコメント欄かTwitterまでご連絡頂けたら幸いです。

Canary
Canary

できるはずのことができないとモヤモヤしますよね~。本件の解決には結構時間掛かりましたが、だいぶスッキリしましたw

コメント

タイトルとURLをコピーしました