SoGo adalah sebuah opensource webmail client yang cukup punya nama dalam dunia per-emailan.
Kebetulan kami berkesempatan untuk mengimplementasikannya di sebuah organisasi yang cukup besar. Memiliki user sekitar 30.000 dan memubutuhkan fitur high available menjadikan kami memilih SoGo sebagai webmail client pilihan.
Berikut ini topologi yang berhasil kami implementasikan
xxxxxxxxxxxxxxxxx xx xxxxxxx xxxx xxx xx x xx Internet x x x x xx xxxx xx xxxxxxxxxxxxxxxxxxxxxxxxx | | | v HTTP +---------------------+ HTTP +--------+ Reverse Proxy +------------+ | +---------------------+ | | | | | | | | | +--------v--------+ +--------v--------+ | | | | | Web Mail 01 | | Web Mail 02 | | | | | +----+--+--+-+----+ +-+-----+---+--+--+ | | | | | | | | | | | | | | | | | | | | +----------+ | | | | | | | +---------->| NFS |<--------+ | | | | | | | Share | | | | | | | +----------+ | | | | | | | | | | | | +----------+ | | | | | +------------>| Database |<--------------+ | | | | +----------+ | | | | | | | | +------+ | | | +----------------->| LDAP |<--------------------+ | | +------+ | | | | +-----------+ | | | | | +------------------>| Cache |<--------------------+ | | +-----------+
Kalau kita perhatikan terdapat setidaknya 6 macam service yang terlibat dalam implemtasi ini, antara lain:
- Reverse Proxy, kali ini kami tetap memilih Nginx sebagai reverse proxy nya.
- Webmail kami menggunakan SoGo.
- Database kami menggunakan MySQL.
- LDAP jatuh kepada OpenLDAP.
- Cache menggunakan Memcached.
- NFS Share menggunakan NFS daemon yang disediakan oleh GNU/Linux
Reverse Proxy digunakan untuk membagi trafick ke webmail server. Database, LDAP dan Cache digunakan oleh webmail untuk menyimpan informasi mengenai User. Sedangkan NFS Share digunakan untuk menyimpan sementara email Draft atau file-file besar ketika webmail berurusan dengan attachmentnya.
Kali ini kami ingin mengingatkan pada diri kami sendiri dan kepada rekan-rekan umumnya untuk men-setting SoGo agar menggunakan NFS Share sebagai tempat meletakan email draft. Karena apabila tidak diletakan di satu tempat yang dapat diakses dua webmailserver akan muncul sebuah kejadian yang tidak diinginkan.
Kejadian ini akan mulai muncul apabila Reverse proxy yang bertidak sekaligus sebagi load balancer mengarahkan user ke dua webmail server berbeda dalam waktu yang berdekatan.
User yang sedang membuat email draft telah selesai menulis email yang panjang, ketika mereka menekan tombol "Send", terjadi dua kejadian
- Webmail akan mengirimkan email tersebut ke smtp server yang sebelum nya sudah disetting
- Webmail akan memerintahkan memindahkan email tersebut dari folder draft ke folder sent via IMAP.
Nah apabila kejadian ke dua (memindahkan email dari draft ke sent) terjadi di webmail server lain, webmail server yang kedua ini tidak akan memiliki file email draft yang sebelum nya dibuat. Karena file tersebut hanya terdapat di webmail server pertama dan tidak ter sync ke yang kedua.
Untuk itu kita perlu memberitahu Webmail untuk mengarahkan semua file draft nya ke satu tempat yaitu NFS Share yang kita telah buat sebelumnya.
Coba perhatikan edit file /etc/sogo/sogo.conf
tambahkan dua baris berikut ini
SOGoMailSpoolPath = "/mnt/sogo/spool/"
NGMimeBuildMimeTempDirectory = "/mnt/sogo/mimetmp/"
Sebagai catatan bahwa kita sudah melakukan mount directory /mnt/sogo dari NFS share yang sebelumnya sudah disiapkan.
Selamat mencoba dan semoga tidak error :)