From cfb1a5c8c31835a6f46635aba04c9e8a1ae62f54 Mon Sep 17 00:00:00 2001 From: Jeffrey Paul Date: Wed, 27 Mar 2019 09:06:23 -0700 Subject: [PATCH] add email_to_webhook --- forward-email-to-slack-webhook/Makefile | 4 ++ forward-email-to-slack-webhook/README.md | 22 +++++++ .../email_to_webhook | 57 +++++++++++++++++++ forward-email-to-slack-webhook/install.sh | 12 ++++ 4 files changed, 95 insertions(+) create mode 100644 forward-email-to-slack-webhook/Makefile create mode 100644 forward-email-to-slack-webhook/README.md create mode 100755 forward-email-to-slack-webhook/email_to_webhook create mode 100755 forward-email-to-slack-webhook/install.sh diff --git a/forward-email-to-slack-webhook/Makefile b/forward-email-to-slack-webhook/Makefile new file mode 100644 index 0000000..a7fabf4 --- /dev/null +++ b/forward-email-to-slack-webhook/Makefile @@ -0,0 +1,4 @@ +default: install + +install: + bash ./install.sh diff --git a/forward-email-to-slack-webhook/README.md b/forward-email-to-slack-webhook/README.md new file mode 100644 index 0000000..0dd886c --- /dev/null +++ b/forward-email-to-slack-webhook/README.md @@ -0,0 +1,22 @@ +# send emails to root to slack + +# prerequisites + +`apt update && apt -y install git python3 make postfix` + +# install + +``` +mkdir -p /etc/environment.d +git clone https://github.com/sneak/hacks.git /tmp/hacks && \ + cd /tmp/hacks/forward-email-to-slack-webhook && \ + make install +``` + +and + +``` +mkdir -p /etc/environment.d +echo 'https://hooks.slack.com/services/XXXXXX/XXXXXXX/xxxxxxxxxxxxxxxx' > + /etc/environment.d/SLACK_WEBHOOK_URL +``` diff --git a/forward-email-to-slack-webhook/email_to_webhook b/forward-email-to-slack-webhook/email_to_webhook new file mode 100755 index 0000000..2381f65 --- /dev/null +++ b/forward-email-to-slack-webhook/email_to_webhook @@ -0,0 +1,57 @@ +#!/usr/bin/env python3 + + +from email import message_from_file + +import json +import os +import requests +import sys +import syslog + +hook_url = os.environ.get('SLACK_WEBHOOK_URL') + +def main(): + msg = message_from_file(sys.stdin) + try: + send_to_slack(dict(msg)['From'],dict(msg)['Subject'],msg.get_payload()) + except(Exception): + syslog.syslog(syslog.LOG_ERR,"webhook failed, message was %s" % msg.get_payload()) + + +def send_to_slack(fr,title,body): + title = title.strip() + body = body.strip() + fr = fr.strip() + + slack_data = { + 'text': "Email from " + fr, + 'attachments': [ + { + 'title': title, + 'text': body, + 'fallback': body + } + ] + } + + response = requests.post( + hook_url, + data=json.dumps(slack_data), + headers={'Content-Type': 'application/json'} + ) + + if response.status_code != 200: + syslog.syslog( + syslog.LOG_ERR, "Couldn't send webhook to slack: resp %s %s" % (response.status_code, response.text) + ) + raise ValueError( + 'Request to slack returned an error %s, the response is:\n%s' + % (response.status_code, response.text) + ) + + +if __name__ == "__main__": + main() + + diff --git a/forward-email-to-slack-webhook/install.sh b/forward-email-to-slack-webhook/install.sh new file mode 100755 index 0000000..0ee728b --- /dev/null +++ b/forward-email-to-slack-webhook/install.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +D="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +cp $D/email_to_webhook /usr/local/bin/email_to_webhook +chmod +x /usr/local/bin/email_to_webhook + +mkdir -p /etc/environment.d + +echo "|/usr/bin/envdir /etc/environment.d /usr/local/bin/email_to_webhook" > /root/.forward + +echo "now put your webhook url in /etc/environment.d/SLACK_WEBHOOK_URL"