web-dev-qa-db-ja.com

モニター送信メールが機能しない

Monitを使用し、Gmailを使用してメールサーバーをセットアップしようとしています。設定ファイルは次のようなものです:

set mailserver smtp.gmail.com port 587
username "[email protected]" password "password"
using tlsv1
with timeout 30 seconds

そして、私はテストするアラートを設定しました:

check file alerttest with path /.nonexistent
alert [email protected] with reminder on 500 cycles

しかし、monit validateを使用すると、次のエラーメッセージが表示されます。

Sendmail: error receiving data from the mailserver 'smtp.gmail.com' -- Resource temporarily unavailable
Alert handler failed, retry scheduled for next cycle
'alerttest' file doesn't exist
Sendmail: error receiving data from the mailserver 'smtp.gmail.com' -- Resource temporarily unavailable
'alerttest' trying to restart

誰かがアイデアを持っていますか?どうもありがとう

7
Jiechao Li

そこに実際のアカウントがない限り、メールを引き渡すように他の会社のメールサーバーを構成することはできません。アカウントを持っている場合でも、monitは電子メールの送信を処理するのに最適なプログラムではありません。私が提案するのは、ローカルMTAをインストールして127.0.0.1でリッスンし、monitを次のように構成することです。

set mailserver 127.0.0.1

その場合、monitは実際のMTAにメール配信を引き渡し、実際のMTAがそれを送信することができます。MTAは、monitとは異なり、リモートサーバーが利用できない場合に完全に対応できます(そのために作られていないため)。

MTAの設定方法はこの質問の範囲外ですが、MTAに直接メールを送信する場合は、静的IP、rDNS、およびmxレコードを用意するのが最適です。または、リモートのスマートホスト/ゲートウェイを使用できます。

編集:postfixのインストール方法の簡単な説明

  • 実行:

    apt-getインストールpostfix

  • 選択してください:

    インターネット・サイト

  • システムメール名:

    あなたのシステムが持っているどんなホスト名

これで、インターネットとの間で電子メールを送受信するようにpostfixが構成されました。これで、上記のようにmonitを構成すると、電子メールを送信できるようになります。

重要、配信可能性を向上させるために、IPアドレスにドメインに解決される逆引きDNSレコードがあることを確認する必要があります。

たとえば、ドメインがexample.orgでサーバーがmonit.example.orgの場合、次のように解決されます。

Host monit.example.org
monit.example.org has address 192.0.43.10

Host 192.0.43.10
10.43.0.192.in-addr.arpa domain name pointer monit.example.org

ドメインが同じである限り、別のホスト名に解決される可能性があります。これは、多くの電子メールサーバーが有効なrDNSを持っているかどうかをチェックするためです。 ISP(この場合はAmazon)にリクエストして、rDNSを変更することができます。

7
aseq

リモートメールサーバーを使用できます。これがうまくいった私のサンプル設定です。リモートのSMTPサーバーを介してGmailにアラートを送信します。私はまだGmailをSMTPリレーとしても使用していると思います。

#configure remote smtp server in monitrc
/etc/monit/monitrc

set mailserver mail.yourmailserver.com port 587    
    username "[email protected]" password "mypassword"    
    using tlsv1    
    with timeout 30 seconds

#set the from email which should be same as the one above
set mail-format { from: [email protected] }

//
/etc/monit/conf.d/monit.services

apache2を監視する

check process Apache with pidfile /var/run/Apache2/Apache2.pid
       alert [email protected] only on { timeout,nonexist,resource,pid,connection }
       start program = "/etc/init.d/Apache2 start" with timeout 60 seconds
       stop program  = "/etc/init.d/Apache2 stop"
5
David Okwii