今までメールを自分で作ったスクリプトで携帯に転送していたんですが、キャリアメールをやめたのでslackにメッセージを投げることにしました。
前提として、プランがスタンダードである必要があります。
何せ、このブログがさくらのレンタルサーバー スタンダードプランで運用されています。
(それ以外のプランは出来るか分かりません。少なくともライトプランは出来ません)
slackチームを作る
まずはslackにチームを作らなければなりません。自分一人のチームでもいいです。
「slack 使い方」などとgoogleで検索するといいかもしれません。
また、通知するメールアドレスが「dummy@example.com」だとすると、slackのユーザー名も「dummy」に合わせてください。
それが出来たら、通知するbotを作ります。
botを作る
- チームにログインした状態で以下のリンクをクリックします。
https://my.slack.com/services/new/bot - そうするとユーザー名を決める画面になりますので、適当に決めます。
ここでは「bot」にします。
「Add Bot integration」という画面をクリックすると、次の画面に行きます。 - API Tokenという欄が一番上にあると思いますので、そのキーをコピーしておきます。
メモ帳か何かにコピーしておくといいですね。 - 「Save integration」を押して終了です。
通知用のプログラムを作る
わたしはPHPerなので、PHPで作ります。
まず、さくらのレンタルサーバーのpostfixは特殊な環境変数を付けてきます。
LOGNAMEとFROMというものです。
LOGNAMEは受信者のメールアドレス、FROMは文字通り、送信元のメールアドレスです。
ソースはこんな感じになります。
#!/usr/local/bin/php <?php // 先ほどのAPI Tokenです。 CONST API_TOKEN = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; $user = getenv('LOGNAME'); $sender = getenv('FROM'); $slack = explode('@', $user)[0]; $text = urlencode($user . '宛てに' . $sender . 'さんからメールが届きました'); $url = "https://slack.com/api/chat.postMessage?token=".API_TOKEN. "&channel=@".$slack."&username=bot&text=".$text."&as_user=true"; file_get_contents($url); exit;
slackに放り投げっぱなしで何のフォローもしてませんが、まあいいでしょう。
メール受信のトリガーを設定する
- さくらのレンタルサーバーにSSHでログインします。
参照:さくらのサポート情報 SSHについて< - 先ほど作ったファイルを、ホームディレクトリ直下に転送します。SFTPがいいかもしれませんね。
ここでは、slack.phpという名前にしています。
そして、chmod 700 slack.php
という風に権限を付けます。 - ホームディレクトリの直下にMailBoxというディレクトリがあります。
その下に各ユーザーのメールボックスがあります。ここでは、「dummy」という名前のユーザーであるとします。
そうすると/home/example/MailBox/dummy/.mailfilter
というファイルがあると思います。
(ない場合は、コントロールパネルからダミーのメールアドレスに転送する設定をするといいです)
それを編集します。メールの転送が設定されている場合は、
cc "!dummy@example.com"
のようになっていると思います。
これを、
cc "|/home/example/slack.php"
とします。
これで設定完了です。
テスト
テストでメールを送ってみてください。botからメッセージが届くはずです。
あとがき
最低限どのアカウントに誰からメールがあったのか分かるので、これが来たらメーラーを立ち上げて見ればいいことになります。メーラーで定期巡回しなくていいので、スマホの電池の持ちも良くなるんじゃないでしょうか。
最近は格安SIMなども流行っているので、キャリアメールを持っていない人も多くなっているんじゃないでしょうか。
一方でメールが届いたらすぐに通知してほしい、というニーズもあるはずです。
それを無料で叶えるのがslackへの通知だと言えるでしょう。