Ez lett a megoldás:
#import sys
import Milter
import smtplib
class EmailDuplicationMilter(Milter.Base):
def __init__(self):
self.duplicate_email = ''
def envfrom(self, mailfrom, *str):
self.mailfrom = mailfrom
return Milter.CONTINUE
def envrcpt(self, to, *str):
self.recipients = to
return Milter.CONTINUE
def header(self, name, value):
self.duplicate_email += str(name) + ': ' + str(value) + '\n'
return Milter.CONTINUE
def eoh(self):
self.duplicate_email += '\n'
return Milter.CONTINUE
def body(self, chunk):
self.duplicate_email += chunk.decode('UTF-8')
return Milter.CONTINUE
def eom(self):
try:
# print(self.duplicate_email)
server = smtplib.SMTP('test.server.com', 25, 1)
server.helo(name='old.server.com') # if hostname no fqdn
server.sendmail(self.mailfrom, self.recipients, self.duplicate_email)
server.quit()
except Exception as e:
print("Error: ", e)
return Milter.ACCEPT
def close(self):
# sys.stdout.flush()
return Milter.CONTINUE
Milter.factory = EmailDuplicationMilter
#sys.stdout.flush()
Milter.runmilter("maildup", "inet:1111", 20)
Náhány emailre dob egy ilyen hibát: Error: 'ascii' codec can't encode character '\xe1'. Nincs valami ötleted? Bár nagy jelentősége nincs, mert nem áll le a milter. Próbáltam az UTF-8-on kívül az ASCII-t is, de ugyanaz.