SMAILでWindowsサーバーの起動状況を定期報告する

自宅サーバーの起動状況を定期的に送信するための方法として、SMAILというナイスなプログラムがあるところまでたどり着きました。その設定方法について書いていきます。
GUIで設定ができる
コマンドプロンプトから呼び出すプログラムなので設定はコマンドで渡すのかなと思っていたら、なんとGUIの設定画面がありました。これはありがたい。
設定内容は以下の通りです。
- SMTPポート番号
- SMTP認証方式
- SMTPユーザID
- SMTPパスワード
- SMTP/SSL暗号化
今回はGMailのSMTPサーバを使用することを前提に、作業を進めたいと思います。
SMTPポート番号
SMTPのポート番号は25を指定します。
SMTP認証
SMTPの認証方式はAUTH-PLAINを選択します。
ユーザーIDとパスワードを結合した文字列をBase64に変換して平文で送付します。Base64は簡単に元の文字列へ戻せるため通信をセキュリティ化する必要があります。
SMTPユーザID
GMailのメールアドレスを設定します。xxxxxxxx@gmail.comの形式ですね。
SMTPパスワード
GMailで発行したアプリパスワードになります。アプリパスワードの発行は難しいことは何もないんですがよくやり方を忘れてしまいます。ググればすぐに出てきます。パスワードを貼り付け後保存するとちゃんと暗号化されます。
SMTP/SSL暗号化
使用するにチェックを入れます。ポート番号は465です。
SSLv2/v3も選択しておきます。
設定内容まとめ
SMTPポート番号:25
SMTP認証方式:AUTH-PLAIN
SMTPユーザID:xxxxxx@gmail.com(xxxxxxは自分のアカウント名)
SMTPパスワード:GMailで発行したアプリパスワード
SMTP/SSL暗号化:使用するにチェック。ポート番号は465を指定。SSLv2/v3を選択
スクリーンショットの通りに設定すれば問題ないでしょう(2016/7月時点)。
時点となっているのは、GMailのSMTPは設定が変更されることが多々あるからです。以前はアプリパスワードがありませんでした。
SMAILでコマンドラインからメールを送信する。
SMAILのコマンドラインオプションはこんな感じになっています。
———————- SMAIL 4.191 Information By Eva ——————-
□ コマンド:
smail [-i][-d][-t] -hMailServer [-sSubject]
[-fFrom_username] [-FfilenameText] [-afilenameBinary1,filenameBinary2,..]
user1@address,user2@address,CC:user3@address,BCC:user4@address..
□ オプションパラメータ一覧
-m: Message-IDの付加 -mで自動 -mxxxxxxxでxxxxxxxを付加
-t: NTタイムゾーン調整オプション
-h: メールサーバ名又はIPアドレス
-s: サブジェクト内容
-p: プライオリティー -p4以下は、重要度高 -p5以上は重要度低
-f: 送信者名
-n: 開封確認返信メールアドレス
-r: 送信者名[Replay-to]を指定する場合。送信者名省略時は、-fの送信者名を代用する
-T: 本文内容 -Fよりも優先される
-F: 本文内容テキストファイル名
-a: 添付ファイル名 (カンマ区切りで複数可能)
-d: デバッグ表示モード
-i: インフォメーション表示モード
-S: サイレントモード(エラー表示しない)
-L: SSLにTLSを使う。デフォルトはSSLv2/v3を使用する
-l: STARTTLSでSSLを開始する。
-x: htm,htmlの添付ファイルは、Content-Type:text/htmlとして出力する。
-U: UTF8で送信する。
-B: 文字列を暗号化し表示。-Bxxxxxxで???????を出力。-Bは複数可能。他オプションは無視します。
-c: -cj ISO-2022-JP/7bit(デフォルト) -cu8 uft8/8bit -cub utf8/base64 cuq:utf8/quoted printable
-?: オプションヘルプ
※これらのパラメータは、設定ファイルsmail.iniよりも優先されます。
□ 関連ファイル
smail.ini : SSL機能、POP before SMTP機能の使用する場合は必須です。
バッチを作ってタスクスケジューラーで定期実行する
メール送信用のbatファイルを用意します。こんな感じですね。僕は朝8時、昼12時、夕方18時に送信されるようにしています。何かあっても対処がしやすい時間ですね。
test.bat
smail.exe -d -hsmtp.gmail.com -fxxxxxx@gmail.com -sテストメール -T本文 xxxxxxxx@xxxxxxxxx
これをタスクスケジューラーに登録すれば完了です。
さっきからコードを引用で書いてますが、面倒でコード表示のプラグインを入れていないのです。
終わりに
これで定期的にメールが送信されるようになります。時間になってもメールが来なかったらサーバーが落ちてるので、リモートデスクトップでつないでみるなり、WOLが有効ならマジックパケットを飛ばしてみるなり、家人がいれば電話で連絡して電源を入れてもらうなり、何らかの対応を行いましょう。
ここまで書いて気付きましたが、公式サイトにばっちり設定例がありますね。こちらを見るのが確実です。