mirror of
https://github.com/dreamhunter2333/cloudflare_temp_email.git
synced 2026-05-07 05:42:50 +08:00
refactor: modularize IMAP server with fixes and E2E tests - Modularize IMAP server into imap_server, imap_mailbox, imap_message, imap_http_client, parse_email, config, models - Support dual login: JWT token and address+password via backend - Add STARTTLS support with configurable TLS cert/key - Fix FETCH/STORE returning UID instead of sequence number (RFC 3501) - Implement IMessageFile.open() for correct BODY[] raw MIME delivery - Add UIDNEXT to SELECT response via _cbSelectWork override - Use per-restart UIDVALIDITY to force client resync - Pass raw MIME to SimpleMessage for accurate RFC822.SIZE - Fix SENT mailbox returning empty source - Handle CREATE command gracefully for Thunderbird compatibility - Add IMAP E2E tests: auth, LIST, SELECT, STATUS, FETCH, SEARCH, STORE, UID FETCH, BODY[] integrity, size, seq numbers, SENT mailbox - Add SMTP E2E tests using nodemailer: send plain/HTML, auth failure, sendbox verification - Add sendTestMail helper using admin/send_mail Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
28 lines
766 B
Python
28 lines
766 B
Python
import logging
|
|
import multiprocessing
|
|
|
|
from smtp_server import start_smtp_server
|
|
from imap_server import start_imap_server
|
|
from config import settings
|
|
|
|
_logger = logging.getLogger(__name__)
|
|
_logger.setLevel(logging.INFO)
|
|
|
|
if __name__ == '__main__':
|
|
_logger.info(
|
|
"Starting server proxy_url=%s smtp_port=%s imap_port=%s",
|
|
settings.proxy_url, settings.port, settings.imap_port,
|
|
)
|
|
process_list = [
|
|
multiprocessing.Process(target=start_smtp_server, args=()),
|
|
multiprocessing.Process(target=start_imap_server, args=()),
|
|
]
|
|
try:
|
|
for p in process_list:
|
|
p.start()
|
|
for p in process_list:
|
|
p.join()
|
|
except KeyboardInterrupt:
|
|
for p in process_list:
|
|
p.terminate()
|