procmailでメール受信をSlackに通知

目次

Einglish page is here.

何の話か

自鯖で立てているメールサーバでメールの受信をスマホ等に通知したいことってありますよね。
Gmail経由で通知したりすることもできますが、通知だけであればSlackのチャンネルに件名と送信者のメールアドレスを流してくれるだけで十分かなと思っていました。
今回はこれを実現するにはどうすればいいかという話です。

Slackへのメール受信の通知の仕方

やることは3つです。

  1. Slack WebhookのURLの取得
  2. Slackへの投稿用のshell scriptの作成
  3. procmailのレシピにshell scriptの実行を記述

1. Slack WebhookのURLの取得

このページに従ってWebhook URLを取得します。

Sending messages using Incoming Webhooks - Slack API

https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
という感じのURLを取得できたら完了です。


2. Slackへの投稿用のshell scriptの作成

こんな感じのスクリプトを用意し、メールの受信ユーザに実行権を与えます。
SLACK_WEBHOOK_URL=には1で取得したWebhook URLを書きます。

この時点でこのshell scriptを

/path/to/mail2slack.sh Taro Hello
のように実行してSlackにメッセージが投稿されればいい感じです。


3. procmailのレシピにshell scriptの実行を記述

procmailを使ってメール受信時に2のshell scriptを実行できるようにします。
procmailのレシピはこんな感じです。

このレシピではメールの件名と送信者メールアドレスをformailで抜き出して2のshell scriptに渡します。
shell script実行後はMAILDIRへ流します。

ここまで行えば設定は完了です。
メール受信時にSlackにメッセージが投稿されるか試してみましょう。

終わりに

今どきメールサーバのような面倒なものを自前で持っている人はあまりいない気がしますがお役に立てたら嬉しいです。

カテゴリー:サーバ
記事作成日:2021-05-16