diff --git a/email_api/docker-compose-python.yml b/email_api/docker-compose-python.yml new file mode 100644 index 0000000..52e7433 --- /dev/null +++ b/email_api/docker-compose-python.yml @@ -0,0 +1,21 @@ +services: + email-api: + container_name: email-api + image: python:3.12-slim + restart: unless-stopped + network_mode: host + volumes: + - ./email_api:/app + - /var/mail:/var/mail # Maildir-Zugriff für Health-Check + working_dir: /app + env_file: + - .env + environment: + - API_TOKEN=${API_TOKEN} + - AWS_REGION=${AWS_REGION} + - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} + - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} + command: > + bash -c "pip install --upgrade pip && + pip install flask python-dotenv boto3 requests && + python app.py" \ No newline at end of file diff --git a/email_api/docker-compose.yml b/email_api/docker-compose.yml index 52e7433..17f1853 100644 --- a/email_api/docker-compose.yml +++ b/email_api/docker-compose.yml @@ -1,12 +1,14 @@ +version: '3.8' + services: email-api: container_name: email-api - image: python:3.12-slim + image: node:18-slim restart: unless-stopped network_mode: host volumes: - ./email_api:/app - - /var/mail:/var/mail # Maildir-Zugriff für Health-Check + - /var/mail:/var/mail # Maildir access for health check working_dir: /app env_file: - .env @@ -15,7 +17,33 @@ services: - AWS_REGION=${AWS_REGION} - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} + - SMTP_HOST=${SMTP_HOST:-localhost} + - SMTP_PORT=${SMTP_PORT:-25} + - MAILCOW_API_KEY=${MAILCOW_API_KEY} + - MAILCOW_API=${MAILCOW_API} + - PGHOST=postgres + - PGUSER=${PGUSER:-email_user} + - PGPASSWORD=${PGPASSWORD:-email_password} + - PGDATABASE=${PGDATABASE:-email_db} + - PGPORT=${PGPORT:-5432} command: > - bash -c "pip install --upgrade pip && - pip install flask python-dotenv boto3 requests && - python app.py" \ No newline at end of file + bash -c "npm install express aws-sdk nodemailer emailjs-mime-parser emailjs-addressparser js-base64 winston dotenv axios pg && + node app.js" + depends_on: + - postgres + + postgres: + container_name: postgres + image: postgres:16 + restart: unless-stopped + network_mode: host + environment: + - POSTGRES_USER=${PGUSER:-email_user} + - POSTGRES_PASSWORD=${PGPASSWORD:-email_password} + - POSTGRES_DB=${PGDATABASE:-email_db} + volumes: + - postgres_data:/var/lib/postgresql/data + - ./init.sql:/docker-entrypoint-initdb.d/init.sql + +volumes: + postgres_data: \ No newline at end of file diff --git a/email_api/email_api/app.js b/email_api/email_api/app.js new file mode 100644 index 0000000..e69de29 diff --git a/email_api/email_api/package.json b/email_api/email_api/package.json new file mode 100644 index 0000000..ac52674 --- /dev/null +++ b/email_api/email_api/package.json @@ -0,0 +1,16 @@ +{ + "name": "email-api", + "version": "1.0.0", + "dependencies": { + "express": "^4.18.2", + "aws-sdk": "^2.1490.0", + "nodemailer": "^6.9.7", + "emailjs-mime-parser": "^2.1.0", + "emailjs-addressparser": "^2.0.0", + "js-base64": "^3.7.5", + "winston": "^3.11.0", + "dotenv": "^16.3.1", + "axios": "^1.6.2", + "pg": "^8.11.3" + } +} \ No newline at end of file diff --git a/email_api/init.sql b/email_api/init.sql new file mode 100644 index 0000000..a06b7a5 --- /dev/null +++ b/email_api/init.sql @@ -0,0 +1,11 @@ +CREATE TABLE email_statuses ( + id SERIAL PRIMARY KEY, + domain VARCHAR(255) NOT NULL, + s3_key VARCHAR(1024) NOT NULL, + status VARCHAR(50) NOT NULL, + timestamp BIGINT NOT NULL, + processor VARCHAR(50) NOT NULL, + from_addr TEXT, + to_addrs TEXT[], + UNIQUE (domain, s3_key) +); \ No newline at end of file