Fixed all the issues
parent
825c9f575a
commit
fc173dbac2
|
@ -3,5 +3,6 @@ FROM python:alpine
|
||||||
WORKDIR /usr/src/app
|
WORKDIR /usr/src/app
|
||||||
RUN pip install --no-cache requests configargparse xdg aiosmtpd
|
RUN pip install --no-cache requests configargparse xdg aiosmtpd
|
||||||
COPY ./libertyforward.py .
|
COPY ./libertyforward.py .
|
||||||
|
|
||||||
EXPOSE 25
|
EXPOSE 25
|
||||||
CMD ["python", "/usr/src/app/libertyforward.py"]
|
CMD ["python", "/usr/src/app/libertyforward.py"]
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
|
from base64 import b64encode
|
||||||
from time import sleep
|
from time import sleep
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
from aiosmtpd.controller import Controller
|
from aiosmtpd.controller import Controller
|
||||||
from configargparse import ArgParser
|
from configargparse import ArgParser
|
||||||
|
@ -14,32 +16,17 @@ def parse_args():
|
||||||
return parser.parse_args()
|
return parser.parse_args()
|
||||||
|
|
||||||
|
|
||||||
class MailerHandlerMixin:
|
|
||||||
"""Base class for the mail handlers"""
|
|
||||||
_api_token = None
|
|
||||||
|
|
||||||
@property
|
|
||||||
def api_token(self):
|
|
||||||
return self._api_token
|
|
||||||
|
|
||||||
@api_token.setter
|
|
||||||
def api_token(self, value):
|
|
||||||
self._api_token = value
|
|
||||||
|
|
||||||
|
|
||||||
class KingMailerHandler(object):
|
class KingMailerHandler(object):
|
||||||
|
|
||||||
async def handle_DATA(self, server, session, envelope):
|
async def handle_DATA(self, server, session, envelope):
|
||||||
print('Incoming mesage from: {}'.format(envelope.mail_from), flush=True)
|
|
||||||
payload = {
|
payload = {
|
||||||
'mail_from': envelope.mail_from,
|
'mail_from': envelope.mail_from,
|
||||||
'rcpt_to': envelope.rcpt_tos,
|
'rcpt_to': envelope.rcpt_tos,
|
||||||
'data': envelope.content
|
'data': b64encode(envelope.original_content).decode()
|
||||||
}
|
}
|
||||||
headers = {'X-Server-API-Key': self.api_token}
|
headers = {'X-Server-API-Key': self.api_token}
|
||||||
response = requests.post('https://kingmailer.org/api/v1/send/raw', json=payload, headers=headers)
|
response = requests.post('https://kingmailer.org/api/v1/send/raw', json=payload, headers=headers)
|
||||||
resp_dict = response.json()
|
resp_dict = response.json()
|
||||||
print(resp_dict, flush=True)
|
|
||||||
if resp_dict['status'] == 'success':
|
if resp_dict['status'] == 'success':
|
||||||
print('Message accepted', flush=True)
|
print('Message accepted', flush=True)
|
||||||
return '250 Message accepted for delivery'
|
return '250 Message accepted for delivery'
|
||||||
|
@ -53,7 +40,7 @@ if __name__ == '__main__':
|
||||||
args = parse_args()
|
args = parse_args()
|
||||||
handler = KingMailerHandler()
|
handler = KingMailerHandler()
|
||||||
handler.api_token = args.api_token
|
handler.api_token = args.api_token
|
||||||
controller = Controller(handler, hostname='127.0.0.1', port=25)
|
controller = Controller(handler, hostname='0.0.0.0', port=25)
|
||||||
print('Starting controller thread', flush=True)
|
print('Starting controller thread', flush=True)
|
||||||
controller.start()
|
controller.start()
|
||||||
while True:
|
while True:
|
||||||
|
|
Loading…
Reference in New Issue