Logical Rabbit.

さくらのVPS

Serverless email send tool.

Overview

セットアップが整っていないようなサーバー環境で、可能な限り簡単にメール送信を行うためのツールです。(This page is Japanese version only.)

基本的にOSの初期インストール直後から使用できるようにしてあるので、OSセットアップ中の時間がかかる処理等の後で実行するようにしておき、メールが届くまで一休みしにいくという用途を想定しています。

例えばyum upgradeとか。必須ライブラリ群の一括インストールとか。コンパイルとか。

実際には ConoHa API を使用して一時的にSMTPサーバーを設置し、メール送信後サーバーを破棄しています。

動作要件としては以下のとおり。基本的にCentOS 7を初期インストールした直後から使用できるようにしています。

  • 以下、実際に動作確認済み (2016.10.27)
  • Python (2.7で動作確認。たぶん3.*系でも動くと思います)
  • HTTPSでConoHa APIへアクセスできること
  • SMTP (submission port)でConoHa上のSMTPサーバーへアクセスできること
  • このツールをサーバーへ設置できること

Github: kmamiya/serverless-email-send-tool

How to use

  1. ツールをサーバーへ設置します。gitコマンドが導入済みの場合は git clone https://github.com/kmamiya/serverless-email-send-tool.git として取得可能です。もしくは https://github.com/kmamiya/serverless-email-send-tool/archive/master.zip へアクセスし、ダウンロードしたZIPファイルを展開してください。以下、sever-less-email-send-tool ディレクトリがあるものと仮定します。
  2. sever-less-email-send-tool/bin へ移動します。
  3. config.json.template があるので、これをリネームなりコピーなりで config.json とし、内容を編集します。このファイルにはConoHa APIのアカウント情報を書き込みますので、chmod 600 等として保護することを推奨します。
  4. notify_mail.py を実行します。 config.json(のパス)、送信するメールの subject 、送信するメールの本文を格納したファイル、の順で指定してください。引数なしで実行した場合は usage を出力します。

注意事項

前述のとおり、内部ではConoHa APIへアクセスしてPaaSのメールサーバーサービスを設定し、SMTPサーバーとして使用します。起動~終了までは30秒程度ですが、ConoHaのメールサーバーサービスは最低料金が1時間0.7円なので、1度実行すると0.7円課金されます。

1時間のうちに何度もメール送信する予定がある場合は、予めメールサーバーサービスを設定しておき、プログラム内でのサービス設定/破棄を無効化したうえで実行することをお奨めします。

また、 How to use にも書いていますが config.json には API のアカウント情報をパスワードまできっちり書く必要がありますので、扱いには注意が必要です。いくら楽だからと言ってそのままどこかのサーバーに公開していたりすると、後日鬼の形相をしたConoHaたんから莫大な請求書が届く危険がいっぱいデス。(ていうか各種サーバー設置できてしまうので悪用されると加害者になりかねない)

あと、1回の処理で30秒程度かかっているあたり、ConoHa側へも負荷をかけていそうな気がしますので、あまり連発しないほうが良いかと思います。複数の処理はまとめてバッチファイルにしてから実行するとかしませぅ。

LICENSE

MIT License を適用します。

基本的には自由に使って構いませんし、商用利用も問題ありません。

一次配布先

当面はgithubでの公開とします。

その他; なぜ今回 Python になったのか

個人的には最近 Ruby ばかり書いているのですが、Ruby は OS 初期インストール段階で導入されていない可能性があります。

比較的安心なのは Perl なので当初 Perl で書き始めていたのですが、API アクセスはサブプロセスでcurlでも呼び出せば良いとして、JSONの扱いで外部ライブラリを導入するか自前で再実装する必要があり、流石にこれは無駄が多いとあきらめることにしました。

その点 Python は標準ライブラリに HTTP/HTTPS アクセス、 SMTP アクセス、 JSON 処理まで全て収まっているので、ライブラリの追加無しに実装できました。ConoHa は OpenStack ベースで、Python には Openstack のライブラリがいくつかあるのですが、今回の目標としては「ライブラリ追加無しで使えるようにする」ことだったので導入していません。

Python 自体が今回初使用なので、お作法的にまずい部分があったら適宜直していく予定です…。