Tag Archives: Postfix

Build a complete mailserver using Postfix virtual mailboxes

Membuat mailserver dari skala besar dan kecil ada banyak softwarenya dari yang kelas komersil(Microsoft ExchangeLotus Domino, Merak, dsb) sampai kelas opensources(Sendmail, Qmail, Postfix, Zimbra). Cara instalasi dan konfigurasi juga di manja oleh developer software tersebut yang hanya memberikan sebuah file binary installer, tanpa pusing otak-atik konfigurasi didalamnya saat instalasi berlangsung, seperti Merak, Zimbra, Exchange. Berbeda dengan software menggunakan qmail dan postfix yang harus memiliki third party(tambahan) software pendukung lainnya dan mencocokkannya menjadi sebuah solusi complete sebuah
mailserver tangguh.

Kali ini saya mencoba mensetup sebuah mailserver yang ribet dan banyak teman-teman pendukungnya untuk membuat sebuah mailserver tangguh. Mailserver ini terdiri dari sistem operasi Debian Lenny, Postfix  dengan Virtual mailbox domains dengan PostfixAdmin, MySQL, Dovecot IMAP/POP3, Amavisd-new, SquirrelMail dan MailZu. Ditambah sistem quota, maildirmake, Mailgraph, Pyzor, OpenProtect SARE rules, Razor, Postgrey, SaneSecurity dan MSRBL ClamAV signatures, Botnet SA plugin, Passive OS Fingerprinting(p0f), SpamAssassin
Body Rules, Altermime, dan terakhir firewall.

Fungsinya : Postfix virtual mailbox domains (informasi user dan domain disimpan di MySQL), PostfixAdmin(webbased) untuk memaintain database of administrators, domains, aliases, users, maildirs dll, MailZu dimana user dapat maintain quarantined  messages, Dovecot IMAP dan POP3 servers User passwords disimpan di MySQL, Dovecot’s deliver sebagai local delivery agent, maildirmake untuk membuat maildirs dengan informasi quota, Pembagian setiap domain dengan maildir yang berbeda, cth: /var/vmail/contoh.com/user/, Amavisd-new (dengan SpamAssassin) bisa diseting per user melalui MySQL, SquirrelMail  sebagai webmail client. Users dapat memodifikasi level sensitif terhadap spam dan pengaturan white/black lists, Spam langsung di lempar ke user’s Spam folder atau masuk quarantine, Email virus scanning menggunakan ClamAV, dan tambahan Mailgraph, OpenProtect SARE rules, Postgrey, SaneSecurity dan MSRBL ClamAV signatures, Botnet SA plugin, p0f, SpamAssassin Body Rules, Altermime. Wah too much pendahuluan, langsung dimulai saja. Berikut proses instalasi dan konfigurasi yang saya dokumentasikan pada sebuah mailserver dengan nama domain .com dan IP Publik terkoneksi dengan internet dedicated.

Instalasi dan Konfigurasi.

Instalasi Apache,Postfix FROM specific IPs,Bind,MySQL,Dovecot,DKIM,ISPConfig

Instalasi Apache, Postfix FROM specific IPs, Bind, Proftpd, MySQL, Dovecot, Quota, DKIM, Mailgraph, pflogsumm,ISPConfig.

Instalasi dan konfigurasi ini dilakukan pada salah satu server Qotexxx yang berada di Data Centre CalPOP Los Angeles. Pekerjaan dilakukan secara remote menggunakan putty ke server yang dalam kondisi awal sebagai berikut :

Hardware server Intel(R) Core(TM)2 CPU(dual core) 6300 @ 1.86GHz 32-bit, Memory 2 GB, Sistem Operasi CentOS 5.x  32-bit, berisi standart system instalasi dengan kernel 2.6.18-53.el5 dan  ssh yang sudah terinstall baik. Ditambah 1 Allocated IP yang sudah up 216.240.142.1xx, dan daftar Addittional IP’s – 216.240.142.1xx-1xx yang belum dikonfigurasi. Guna addittional IP’s ini nanti untuk alokasi multi domain per IP, khususnya untuk pemakaian SMTP yang dalam hal ini menggunakan Postfix.

216.240.142.1xx- qotexxx.info
216.240.142.1ss- qoteonlxxx.info
216.240.142.1yy- qoteyyy.info
216.240.142.1zz- qotesxxx.info
216.240.142.1aa- qotesyy.info
216.240.142.1bb- qotestxxx.info

Kondisi basic installan sistem operasi dari data centre perlu di rapihkan dahulu, biasanya dapat instalasi yang kurang bersih dari pihak datacentre terhadap server tersebut. Setelah login mengunakan root, create new user baru dan disable login root melalui sshd_config dan kembali login menggunakan user biasa. Kemudian perhatikan service yang up dan matikan service yang tidak perlu seperti cupsd, sendmail,dsb. Setelah beres upgrade sistem operasi CentOS dengan yum update.

Setelah kondisi rapih, reboot servernya untuk memastikan tidak ada masalah. Jika tidak up kordinasi dengan technical support CalPOP yang 24 jam.

Berikut proses instalasi dan konfigurasi yang berhasil saya dokumentasikan dari putty saya.

Dokumentasi Instalasi dan Konfigurasi.

How to email FROM specific IPs, using Postfix

Clientku di India baru saja menambah 4 (internet protocol) IP address baru pada server colocationnya di Ohio USA. Kemudian dia memintaku untuk setup ke empat IP tersebut ke dalam server colo nya dan setup outgoing mail pada setiap IP untuk setiap domainnya. Secara dia mempunyai 5 domain dan 1 domain sudah running pada IP utama (eth0) di server sebelumnya.

Untuk memasukkan ke 4 IP lainnya ke dalam servernya sangat mudah dilakukan dengan settingan IP Alias di linux pada eth0, sehingga terdapat eth0:0, eth0:1, eth0:2, eth0:3.

Untuk mensetting outgoing mail pada masing-masing IP sesuai alamat domainnya atau istilah kerennya “Other Postfix instance” sedikit memusingkan. Akhirnya kembali ke laptop ehhhh…. postfix.org dengan membaca kembali Postfix main.cf file format.  Setelah berpusing ria memainkan alur logika dan otak atik eksperiment aku menemukan beberapa langkah untuk mensetup permintaan orang India ini.

Konfigurasi utama di postfix yang sudah jalan pada server ini ada pada /etc/postfix dan /var/spool/postfix.  Dengan IP 209.51.x.100 dan domain namadomain100.net.in

Isi didalam konfigurasi /etc/postfix/main.cf yang perlu dicermati agar bisa kita gunakan dalam kasus ini adalah : queue_directory, myhostname, smtp_bind_address, inet_interfaces, alternate_config_directories.  Untuk direktory adalah /etc/postfix, /var/spool/postfix, /etc/init.d/postfix

Berikut langkah untuk membuat semuanya menjadi nyata didalam dunia maya dengan contoh setup pada salah satu IP tambahan yaitu IP 209.51.x.200 dengan namadomain200.net.in :

1. Kita buat copy direktory dan file pada konfigurasi utama postfix yang sudah berjalan dengan perintah cp -rp /etc/postfix /etc/postfix200

2. Edit /etc/postfix/main.cf dan tambahkan :
alternate_config_directories = /etc/postfix200
smtp_bind_address = 209.51.x.100
inet_interfaces = 209.51.x.100
myhostname = mail.namadomain.net.in

3. Pada Postfix instance kita harus membuat direktori /var/spool sendiri dan tidak share dengan /var/spool utama dengan perintah mkdir /var/spool/postfix200

4. Kita edit /etc/postfix200/main.cf untuk memasukkan tambahan IP dengan hosname ke domain lain.
queue_directory = /var/spool/postfix200
smtp_bind_address = 209.51.x.200
inet_interfaces = 209.51.x.200
myhostname = mail.namadomain200.net.in

5. Jalankan postfix -c /etc/postfix200 check

6. Untuk running Postfix instance kita haru buat scripts baru agar tidak bentrok dengan yang utama,
cp /etc/init.d/postfix /etc/init.d/postfix200

7. Edit /etc/init.d/postfix200
Ganti semua path yang ke /etc/postfix menjadi /etc/postfix200, termasuk untuk /var/spool/,  /var/lock/subsys/, jadi mengikuti path postfix200.

8. Jalankan postfix200 : postfix -c /etc/postfix200 start

9. Cek pake netstat -nltup :

tcp  0  0 209.51.xxx.100:25  0.0.0.0 *LISTEN  13733/master

tcp 0  0 209.51.xxx.200:25  0.0.0.0  * LISTEN 13957/master

jika services master muncul dengan binding ke IP 209.51.xxx.100 dan 209.51.xxx.200 dengan port 25 sudah sukses nih memasukkan IP lain untuk outgoing mail.

10. Cek pakai mail client dan masukkan settingan pada outgoing mail : mail.namadomain200.net.in lalu kirim email ke gmail. Jika sukses cek email tersebut di webmail gmail dan klik messages header dengan mengklik Show original : Hasilnya sbb :

Delivered-To: henry.gultom@gmail.com
Received: by 10.150.92.11 with SMTP id p11cs198399ybb;
        Thu, 31 Jul 2008 10:25:16 -0700 (PDT)
Received: by 10.114.25.19 with SMTP id 19mr10440208way.225.1217525114616;
        Thu, 31 Jul 2008 10:25:14 -0700 (PDT)
Return-Path: <kumar@namadomain200.net.in>
Received:from mail.namadomain200.net.in (x.xxx.xlhost.com [209.51.xxx.200])
        by mx.google.com with ESMTP id 4si50043yxq.8.2008.07.31.10.25.14;
        Thu, 31 Jul 2008 10:25:14 -0700 (PDT)

Baris yang dibold menunjukkan instalasi beda IP untuk outgoing mail smtp berhasil, email FROM specific IPs pada postfix sudah jalan.

Sekarang bagaimana dengan 3 IP dan 3 domain lainnya?

Tinggal ulangi langkah 1,3,4,5,6,7,8,9,10 diatas dan untuk langkah ke 2 hanya menambahkan path alternate_config_directories ke path lainnya seperti : alternate_config_directories = /etc/postfix300 dst. Ini dilakukan pada file /etc/postfix/main.cf

Dalam artikel ini nama domain dan IP disamarkan.

Contact me :
henry@gultom.or.id

migrasi mailserver

Seminggu lalu aku baru menyelesaikan pemindahan mailserver lama ke mailserver baru. Pergantian hardware fisik mailserver ini dilakukan karena pada server lama sudah menunjukkan gejala yang menakutkan seperti harddisk failure. Di sisi lain alasan pergantian hardware mailserver adalah saat saya cek menggunakan vmstat, status “pi” dan “po” diatas 0, sehingga memerlukan tambahan RAM.

Mailserver ini berfungsi sebagai POP3, SMTP, Webmail. Di kantor memakai 2 server mailserver. Server satu lagi khusus untuk SMTP dan backup MX(Mail exchanger). Jadi migrasi mailserver ini dilakukan pada server MX 1. Biasannya sysadmin mempunyai beberapa cara dalam melakukan proses migrasi, diantaranya dengan sistem cloning dan sistem install konfigurasi ulang dari awal. Cara cloning paling gampang tapi beresiko, aku memilih cara install konfigurasi dari awal semua komponen software mailserver. Walau banyak proses dijalanin, tapi bisa lebih memahami satu persatu proses dan konfigurasi apa yang dilakukan untuk pengoptimalan dan pemakaian versi terbaru dari setiap software yang terinstall.

Perbedaan dalam konfigurasi mailserver baru ini adalah jika sebelumnya pada mailserver lama memakai konfigurasi Postfix, Amavisd-new, Spamassassin, Clamav, maka aku menghilangkan ketiganya dan menerapkan kombinasi konfigurasi Postfix, Postgrey+Geylising, RBL. Dari pengamatan cara terbaru ini lebih powerfull dalam menangkal spam dan good performance, dibanding memakai kombinasi Amavisd-new, Spamassassin,Clamav.

Migrasi ini harus hati-hati dan teliti karena didalamnya juga ada mail hosting banyak client kantor. Jadi diharapkan tidak satupun email yang hilang atau password yang berubah.  Secara garis besar langkah yang dilakukan dalam migrasi mailserver ini :

-Mailserver lama tetap up menjelang diistirahatkan.
-Install sistem operasi mailserver baru menggunakan sistem operasi linux dengan distro kesayangan saya yaitu mbah Debian yang saat ini sudah versi 4.0 dengan kode nama Etch.
-Install dan konfigurasi software pendukung pada mailserver baru. Dalam hal ini  qmailpatch untuk pop3,  postfix dkk untuk smtp, daemontools, ucspi-tcp, vpopmail, courier, postgrey, vqadmin, mysql, apache, php,  sqwebmail, mailgraph, pflogsumm, fail2ban, dll.
– Menyesuaikan konfigurasi qmail(/etc/qmail dan /var/qmail) dan postfix (/etc/postfix)
– Memindahkan /home/vpopmail/domains dari mailserver lama ke /home/vpopmail/domains mailserver baru
– Memindahkan /var/lib/mysql/vpopmail dari mailserver lama ke /var/lib/mysql/vpopmail mailserver baru
– Mengganti ip mailserver baru menjadi ip mailserver lama, mailserver lama down, untuk selanjutnya mailserver baru Trial dan Live.
– Optimalkan firewal pada mailserver baru.
– Terapkan rsync untuk backup transfer data dari mailserver baru ke mailserver lama.
– Monitoring & Maintenance

Selengkapnya (Instalasi dan Migrasi)

delete queue mailer-daemon dengan mailq

Jika ingin mendelete semua Mailer-Daemon mails dari Postfix queue :

mail-server:/home/gtoms# mailq | perl -lne ‘m/^([A-Z0-9]+).*MAILER-DAEMON/ && `postsuper -d $1`;’
postsuper: 1E2D297203: removed
postsuper: Deleted: 1 message
postsuper: 8F42997200: removed
postsuper: Deleted: 1 message
postsuper: 8FF71971C8: removed
postsuper: Deleted: 1 message
postsuper: 902AE97210: removed
postsuper: Deleted: 1 message
postsuper: B1BC197201: removed
postsuper: Deleted: 1 message
postsuper: C2BC9971C7: removed
postsuper: Deleted: 1 message
postsuper: 427C497213: removed
postsuper: Deleted: 1 message
postsuper: 2FC2097215: removed
postsuper: Deleted: 1 message
postsuper: 648A097204: removed
postsuper: Deleted: 1 message
postsuper: 5BD799720F: removed
postsuper: Deleted: 1 message
postsuper: 74B5597202: removed
postsuper: Deleted: 1 message
postsuper: F07A597214: removed
postsuper: Deleted: 1 message
mail-server:/home/gtoms#
cek kembali postfix queue dengan mailq, pasti deh ndak ada queue mailer daemon, jadi ndak cape delete satu-satu pake perintah postsuper -d queue_id