mirror of
https://github.com/chillout2k/gulag.git
synced 2025-12-13 16:00:18 +00:00
New resource: QuarMailRelease
GulagMailbox:add_message() returns imap_uid
This commit is contained in:
parent
b9696b4e83
commit
f4302025dd
@ -536,7 +536,11 @@ class Gulag:
|
||||
imap_mb = None
|
||||
try:
|
||||
imap_mb = IMAPmailbox(mailbox)
|
||||
imap_mb.add_message(msg)
|
||||
imap_uid = imap_mb.add_message(msg, unseen=True)
|
||||
logging.info(whoami(self) + "IMAP_UID: " + str(imap_uid))
|
||||
imap_mb.close()
|
||||
except IMAPmailboxException as e:
|
||||
raise GulagException(whoami(self) + e.message) from e
|
||||
|
||||
def release_quarmail(self,args):
|
||||
pass
|
||||
|
||||
@ -2,6 +2,7 @@ import imaplib
|
||||
import email
|
||||
import email.header
|
||||
import time
|
||||
import re
|
||||
from GulagUtils import whoami
|
||||
|
||||
class IMAPmailboxException(Exception):
|
||||
@ -61,10 +62,13 @@ class IMAPmailbox:
|
||||
})
|
||||
return results
|
||||
|
||||
def add_message(self,message):
|
||||
def add_message(self,message,unseen=False):
|
||||
flags = ''
|
||||
if(unseen == True):
|
||||
flags = 'UNSEEN'
|
||||
rv, data = self.mailbox.append(
|
||||
self.imap_mailbox,
|
||||
'UNSEEN',
|
||||
flags ,
|
||||
imaplib.Time2Internaldate(time.time()),
|
||||
str(message).encode('utf-8')
|
||||
)
|
||||
@ -72,6 +76,10 @@ class IMAPmailbox:
|
||||
raise IMAPmailboxException(whoami(self)+
|
||||
"ERROR appending message: " + rv
|
||||
)
|
||||
p = re.compile(r'^\[APPENDUID\s+\d+\s+(\d+)\].+$')
|
||||
m = p.search(data[0].decode())
|
||||
imap_uid = m.group(1)
|
||||
return imap_uid
|
||||
|
||||
def get_message(self,imap_uid):
|
||||
rv, data = self.mailbox.uid('FETCH', str(imap_uid), '(RFC822)')
|
||||
|
||||
@ -81,6 +81,18 @@ class ResQuarMail(GulagResource):
|
||||
except GulagException as e:
|
||||
abort(500, message=e.message)
|
||||
|
||||
class ResQuarMailRelease(GulagResource):
|
||||
def get(self,quarmail_id):
|
||||
args = {"quarmail_id": quarmail_id}
|
||||
if(request.args.get('purge')):
|
||||
args['purge'] = True
|
||||
try:
|
||||
return self.gulag.release_quarmail(args)
|
||||
except GulagNotFoundException as e:
|
||||
abort(404, message=e.message)
|
||||
except GulagException as e:
|
||||
abort(500, message=e.message)
|
||||
|
||||
class ResQuarMailAttachments(GulagResource):
|
||||
def get(self,quarmail_id):
|
||||
args = {"quarmail_id": quarmail_id}
|
||||
|
||||
19
db/gulag.sql
19
db/gulag.sql
@ -2,6 +2,16 @@ create database Gulag;
|
||||
|
||||
use Gulag;
|
||||
|
||||
create table SMTPrelays(
|
||||
id varchar(64) not null primary key,
|
||||
smtp_server varchar(256) default '127.0.0.1' collate 'ascii_general_ci',
|
||||
smtp_port smallint unsigned not null default 25,
|
||||
smtp_security varchar(32) not null default 'plain',
|
||||
smtp_user varchar(256) default null,
|
||||
smtp_pass varchar(1024) default null,
|
||||
comment varchar(256) default null
|
||||
)ENGINE = InnoDB;
|
||||
|
||||
create table Mailboxes(
|
||||
email_address varchar(767) not null primary key collate 'ascii_general_ci',
|
||||
name varchar(256) not null,
|
||||
@ -9,19 +19,14 @@ create table Mailboxes(
|
||||
imap_port smallint unsigned not null default 143,
|
||||
imap_security varchar(32) not null default 'plain',
|
||||
imap_user varchar(256) not null,
|
||||
imap_pass varchar(256) not null,
|
||||
imap_pass varchar(1024) not null,
|
||||
imap_mailbox varchar(256) not null default 'INBOX',
|
||||
imap_mailbox_fp varchar(256) not null default 'false-positives',
|
||||
imap_separator varchar(4) not null default '/',
|
||||
smtp_server varchar(256) default null,
|
||||
smtp_port smallint unsigned not null default 25,
|
||||
smtp_security varchar(32) not null default 'plain',
|
||||
smtp_user varchar(256) default null,
|
||||
smtp_pass varchar(2048) default null,
|
||||
comment varchar(256) default null
|
||||
)ENGINE = InnoDB;
|
||||
insert into Mailboxes (email_address,name,imap_user,imap_pass)
|
||||
values('quarantine-sandbox@example.org','E-Mail sandbox quarantine','quarantine-sb','quarantine-sb_secure_password');
|
||||
values('quarantine@example.org','E-Mail inbound quarantine','quarantine','quarantine_secure_password');
|
||||
|
||||
create table QuarMails (
|
||||
id int unsigned auto_increment primary key,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user