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

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

*

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

関連記事

エディタに最適なフォント

わたしはsublime text 3を使っています。 フォントをいろいろ探し回っていたんですが、結局「MS ゴシック」に戻ってしまいます。なぜなら、どれもフォントの描画がきれいでなく、横棒と縦棒の太さ …

【PHP】ビルトインウェブサーバーで楽々テスト環境

teratailで質問に答えるようになったら、以外にサーバー立てずにテストして、ローカル制限に引っかかっている人が多いので、簡単に立てられるローカルサーバーの構築方法を書いておこうと思います。 まず、 …

【qmail】 SPFの不正を防御する

スパムでSPFがpassになるのが多いなあ~、と思ってググりました。 ありました(泣) SPF (Sender Policy Framework) チェックをパスしてしまう迷惑 (スパム) メールが増 …

PHP入門講座を公開します

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

PHPからsyslogを書く

忘備録です。 PHPでシステム回りを作っているんですが、syslogに出力出来たらなー、と思っていました。 調べたら簡単♪ function logger($mes) { exec("/bi …

広告