Pre Install
Pointing Domain
Silakan buat domain record/pointing
Karena saya ingin mengakses Mailu Web dari domain mail.warscloud.net dan webmail.warscloud.net jadi saya menambahkan 2 record A, sesuaikan tergantung kebutuhan.
warscloud.net MX mail.warscloud.net
mail.warscloud.net A 103.103.103.103
webmail.warscloud.net A 103.103.103.103
Untuk reverse domain silakan set PTR seperti contoh berikut
103.103.103.103.in-addr.arpa PTR mail.warscloud.net
Untuk PTR record ini silakan request/set di penyedia VPS, ISP, atau jika IP milik sendiri silakan minta untuk delegasi Reverse Domain dimana kamu mendapatkan alokasi IP tersebut ke RIR/LIR seperti APNIC, IDNIC, RIPE, ARIN
Install Docker Engine
Untuk cara install docker engine bisa dilihat dibawah ini
Instalasi dan Konfigurasi Mailu
Kunjungi halaman berikut untuk melakukan setup file docker-compose
https://setup.mailu.io/2024.06
Setup seperti dibawah ini

Pada version, silakan pilih version yang ingin digunakan

Keterangan:
Main mail domain and server display name: ini adalah domain utama yang akan menjadi domain setelah @ contoh: [email protected]
Outgoing message rate limit (per user): ini adalah batasan pengiriman email per hari/per user
Website name: Nantinya di halaman webmail akan ada navigasi, dan nama inilah yang akan muncul
Linked Website URL: Ketika nama Website yang didefinisikan diatas di klik akan menuju link ini

Pada step 2 ini, saya memilih beberapa fitur dasar

Keterangan:
IPv4 listen address: Silakan isikan IP yang digunakan
Public hostnames: ini adalah daftar hostname yang nantinya akan digunakan dan akan dilakukan generate SSL oleh letsencrypt
Pastikan daftar domain yang di isikan di bagian Public hostnames sudah ada A record nya, karena dibutuhkan pada saat pertama kali run untuk request SSL letsencrypt
Jika sudah klik Setup Mailu
Selanjutnya akan muncul summary dan diberikan petunjuk langkah selanjutnya seperti berikut

Silakan ikuti tutorial tersebut
Atau, disini saya akan menjalakan dan menjelaskan step nya
Buat directory untuk menyimpan data-data mailu
mkdir /mailu
Pindah ke directory /mailu dan ambil file docker-compose.yml
dan mailu.env
cd /mailu
wget https://setup.mailu.io/2024.06/file/xxx-xxx-xxxx/docker-compose.yml
wget https://setup.mailu.io/2024.06/file/xxx-xxx-xxxx/mailu.env
Pindah ke Directory /mailu dan jalankan service docker container
cd /mailu
docker compose -p mailu up -d
Setelah semua service/container berjalan, buat password user admin untuk login ke mailu web
docker compose -p mailu exec admin flask mailu admin admin warscloud.net PASSWORD
Lalu akses web mailu menggunakan domain yang kita definisikan di Public hostnames
Tampilan awal mailu

Post Installation
Setup SPF, DKIM, DMARC
Silakan navigasi ke menu Mail Domains, lalu klik icon Details


Silakan set domain record seperti di atas, sesuaikan.
Jika domain di simpan di Cloudflare kita bisa Download zonefile lalu import, dengan ini kita tidak perlu satu-persatu menambahkan record manual
Selanjutnya silakan klik Generate keys dibagian pojok kanan atas untuk melakukan konfigurasi DKIM


Jika muncul konfirmasi klik Confirm

Lalu akan muncul panduan record yang lebih lengkap seperti DKIM dan DMARC, lakukan langkah yang sama. tambahkan record secara manual atau download zonefile lalu import ke cloudflare
Instalasi dan konfigurasi Mailu sudah selesai, silakan lakukan test pengiriman internal antar internal domain dan ke ekternal domain seperti Gmail, Yahoo, Dll.
Troubleshoot
Mengatasi too many redirect pada saat login ke Webmail

Stop service
cd /mailu
docker compose down
Edit file /mailu/mailu.env
nano /mailu/mailu.env
Ubah baris
# Path to redirect / to
WEBROOT_REDIRECT=/webmail
Menjadi
# Path to redirect / to
WEBROOT_REDIRECT=/admin
Pengembangan Lebih Lanjut (Opsional)
Mencegah User Tertentu Mengirim Email
Pembatasan pengiriman email bagi sebagian pengguna diterapkan sebagai langkah preventif untuk meningkatkan keamanan sistem. Hal ini dilakukan karena tidak semua anggota atau karyawan memiliki pemahaman yang memadai tentang keamanan siber, khususnya terkait ancaman seperti phishing dan penyalahgunaan akun. Tanpa pembatasan, akun yang tidak diawasi dengan baik dapat dimanfaatkan untuk mengirim spam atau menjadi sumber serangan siber, yang dapat merusak reputasi domain dan membahayakan infrastruktur email perusahaan. Oleh karena itu, akun tertentu hanya diizinkan menerima email, bukan mengirim.
Secara default postfix memperbolehkan semua user bisa mengirim email.
Opsi 1: List user di definisikan berdasarkan list non regex (lmdb)
Buat file override postfix.cf
nano /mailu/overrides/postfix/postfix.cf
Masukkan baris berikut
smtpd_sender_restrictions = check_sender_access lmdb:/overrides/sender_access
Buat file sender_access
nano /mailu/overrides/postfix/sender_access
Masukkan list user yang akan dilakukan pembatasan pengiriman email dengan format seperti berikut
[email protected] REJECT
[email protected] REJECT
Terakahir restart, Lakukan docker-compose down & up
cd /mailu
docker compose down && docker compose -p mailu up -d
Opsi 2: List user di definisikan berdasarkan list regex
Buat file override postfix.cf
nano /mailu/overrides/postfix/postfix.cf
Masukkan baris berikut
smtpd_sender_restrictions = check_sender_access regexp:/overrides/sender_access.regex
Buat file sender_access.regex
nano /mailu/overrides/postfix/sender_access.regex
Masukkan list user yang ingin di izinkan dan di tolak dengan format regex.
Contoh dibawah ini saya ingin mengizinkan [email protected]
mengirim email, dan user lainnya dengan @domain.com
tidak saya izinkan mengirim email
/^usersuper@domain\.com$/ OK
/@domain\.com$/ REJECT
Urutan eksekusi list user dimulai dari atas, jika ada rule yang lebih spesifik tempatkan di awal baris
Sumber & referensi:
https://mailu.io
https://youtu.be/ScarlmgD0dU?si=cqBGw1ugkAzj1WM3