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
|
imap_mb = None
|
||||||
try:
|
try:
|
||||||
imap_mb = IMAPmailbox(mailbox)
|
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()
|
imap_mb.close()
|
||||||
except IMAPmailboxException as e:
|
except IMAPmailboxException as e:
|
||||||
raise GulagException(whoami(self) + e.message) from 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
|
||||||
import email.header
|
import email.header
|
||||||
import time
|
import time
|
||||||
|
import re
|
||||||
from GulagUtils import whoami
|
from GulagUtils import whoami
|
||||||
|
|
||||||
class IMAPmailboxException(Exception):
|
class IMAPmailboxException(Exception):
|
||||||
@ -61,10 +62,13 @@ class IMAPmailbox:
|
|||||||
})
|
})
|
||||||
return results
|
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(
|
rv, data = self.mailbox.append(
|
||||||
self.imap_mailbox,
|
self.imap_mailbox,
|
||||||
'UNSEEN',
|
flags ,
|
||||||
imaplib.Time2Internaldate(time.time()),
|
imaplib.Time2Internaldate(time.time()),
|
||||||
str(message).encode('utf-8')
|
str(message).encode('utf-8')
|
||||||
)
|
)
|
||||||
@ -72,6 +76,10 @@ class IMAPmailbox:
|
|||||||
raise IMAPmailboxException(whoami(self)+
|
raise IMAPmailboxException(whoami(self)+
|
||||||
"ERROR appending message: " + rv
|
"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):
|
def get_message(self,imap_uid):
|
||||||
rv, data = self.mailbox.uid('FETCH', str(imap_uid), '(RFC822)')
|
rv, data = self.mailbox.uid('FETCH', str(imap_uid), '(RFC822)')
|
||||||
|
|||||||
@ -81,6 +81,18 @@ class ResQuarMail(GulagResource):
|
|||||||
except GulagException as e:
|
except GulagException as e:
|
||||||
abort(500, message=e.message)
|
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):
|
class ResQuarMailAttachments(GulagResource):
|
||||||
def get(self,quarmail_id):
|
def get(self,quarmail_id):
|
||||||
args = {"quarmail_id": quarmail_id}
|
args = {"quarmail_id": quarmail_id}
|
||||||
|
|||||||
21
db/gulag.sql
21
db/gulag.sql
@ -2,6 +2,16 @@ create database Gulag;
|
|||||||
|
|
||||||
use 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(
|
create table Mailboxes(
|
||||||
email_address varchar(767) not null primary key collate 'ascii_general_ci',
|
email_address varchar(767) not null primary key collate 'ascii_general_ci',
|
||||||
name varchar(256) not null,
|
name varchar(256) not null,
|
||||||
@ -9,19 +19,14 @@ create table Mailboxes(
|
|||||||
imap_port smallint unsigned not null default 143,
|
imap_port smallint unsigned not null default 143,
|
||||||
imap_security varchar(32) not null default 'plain',
|
imap_security varchar(32) not null default 'plain',
|
||||||
imap_user varchar(256) not null,
|
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 varchar(256) not null default 'INBOX',
|
||||||
imap_mailbox_fp varchar(256) not null default 'false-positives',
|
imap_mailbox_fp varchar(256) not null default 'false-positives',
|
||||||
imap_separator varchar(4) not null default '/',
|
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
|
comment varchar(256) default null
|
||||||
)ENGINE = InnoDB;
|
)ENGINE = InnoDB;
|
||||||
insert into Mailboxes (email_address,name,imap_user,imap_pass)
|
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 (
|
create table QuarMails (
|
||||||
id int unsigned auto_increment primary key,
|
id int unsigned auto_increment primary key,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user