From eae3f51c562862abfdc150db363f33d4d7e4b814 Mon Sep 17 00:00:00 2001 From: Aevann Date: Sat, 21 Jan 2023 02:19:07 +0200 Subject: [PATCH] stop using mailgun --- Dockerfile | 1 + env | 1 - files/helpers/config/const.py | 1 - files/helpers/mail.py | 47 +++++++++++++++++++++++++---------- requirements.txt | 1 + ubuntu_setup.sh | 2 +- 6 files changed, 37 insertions(+), 16 deletions(-) diff --git a/Dockerfile b/Dockerfile index 14a25325f..c6105258a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,6 +10,7 @@ RUN apt install -y ffmpeg RUN apt install -y postgresql RUN apt install -y libpq-dev RUN apt install -y nano +RUN apt install -y mailutils COPY requirements.txt /etc/requirements.txt diff --git a/env b/env index 68000b971..8e5a6e90b 100644 --- a/env +++ b/env @@ -16,7 +16,6 @@ export VAPID_PRIVATE_KEY="blahblahblah" export GUMROAD_TOKEN="blahblahblah" export GUMROAD_LINK="blahblahblah" export GUMROAD_ID="blahblahblah" -export MAILGUN_KEY="blahblahblah" export CF_KEY="blahblahblah" export CF_ZONE="blahblahblah" export DEBIAN_FRONTEND="noninteractive" diff --git a/files/helpers/config/const.py b/files/helpers/config/const.py index d60f9609e..06b6c4770 100644 --- a/files/helpers/config/const.py +++ b/files/helpers/config/const.py @@ -45,7 +45,6 @@ VAPID_PRIVATE_KEY = environ.get("VAPID_PRIVATE_KEY").strip() GUMROAD_TOKEN = environ.get("GUMROAD_TOKEN").strip() GUMROAD_LINK = environ.get("GUMROAD_LINK").strip() GUMROAD_ID = environ.get("GUMROAD_ID").strip() -MAILGUN_KEY = environ.get("MAILGUN_KEY").strip() CF_KEY = environ.get("CF_KEY").strip() CF_ZONE = environ.get("CF_ZONE").strip() GLOBAL = environ.get("GLOBAL", "").strip() diff --git a/files/helpers/mail.py b/files/helpers/mail.py index 01302def6..b9f86e2bf 100644 --- a/files/helpers/mail.py +++ b/files/helpers/mail.py @@ -2,14 +2,15 @@ import requests import time from files.helpers.security import * -from files.helpers.config.const import EMAIL, MAILGUN_KEY +from files.helpers.config.const import EMAIL from urllib.parse import quote from flask import render_template -def send_mail(to_address, subject, html): - if SITE == 'rdrama.net': + +if SITE == 'rdrama.net': + def send_mail(to_address, subject, html): url = f"https://deuxrama.net/email" data = {"from": EMAIL, "to": to_address, @@ -17,16 +18,36 @@ def send_mail(to_address, subject, html): "html": html, } requests.post(url, data=data) - else: - if MAILGUN_KEY == DEFAULT_CONFIG_VALUE: return - url = f"https://api.mailgun.net/v3/{SITE}/messages" - auth = ("api", MAILGUN_KEY) - data = {"from": EMAIL, - "to": [to_address], - "subject": subject, - "html": html, - } - requests.post(url, auth=auth, data=data) +else: + import smtplib + from email.mime.text import MIMEText + from email.utils import formatdate, make_msgid + import dkim + + def send_mail(to_address, subject, html): + msg = MIMEText(html, 'html') + + msg['Subject'] = subject + msg['From'] = EMAIL + msg['To'] = to_address + msg['Date'] = formatdate() + msg['Message-ID'] = make_msgid(domain=SITE) + + headers = ["To", "From", "Subject", "Message-ID"] + with open("/dkim_private.pem") as fh: + dkim_private = fh.read() + sig = dkim.sign( + message=msg.as_string().encode("ascii"), + selector='d'.encode("ascii"), + domain=SITE.encode("ascii"), + privkey=dkim_private.encode("ascii"), + include_headers=headers + ) + msg["DKIM-Signature"] = sig.decode("ascii").lstrip("DKIM-Signature: ") + + with smtplib.SMTP('localhost', 25) as server: + server.sendmail(EMAIL, [to_address], msg.as_string()) + print(f"Successfully sent email to {to_address}", flush=True) def send_verification_email(user, email=None): diff --git a/requirements.txt b/requirements.txt index bf7cc8b0f..db1851850 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,7 @@ beautifulsoup4 bleach bleach[css] +dkimpy Flask Flask-Caching Flask-Compress diff --git a/ubuntu_setup.sh b/ubuntu_setup.sh index 6e2cf5733..dcc05bd3e 100644 --- a/ubuntu_setup.sh +++ b/ubuntu_setup.sh @@ -2,7 +2,7 @@ apt -y update apt -y upgrade -apt -y install git redis-server python3-pip ffmpeg tmux nginx snapd ufw gpg-agent htop nano +apt -y install git redis-server python3-pip ffmpeg tmux nginx snapd ufw gpg-agent htop nano mailutils git config --global credential.helper store cd /rDrama