Digital Acorn

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

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

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

投稿日:

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

slackチームを作る

まずはslackにチームを作らなければなりません。自分一人のチームでもいいです。
「slack 使い方」などとgoogleで検索するといいかもしれません。
また、通知するメールアドレスが「dummy@jw7.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/jw7/MailBox/dummy/.mailfilterというファイルがあると思います。
    (ない場合は、コントロールパネルからダミーのメールアドレスに転送する設定をするといいです)
    それを編集します。

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

    cc "!dummy@example.com"
    

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

    これを、

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

    とします。

これで設定完了です。

テスト

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

あとがき

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

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

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


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

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

関連記事

【PHP】BoW vs. Docker vs. Win32 環境別速度

PHPが複数環境で実行できるようになったので、速度を測定してみました。 マシンスペックは マシン Lenovo Thinkpad E460 プロセッサ Core i5-6200U @ 2.40GHz …

PHP入門講座を公開します

PHPの入門講座を作り始めました。 基礎編が大体出来たので、公開してしまいます。 URLはこちら! https://jw7.org/php_lesson/ 引き続き「活用編」を作って行きます。 ここで …

【qmail】携帯キャリアのメールに添付を削除して転送する

qmailでメールを携帯に転送して、メール通知に使っておられる方は結構多いんじゃないでしょうか。 ただ、大きなファイルが添付されていると、エラーメールが送信元に戻ってしまいます。 つまり、クライアント …

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

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

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

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

広告