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】 Macからの日本語名ファイルを正しく扱う

久しぶりに仕事ではまりました。 ファイルをアップロードして、その日本語名を利用するシステムなのですが、Macも含まれます。 それで、会社からMac miniを借りてダウンロード、アップロード実験をして …

【BoW】PHPから送信するメールをテキストに保存する

テスト環境で使っていると、PHPのメール送信をテストしたい時があります。 かといって、実際に送信されてしまうと面倒です。 xamppにはmailtodiskというのがあり、メールをディスクに保存してく …

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

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

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

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

Visual Studio CodeでBoW上のPHPをデバッグ

2019/01/15 設定が古くなっていたので、更新しました。 前書き Sublime Text 3を愛用しているんですが、だんだん他のエディタが追いついて、追い抜いて来たような感じがします。 Sub …

広告