updated layout - make server as package
This commit is contained in:
9
email_server/__init__.py
Normal file
9
email_server/__init__.py
Normal file
@@ -0,0 +1,9 @@
|
||||
from .auth import *
|
||||
from .dkim_manager import *
|
||||
from .server_runner import *
|
||||
from .tls_utils import *
|
||||
from .cli_tools import *
|
||||
from .email_relay import *
|
||||
from .models import *
|
||||
from .smtp_handler import *
|
||||
from .config import *
|
||||
@@ -5,7 +5,7 @@ Authentication modules for the SMTP server.
|
||||
import logging
|
||||
from datetime import datetime
|
||||
from aiosmtpd.smtp import AuthResult, LoginPassword
|
||||
from models import Session, User, Domain, WhitelistedIP, AuthLog, check_password
|
||||
from .models import Session, User, Domain, WhitelistedIP, AuthLog, check_password
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ Command-line tools for managing the SMTP server.
|
||||
|
||||
import argparse
|
||||
import sys
|
||||
from models import Session, Domain, User, WhitelistedIP, hash_password, create_tables
|
||||
from dkim_manager import DKIMManager
|
||||
from .models import Session, Domain, User, WhitelistedIP, hash_password, create_tables
|
||||
from .dkim_manager import DKIMManager
|
||||
import logging
|
||||
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
|
||||
@@ -7,8 +7,8 @@ import dkim
|
||||
from cryptography.hazmat.primitives import serialization, hashes
|
||||
from cryptography.hazmat.primitives.asymmetric import rsa
|
||||
from datetime import datetime
|
||||
from models import Session, Domain, DKIMKey
|
||||
from config import DKIM_SELECTOR, DKIM_KEY_SIZE
|
||||
from .models import Session, Domain, DKIMKey
|
||||
from .config import DKIM_SELECTOR, DKIM_KEY_SIZE
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ import dns.resolver
|
||||
import smtplib
|
||||
import logging
|
||||
from datetime import datetime
|
||||
from models import Session, EmailLog
|
||||
from .models import Session, EmailLog
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ from sqlalchemy import create_engine, Column, Integer, String, DateTime, Text, B
|
||||
from sqlalchemy.orm import declarative_base, sessionmaker
|
||||
from datetime import datetime
|
||||
import bcrypt
|
||||
from config import DATABASE_URL
|
||||
from .config import DATABASE_URL
|
||||
|
||||
# SQLAlchemy setup
|
||||
Base = declarative_base()
|
||||
|
||||
@@ -9,11 +9,11 @@ import sys
|
||||
import os
|
||||
|
||||
# Import our modules
|
||||
from config import SMTP_PORT, SMTP_TLS_PORT, HOSTNAME, LOG_LEVEL
|
||||
from models import create_tables
|
||||
from smtp_handler import CustomSMTPHandler, PlainController
|
||||
from tls_utils import generate_self_signed_cert, create_ssl_context
|
||||
from dkim_manager import DKIMManager
|
||||
from .config import SMTP_PORT, SMTP_TLS_PORT, HOSTNAME, LOG_LEVEL
|
||||
from .models import create_tables
|
||||
from .smtp_handler import CustomSMTPHandler, PlainController
|
||||
from .tls_utils import generate_self_signed_cert, create_ssl_context
|
||||
from .dkim_manager import DKIMManager
|
||||
from aiosmtpd.controller import Controller
|
||||
from aiosmtpd.smtp import SMTP as AIOSMTP
|
||||
|
||||
@@ -32,7 +32,7 @@ except RuntimeError:
|
||||
# No running loop, set debug when we create one
|
||||
pass
|
||||
|
||||
async def main():
|
||||
async def start_server():
|
||||
"""Main server function."""
|
||||
logger.info("Starting SMTP Server with DKIM support...")
|
||||
|
||||
@@ -46,7 +46,7 @@ async def main():
|
||||
dkim_manager.initialize_default_keys()
|
||||
|
||||
# Add test data if needed
|
||||
from models import Session, Domain, User, WhitelistedIP, hash_password
|
||||
from .models import Session, Domain, User, WhitelistedIP, hash_password
|
||||
session = Session()
|
||||
try:
|
||||
# Add example.com domain if not exists
|
||||
@@ -148,7 +148,7 @@ async def main():
|
||||
|
||||
if __name__ == '__main__':
|
||||
try:
|
||||
asyncio.run(main())
|
||||
asyncio.run(start_server())
|
||||
except KeyboardInterrupt:
|
||||
logger.info('Server interrupted by user')
|
||||
sys.exit(0)
|
||||
@@ -7,9 +7,9 @@ import uuid
|
||||
from datetime import datetime
|
||||
from aiosmtpd.smtp import SMTP as AIOSMTP, AuthResult
|
||||
from aiosmtpd.controller import Controller
|
||||
from auth import Authenticator, IPAuthenticator
|
||||
from email_relay import EmailRelay
|
||||
from dkim_manager import DKIMManager
|
||||
from .auth import Authenticator, IPAuthenticator
|
||||
from .email_relay import EmailRelay
|
||||
from .dkim_manager import DKIMManager
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ import ssl
|
||||
import os
|
||||
import logging
|
||||
from OpenSSL import crypto
|
||||
from config import TLS_CERT_FILE, TLS_KEY_FILE
|
||||
from .config import TLS_CERT_FILE, TLS_KEY_FILE
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
13
start_server.py
Normal file
13
start_server.py
Normal file
@@ -0,0 +1,13 @@
|
||||
from email_server import start_server, logger
|
||||
import asyncio
|
||||
import sys
|
||||
|
||||
if __name__ == '__main__':
|
||||
try:
|
||||
asyncio.run(start_server())
|
||||
except KeyboardInterrupt:
|
||||
logger.info('Server interrupted by user')
|
||||
sys.exit(0)
|
||||
except Exception as e:
|
||||
logger.error(f'Server error: {e}')
|
||||
sys.exit(1)
|
||||
Reference in New Issue
Block a user