elektromail 0.1.0

A minimal, Rust-based IMAP + SMTP mail server for local development and testing
Documentation
# Build stage
FROM rust:1.93-alpine AS builder

RUN apk add --no-cache musl-dev binutils

WORKDIR /app

# Copy manifests first for layer caching
COPY Cargo.toml Cargo.lock ./
COPY test_support/Cargo.toml test_support/

# Create dummy files to build dependencies
RUN mkdir -p src test_support/src && \
    printf "//! Build stub for dependency caching.\\nfn main() {}\\n" > src/main.rs && \
    printf "" > test_support/src/lib.rs && \
    cargo build --release && \
    rm -rf src test_support/src

# Copy actual source code
COPY src/ src/
COPY test_support/src/ test_support/src/

# Build the application
RUN cargo build --release && strip /app/target/release/elektromail

# Runtime stage - Alpine for DNS + TLS + tzdata
FROM alpine:3.21

RUN apk add --no-cache ca-certificates tzdata \
    && adduser -D -H elektromail

COPY --from=builder /app/target/release/elektromail /usr/local/bin/

# Default ports: SMTP 2525, IMAP 1143
EXPOSE 2525 1143

USER elektromail

ENTRYPOINT ["elektromail"]