We are ACORN!

プログラムやサーバーの設定など、技術的な記事を載せております。

PHP Server slack さくらのレンタルサーバー プログラミング

さくらのレンタルサーバーのメールをslackに通知する

投稿日:2019-01-28 更新日:

今までメールを自分で作ったスクリプトで携帯に転送していたんですが、キャリアメールをやめたのでslackにメッセージを投げることにしました。
前提として、プランがスタンダードである必要があります。
何せ、このブログがさくらのレンタルサーバー スタンダードプランで運用されています。
(それ以外のプランは出来るか分かりません。少なくともライトプランは出来ません)

slackチームを作る

まずはslackにチームを作らなければなりません。自分一人のチームでもいいです。
「slack 使い方」などとgoogleで検索するといいかもしれません。
また、通知するメールアドレスが「dummy@example.com」だとすると、slackのユーザー名も「dummy」に合わせてください。

それが出来たら、通知するbotを作ります。

botを作る

  1. チームにログインした状態で以下のリンクをクリックします。
    https://my.slack.com/services/new/bot
  2. そうするとユーザー名を決める画面になりますので、適当に決めます。
    ここでは「bot」にします。
    Add Bot integration」という画面をクリックすると、次の画面に行きます。
  3. API Tokenという欄が一番上にあると思いますので、そのキーをコピーしておきます。
    メモ帳か何かにコピーしておくといいですね。
  4. Save integration」を押して終了です。

通知用のプログラムを作る

わたしはPHPerなので、PHPで作ります。

まず、さくらのレンタルサーバーのpostfixは特殊な環境変数を付けてきます。
LOGNAMEFROMというものです。
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に放り投げっぱなしで何のフォローもしてませんが、まあいいでしょう。

メール受信のトリガーを設定する

  1. さくらのレンタルサーバーにSSHでログインします。
    参照:さくらのサポート情報 SSHについて<
  2. 先ほど作ったファイルを、ホームディレクトリ直下に転送します。SFTPがいいかもしれませんね。
    ここでは、slack.phpという名前にしています。
    そして、chmod 700 slack.phpという風に権限を付けます。
  3. ホームディレクトリの直下にMailBoxというディレクトリがあります。
    その下に各ユーザーのメールボックスがあります。ここでは、「dummy」という名前のユーザーであるとします。
    そうすると/home/example/MailBox/dummy/.mailfilterというファイルがあると思います。
    (ない場合は、コントロールパネルからダミーのメールアドレスに転送する設定をするといいです)
    それを編集します。

    メールの転送が設定されている場合は、

    cc "!dummy@example.com"
    

    のようになっていると思います。

    これを、

    cc "|/home/example/slack.php"
    

    とします。

これで設定完了です。

テスト

テストでメールを送ってみてください。botからメッセージが届くはずです。

あとがき

最低限どのアカウントに誰からメールがあったのか分かるので、これが来たらメーラーを立ち上げて見ればいいことになります。メーラーで定期巡回しなくていいので、スマホの電池の持ちも良くなるんじゃないでしょうか。

最近は格安SIMなども流行っているので、キャリアメールを持っていない人も多くなっているんじゃないでしょうか。
一方でメールが届いたらすぐに通知してほしい、というニーズもあるはずです。
それを無料で叶えるのがslackへの通知だと言えるでしょう。

-PHP, Server, slack, さくらのレンタルサーバー, プログラミング


comment

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

関連記事

【HTML5】 FormDataオブジェクトがログに出力されない(出力方法追記)

どうも仕様みたいですね。 どうやっても、無理でした。 隠ぺいされたオブジェクトっていうのも気持ち悪いですね。 それをajaxで送る、っていうのも気持ち悪い。 var fd = new FormData …

Google Apps Script でWebAPIを作ろう

Google Apps Scriptを使うと簡単にWeb APIを作ることが出来ます。 準備 まず、Google Drive上からApps Scriptを作れるようにしましょう。 ドライブの左上の「新 …

【PHP】DBライブラリ 「idiorm」

フレームワークを使うには簡単すぎる、かといってPDOを使ってガリガリ書くのは面倒。 そんな時に役立つライブラリが「idiorm」です。(なんて読むんでしょうか?) GitHubで公開しています。 ht …

さくらのレンタルサーバーでスパムフィルタを書く

最近、さくらのレンタルサーバーでスパムが多くて参ってました。 「hi」とか「hey」とかのタイトルのやつです。 他にも困っている人がいないかなぁ、と思ってググると、ありました。 rambler.ruが …

PHP Toolkit のSoapClientが接続できない

クライアントがPHPのバージョンを5.4から5.6にアップデートしたそうです。 (そういう時は前もって連絡ください(怒)) その際、エラーが出るというのです。 ログを見ると、 SoapClientの_ …