Skip to content

Addy.io: Bikin Email Anonymous Sendiri

AddyIO

Docker image untuk addy.io ini adalah layanan penerusan email anonim yang dilengkapi berbagai fitur untuk mempermudah pengelolaan email Anda. Image ini dirancang agar dapat berjalan sebagai non-root user dan mendukung multi-platform. s6-overlay digunakan sebagai process supervisor untuk menjaga proses tetap berjalan, dan Traefik dapat dimanfaatkan sebagai reverse proxy serta untuk pembuatan/pembaruan sertifikat Let’s Encrypt (Anda bisa melihat template yang disediakan untuk konfigurasi Traefik).

Fitur Utama:

  • Non-root User: Dirancang untuk keamanan, berjalan sebagai pengguna non-root.
  • Multi-platform: Mendukung berbagai arsitektur seperti linux/amd64, linux/arm/v6, linux/arm/v7, dan linux/arm64.
  • s6-overlay: Digunakan sebagai process supervisor untuk memastikan stabilitas.
  • Traefik Integration: Dapat diintegrasikan dengan Traefik untuk reverse proxy dan manajemen sertifikat Let’s Encrypt.

Cara Membangun Secara Lokal:

  1. Clone Repositori: git clone https://github.com/anonaddy/docker.git docker-addy
  2. Masuk Direktori: cd docker-addy
  3. Build Image:
    • Default: docker buildx bake
    • Multi-platform: docker buildx bake image-all

Ketersediaan Image (Platform):
Untuk melihat platform yang didukung, jalankan perintah ini:

docker buildx imagetools inspect anonaddy/anonaddy --format "{{json .Manifest}}" | jq -r '.manifests[] | select(.platform.os != null and .platform.os != "unknown") | .platform | "\(.os)/\(.architecture)\(if .variant then "/" + .variant else "" end)"'

Variabel Lingkungan (Environment Variables):
General:

  • TZ: Zona waktu container (default: UTC)
  • PUID: User ID (default: 1000)
  • PGID: Group ID (default: 1000)
  • MEMORY_LIMIT: Batas memori PHP (default: 256M)
  • UPLOAD_MAX_SIZE: Batas ukuran unggah (default: 16M)
  • CLEAR_ENV: Membersihkan lingkungan di worker FPM (default: yes)
  • OPCACHE_MEM_SIZE: Konsumsi memori PHP OpCache (default: 128)
  • LISTEN_IPV6: Mengaktifkan IPv6 untuk Nginx dan Postfix (default: true)
  • REAL_IP_FROM: Alamat terpercaya untuk pengganti IP klien (default: 0.0.0.0/32)
  • REAL_IP_HEADER: Header permintaan untuk mengganti alamat klien (default: X-Forwarded-For)
  • LOG_IP_VAR: Variabel untuk mengambil alamat IP remote di Nginx (default: remote_addr)
  • LOG_CROND: Mengaktifkan logging crond (default: true)

App:

  • APP_NAME: Nama aplikasi (default: addy.io)
  • APP_KEY: Wajib. Kunci enkripsi aplikasi. Hasilkan dengan anonaddy key:generate –show atau echo “base64:$(openssl rand -base64 32)”.
  • APP_DEBUG: Mengaktifkan/menonaktifkan mode debug (default: false)
  • APP_URL: URL instalasi Anda.
  • ANONADDY_RETURN_PATH: Header return-path untuk email keluar.
  • ANONADDY_ADMIN_USERNAME: Username admin untuk menerima email yang diteruskan di domain root.
  • ANONADDY_ENABLE_REGISTRATION: Mencegah pendaftaran pengguna baru (default: true).
  • ANONADDY_DOMAIN: Wajib. Domain root untuk menerima email.
  • ANONADDY_HOSTNAME: FQDN hostname server Anda untuk validasi custom domain.
  • ANONADDY_DNS_RESOLVER: Resolver DNS untuk validasi custom domain (default: 127.0.0.1).
  • ANONADDY_ALL_DOMAINS: Daftar domain tambahan (misal: example.com,example2.com).
  • ANONADDY_NON_ADMIN_SHARED_DOMAINS: Mencegah non-admin membuat alias domain bersama (default: true).
  • ANONADDY_SECRET: Wajib. String acak panjang untuk hashing data balasan anonim.
  • ANONADDY_LIMIT: Batas penerusan dan balasan email per jam (default: 200).
  • ANONADDY_BANDWIDTH_LIMIT: Batas bandwidth bulanan dalam byte (default: 104857600).
  • ANONADDY_NEW_ALIAS_LIMIT: Batas pembuatan alias baru per jam (default: 10).
  • ANONADDY_ADDITIONAL_USERNAME_LIMIT: Batas penambahan username ke akun (default: 10).
  • ANONADDY_SIGNING_KEY_FINGERPRINT: Fingerprint kunci GPG untuk menandatangani email yang diteruskan.
  • ANONADDY_DKIM_SIGNING_KEY: Path ke kunci privat DKIM untuk menandatangani email custom domain.
  • ANONADDY_DKIM_SELECTOR: Selector untuk kunci DKIM (default: default).
    • Catatan: APP_KEY_FILE, ANONADDY_SECRET_FILE, dan ANONADDY_SIGNING_KEY_FINGERPRINT_FILE dapat digunakan untuk mengisi nilai dari file (fitur Docker secrets).

Database:

  • DB_HOST: Wajib. Hostname/IP database MySQL.
  • DB_PORT: Port database MySQL (default: 3306).
  • DB_DATABASE: Nama database MySQL (default: anonaddy).
  • DB_USERNAME: User MySQL (default: anonaddy).
  • DB_PASSWORD: Password MySQL.
  • DB_TIMEOUT: Waktu tunggu koneksi MySQL (default: 60 detik).
    • Catatan: DB_USERNAME_FILE dan DB_PASSWORD_FILE dapat digunakan untuk mengisi nilai dari file (fitur Docker secrets).

Redis:

  • REDIS_HOST: Hostname/IP Redis.
  • REDIS_PORT: Port Redis (default: 6379).
  • REDIS_PASSWORD: Password Redis.
    • Catatan: REDIS_PASSWORD_FILE dapat digunakan untuk mengisi nilai dari file (fitur Docker secrets).

Mail:

  • MAIL_FROM_NAME: Nama pengirim (default: addy.io).
  • MAIL_FROM_ADDRESS: Alamat email pengirim (default: addy@${ANONADDY_DOMAIN}).
  • MAIL_ENCRYPTION: Protokol enkripsi untuk email (default: null).

Postfix:

  • POSTFIX_DEBUG: Mengaktifkan debug (default: false).
  • POSTFIX_MESSAGE_SIZE_LIMIT: Ukuran maksimal pesan dalam byte (default: 26214400).
  • POSTFIX_SMTPD_TLS: Mengaktifkan TLS di server SMTP Postfix (default: false, nilai: true|may|encrypt|ask|require).
  • POSTFIX_SMTPD_TLS_CERT_FILE: File sertifikat RSA server SMTP Postfix (format PEM).
  • POSTFIX_SMTPD_TLS_ECCERT_FILE: File sertifikat ECC server SMTP Postfix (format PEM).
  • POSTFIX_SMTPD_TLS_ECKEY_FILE: File kunci privat ECC server SMTP Postfix (format PEM).
  • POSTFIX_SMTPD_TLS_KEY_FILE: File kunci privat RSA server SMTP Postfix (format PEM).
  • POSTFIX_SMTP_TLS: Mengaktifkan TLS di klien SMTP Postfix (default: false, nilai: true|may|encrypt|dane|dane-only|verify|secure).
  • POSTFIX_RELAYHOST: Host default untuk mengirim mail.
  • POSTFIX_RELAYHOST_AUTH_ENABLE: Mengaktifkan autentikasi sisi klien untuk relayhost (default: false).
  • POSTFIX_RELAYHOST_USERNAME: Username klien SMTP Postfix untuk autentikasi relayhost.
  • POSTFIX_RELAYHOST_PASSWORD: Password klien SMTP Postfix untuk autentikasi relayhost.
  • POSTFIX_RELAYHOST_SSL_ENCRYPTION: Mengaktifkan enkripsi SSL melalui SMTP jika TLS tidak tersedia (default: false, nilai: true|tls_policy).
  • POSTFIX_SMTP_TLS_DOMAINS_EXCEPTIONS: Daftar domain terpisah koma dengan pengecualian TLS.
  • POSTFIX_SPAMAUS_DQS_KEY: Kunci personal untuk Spamhaus DQS.
    • Catatan: POSTFIX_RELAYHOST_USERNAME_FILE dan POSTFIX_RELAYHOST_PASSWORD_FILE dapat digunakan untuk mengisi nilai dari file (fitur Docker secrets).

RSPAMD:

  • RSPAMD_ENABLE: Mengaktifkan layanan Rspamd (default: false).
  • RSPAMD_WEB_PASSWORD: Password web Rspamd (default: null).
  • RSPAMD_NO_LOCAL_ADDRS: Menonaktifkan jaringan lokal Rspamd (default: false).
  • RSPAMD_SMTPD_MILTERS: Daftar aplikasi Milter (spasi atau koma sebagai pemisah) untuk email baru (default: inet:127.0.0.1:11332).
  • RSPAMD_GREYLIST_ENABLE: Mengaktifkan greylisting di Rspamd (default: true).
    • Catatan: RSPAMD_WEB_PASSWORD_FILE dapat digunakan untuk mengisi nilai dari file (fitur Docker secrets).
    • Peringatan: Kunci privat DKIM harus ada di /data/dkim/${ANONADDY_DOMAIN}.private. Jika tidak ditemukan, layanan Rspamd akan dinonaktifkan. Rspamd perlu diaktifkan agar fitur balasan anonim berfungsi.

Volumes:

  • /data: Berisi semua data penyimpanan.
    • Peringatan: Pastikan volume ini dimiliki oleh user/group dengan PUID dan PGID yang ditentukan. Izin yang salah dapat mencegah container memulai.

Ports:

  • 8000: Port HTTP (addy.io).
  • 11334: Port HTTP (dashboard web Rspamd).
  • 25: Port SMTP (Postfix).

Penggunaan dengan Docker Compose:
Docker Compose adalah cara yang direkomendasikan.

  1. Jalankan Container: Gunakan template docker-compose.yml yang disediakan, lalu docker compose up -d.
  2. Lihat Log: docker compose logs -f.

Upgrade:

  1. docker compose pull
  2. docker compose up -d

Catatan Penting:

  • Perintah anonaddy: Untuk mengelola pengguna, kata sandi, dan operasi server lainnya, gunakan: docker compose exec addy anonaddy <command>. Contoh untuk melihat semua perintah: docker compose exec addy anonaddy list.
  • Membuat User Baru: docker compose exec addy anonaddy anonaddy:create-user “username” “webmaster@example.com”.
  • Menghasilkan Keypair DKIM: Jalankan docker compose run –entrypoint ” addy gen-dkim. Ini akan menghasilkan kunci privat di data/dkim/example.com.private dan record DNS TXT publik di data/dkim/example.com.txt.