DKIM Support v1

master
ifiguero 2022-07-16 00:00:13 -04:00
parent b363e7f791
commit 59c2434bf3
3 changed files with 22 additions and 1 deletions

View File

@ -32,6 +32,7 @@ services:
restart: unless-stopped
environment:
- DEBUG=False
- DKIM_PRIVKEY=myPricKey.pem
- DNS_RELAY=192.168.0.1
# - DNS_RELAY=200.1.21.80
- SQLALCHEMY_DATABASE_URI=postgresql+asyncpg://docker:docker@db/docker

View File

@ -6,6 +6,9 @@ import sys
import os
import aiosmtplib
import traceback
import dkim
from email.parser import Parser
from email.policy import default
from aiosmtpd.controller import Controller
from sqlalchemy.future import select
from .model import db, update_mx, update_a, FQDN, MXRecord, ARecord, IPV4Addr, Direccion, Destinatario, Carta
@ -17,6 +20,7 @@ from .resolver import updateDNS
smtprelayport = '10025'
bindip = '0.0.0.0'
dkimKey = None
# cacerts = '/etc/ssl/certs/ca-certificates.crt'
# keyfile = '/var/run/secrets/keyfile'
@ -27,6 +31,12 @@ if not os.environ.get('SMTP_HOSTNAME'):
else:
banner_hostname = os.environ.get('SMTP_HOSTNAME')
if os.environ.get('DKIM_PRIVKEY'):
try:
dkimKey = open(os.environ.get('DKIM_PRIVKEY'), 'r').read()
except:
pass
async def enviarCorreosDominio(dominioid):
valido = int(time.time())
@ -117,7 +127,16 @@ async def enviarCorreosDominio(dominioid):
await log.info("Carta Rte '{}' => Destinatarios '{}' ".format(remitente.direccion, ', '.join(rcpt_to)))
try:
await smtp.sendmail(remitente.direccion, rcpt_to, carta.contenido.encode('utf-8'))
if dkimKey is not None:
mail2send = Parser(policy=default).parsestr(carta.contenido)
mail2send['DKIM-Signature'] = dkim.sign(carta.contenido, b'mayordomo', b'ilab.cl', dkimKey, include_headers=[b'from', b'to', b'subject', b'message-id']).decode()[len("DKIM-Signature: "):]
await smtp.sendmail(remitente.direccion, rcpt_to, mail2send.encode('utf-8'))
else:
await smtp.sendmail(remitente.direccion, rcpt_to, carta.contenido.encode('utf-8'))
for destinatario in rdest.scalars():
destinatario.enviado = 1

View File

@ -6,3 +6,4 @@ asyncpg
python-daemon
async_dns
aiosmtplib
dkimpy