Membuat Email Server Sendiri dengan Stalwart
Kali ini saya akan share bagaimana membuat email server sendiri dengan mudah tanpa banyak installasi manual. Persyaratan mandatory yang dibutuhkan
- VPS server atau home server dengan port inbound 25 tidak diblock
- Ram minimal 2GB
- OS Linux Ubuntu
- Domain name
Jika digambarkan seperti ini:

kita perlu membuat back-endnya emailnya terlebih dahulu. Di dalam backend ini terdapat fungsi untuk sent dan receive. Dalam back-end email server kita perlu membagi menjadi 2 bagian sebagai berikut:
- Email Server ke email server mail lain. Bagian ini adalah bagaimana server yang kita buat mengirim dan menerima email dari/ke server email lain.
- Email server ke client(User). Bagian ini adalah bagaimana email server yang kita buat mengirimkan email ke client dan bagaimana meneruskan email dari client ke server email yang dituju.
Konfigurasi dasar
Port incoming 25 harus tidak boleh diblock. ini adalah syarat mutlak untuk server email dapat menerima email dari server lain. Port 25 adalah standard port SMTP yang digunakan untuk mengirim dan menerima email. Jika port ini diblock, maka email server tidak bisa digunakan. Kamu harus pakai workaround yang nanti akan saya bahas di tulisan selanjutnya
- Tentukan domain name yang akan digunakan sebagai email host. domain ini harus terpisah dengan webmail (front-end) agar mudah managementnya
- Pointing domain tersebut dengan IP address email server
Installasi Stalwart
Saya menggunakan aplikasi stalwart sebagai backend email server. Di dalam stalwart terdapat banyak fitur baik basic (SMTP, IMAP) maupun fitur lanjutan seperti integrasi dengan protocol email baru yaitu JMAP, pemilihan storage yang tidak hanya dilokal storage tetapi juga di S3 storage, integrasi dengan LDAP, Oauth, dan fitur lain
Di Linux ada 2 cara untuk menjalankan Stalwart yaitu menggunakan docker atau installasi manual. Jika terbiasa dengan docker atau server saat ini semuanya menggunakan docker silahkan installasi dengan docker. untuk installasi secara native di ubuntu caranya cukup sederhana
$ curl --proto '=https' --tlsv1.2 -sSf https://get.stalw.art/install.sh -o install.sh
kemudian jalan installernya
$ sudo sh install.sh
secara default stalwart akan terinstall di folder /opt/ untuk merubah ke lokasi lain, ada bisa tambahkan lokasi foldernya di belakang install.sh seperti ini
$ sudo sh install.sh /path/to/install
Defaultnya web admin interface dari stalwart ada di port 8080, di log installasi akan muncul initial passwordnya. Kamu bisa login dengan password tersebut
Konfigurasi di stalwart
- Masuk ke menu setting – network. Masukin Domain di hostname
- Setting TLS cert di menu setting – TLS – ACME Provider – isikan ID dari providernya. Form lainnya bisa dibiarkan default
- Masuk ke menu administrator – Directory – Domain. Lalu masukan domain email yang akan menggunakan email server ini
- Kemudian masuk ke account. Tambahkan user dan email addressnya
Sampai langkah ini email server sudah bisa digunakan. Konfigurasi lanjutan bisa kamu baca di dokumentasi stalwart.
Konfigurasi port
Secara umum port yang perlu dibuka untuk email server dapat beroperasi adalah sebagai berikut
25/TCP : untuk menerima dan mengirim email ke email server
143/TCP : untuk IMAP port sebagai protocol di email client untuk retrieve email
993/TCP : sama seperti 143 namun dengan dukungan enkripsi SSL
587/TCP : SMTP port untuk mengirim email dari email client menggunakan TLS
465/TCP: sama seperti 587 tetapi menggunakan port 465

Port 25 adalah port kunci bagi email server untuk terhubung dengan email server lain. Email masuk dan keluar diproses dengan port ini
Email Client
- Saat Received: email klien menggunakan protocol IMAP untuk mendownload message yang diterima oleh server berdasarkan email addressnya. tentunya ada proses authentikasi di sini untuk memastikan hak akses yang sesuai. kita bisa gunakan plain tanpa SSL atau dengan SSL. Disarankan untuk selalu menggunakan SSL agar email yang ditransmisikan dalam jaringan terenkripsi
- Saat Mengirim: email klient menggunakan protocol SMTP yang sama dengan SMTP yang digunakan oleh server. Dari client menggunakan port 587 atau port 465 untuk pengiriman ke server. Jika menggunakan port 465 harus input username dan password agar enkripsi bisa berjalan. Server kemudian akan meneruskan ke email server tujuan dengan port 25.