DKIM Support v1
parent
b363e7f791
commit
59c2434bf3
|
@ -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
|
||||
|
|
|
@ -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:
|
||||
|
||||
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
|
||||
|
||||
|
|
|
@ -6,3 +6,4 @@ asyncpg
|
|||
python-daemon
|
||||
async_dns
|
||||
aiosmtplib
|
||||
dkimpy
|
Loading…
Reference in New Issue