Instalasi MailGateway pada Debian Sarge

Kamas Muhammad <kamas@lc.vlsm.org>


Tidak ada copyright apapun dalam dukumen ini, anda bebas menyalin, mencetak, maupun memodifikasi (dengan menyertakan nama penulis asli). Saran, koreksi, kritik, kesalahan ketik, maupun ucapan silakan dikirimkan ke email tersebut diatas. Terima Kasih.

Pendahuluan

Panduan ini ditujukan sebagai tutorial kecil-kecilan pembuatan email gateway + antivirus dengan memanfaatkan paket-paket yang tersedia pada Debian Sarge. Dokumen ini (mencoba) menjelaskan cara instalasi postfix, amavisd-new, spamassassin, dan clamav-daemon dan beberapa konfigurasi yang diperlukan.

Beberapa asumsi yang digunakan pada tutorial ini:

  1. Mailgateway yang akan dibuat mempunyai IP 10.11.12.5 dengan domain mgw.mailumum.com.
  2. Mailserver yang sesungguhnya adalah mail1.mailumum.com dengan IP 10.11.12.6 dan mail2.mailumum.com dengan IP 10.11.12.7. Kedua mailserver ini menggunakan qmail sebagai MTAnya.

1. Instalasi Postfix

Debian Sarge menyediakan paket postfix, satu di antara beberapa paket MTA yang disediakan. Default MTA yang digunakan oleh debian adalah exim4. Postfix digunakan atas dasar kemudahan instalasi dan konfigurasi, serta interoperabilitas dengan amavisd-new yang didesain untuk berjalan dengan sangat baik dengan postfix.

Instalasi postfix cukup mudah, cukup dengan menjalankan perintah di bawah ini.

root:~# apt-get install postfix

Pada proses instalasi anda akan ditanya beberapa pertanyaan sebagai konfigurasi awal postfix. Saat anda ditanya mengenai General Type Of Configuration pilihlah Internet Site. Setting ini digunakan untuk mailserver yang menerima dan mengirim email langsung ke internet tanpa perantara. Kemudian anda akan ditanya mengenai email administrator. Saat terjadi kesalahan dalam jalannya beberapa daemon di server maka email pemberitahuan akan dikirim ke email yang anda sebutkan di sini. Bila diisi "NONE" maka email notifikasi tidak akan dikirimkan ke siapa pun.

Setelah itu anda harus memasukkan informasi nama mailgateway ini. Nama yang digunakan haruslah Fully Qualified Domain Name(FQDN). Nama ini digunakan sebagai pengenal email yang dikirim oleh server ini. Kemudian anda ditawari penambahan domain untuk pengiriman email ke tujuan yang non-FQDN. Pilihlah "No" pada pilihan ini. Selanjutnya masukkan domain-domain yang ditangani secara lokal oleh postfix. Bila anda hanya memfungsikan mailserver ini sebagai mailgateway maka isikan "mgw.mailumum.com, localhost". Bila memang ada domain lain yang ditangani secara lokal masukkan pula pada isian ini. Pilihan terakhir adalah Force synchronous updates pada mail queue. Pilihlah "No", karena pengaktifan pilihan ini sangat membebani kerja mailserver di kemudian hari saat telah menangani email dalam jumlah besar.

Bila anda tidak menemui pesan error berarti postfix sudah siap digunakan. Sekarang kita akan mencoba untuk mengirimkan email ke root@localhost.

root:~# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 mgw.mailumum.com ESMTP Postfix (Debian/GNU)
MAIL FROM: coba@localhost
250 Ok
RCPT TO: root@localhost
250 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
From: coba@localhost
To: root@localhost
Subject: coba email

percobaan pengiriman email pertama
.
250 Ok: queued as 542D610F96
QUIT
221 Bye

Bila anda melihat log pengiriman email maka anda akan menemui record yang secara garis besar tampak seperti record di bawah ini.

root:~# tail /var/log/mail.log Oct 18 20:08:44 mgw postfix/postfix-script: starting the Postfix mail system
Oct 18 20:08:44 mgw postfix/master[2847]: daemon started -- version 2.1.4
Oct 18 20:08:51 mgw postfix/smtpd[2853]: connect from localhost.localdomain[127.0.0.1]
Oct 18 20:09:01 mgw postfix/smtpd[2853]: 542D610F96: client=localhost.localdomain[127.0.0.1]
Oct 18 20:09:25 mgw postfix/cleanup[2856]: 542D610F96: message-id=<20041019030857.542D610F96@mgw.mailumum.com>
Oct 18 20:09:25 mgw postfix/qmgr[2851]: 542D610F96: from=<coba@localhost>, size=400, nrcpt=1 (queue active)
Oct 18 20:09:25 mgw postfix/local[2857]: 542D610F96: to=<sokam@mgw.mailumum.com>, orig_to=<root@localhost>, relay=local, delay=28, status=sent (delivered to mailbox)
Oct 18 20:09:25 mgw postfix/qmgr[2851]: 542D610F96: removed
Oct 18 20:09:27 mgw postfix/smtpd[2853]: disconnect from localhost.localdomain[127.0.0.1]

2. Instalasi ClamAV

ClamAV adalah virus scanner opensource yang database virusnya secara rutin dikembangkan oleh komunitasnya di seluruh dunia. ClamAV lebih ditujukan untuk digunakan sebagai antivirus mailserver meski tidak menutup kemungkinan untuk digunakan di luar mailserver.

ClamAV mempunyai dua macam interface yaitu command line, dan daemon. Di sini kita akan menggunakan versi daemon sebagai antivirus utama dan versi command line sebagai backup. Versi Daemon dipilih karena dapat bekomunikasi dengan amavis melalui socket sehingga mempertinggi efisiensi sistem. Bila ada gangguan pada jalannya daemon tersebut, maka clamscanlah yang akan menggantikan posisinya sampai daemon clamav dapat berjalan kembali.

ClamAV juga mempunyai daemon lain yang disebut clamav-freshclam. Daemon ini bertugas untuk memperbarui database virus. Daemon ini akan memeriksa dbserver setiap 6 jam sekali, dan bila ada data baru maka data itu akan didownload.

Instalasi ketiganya dapat dilakukan sekaligus dalam satu perintah.

root:~# apt-get install clamav clamav-daemon clamav-freshclam

Konfigurasi yang perlu dilakukan saat ini adalah mengatur bagaimana dan dari mana database virus akan diambil. Metode yang dapat digunakan adalah dengan menggunakan daemon, cron, ifup, atau manual. Dari beberapa cara ini disarankan untuk menggunakan daemon, karena kemudahan operasinya. Di indonesia sudah ada mirror databasenya yaitu di db.id.clamav.net. Selain pemilihan host anda juga harus memasukkan http proxy untuk melakukan koneksi ke luar. Bila proxy tidak diperlukan anda dapat membiarkan pilihan ini kosong.

Setelah instalasi selesai anda dapat mengontrol [start|stop|restart] dengan cara:

root:~# /etc/init.d/clamav-daemon start
root:~# /etc/init.d/clamav-daemon stop
root:~# /etc/init.d/clamav-daemon restart

3. Instalasi Amavisd-New

Amavisd-New adalah content filter yang ditulis menggunakan perl (Net::Server) dan berjalan secara daemonized sehingga memungkinkan penanganan lalu lintas email besar tanpa harus banyak memakan resource komputer yang tersedia. Selain itu, amavisd-new dapat menerima email yang akan diperiksa melalui SMTP sehingga dapat dipadukan dengan mudah dengan hampir semua MTA yang ada.

Dalam memeriksa email, amavisd-new menyimpan hash tiap email yang masuk. Bila hash email yang masuk belum tersimpan maka amavis akan memeriksa email tersebut secara utuh. Bila hashnya sudah ditemukan maka email tersebut tidak diperiksa secara utuh, melainkan keputusannya sesuai dengan hash yang sudah ada. Bila sebelumnya email dengan jenis hash itu didrop, maka email baru ini akan didrop, dan sebaliknya.

Amavisd-New memerlukan beberapa modul perl yaitu:

  1. Archive::Tar
  2. Archive::Zip
  3. Compress::Zlib
  4. Convert::TNEF
  5. Convert::UUlib
  6. MIME::Base64
  7. MIME::Parser
  8. Mail::Internet
  9. Net::Server
  10. Net::SMTP
  11. Digest::MD5
  12. IO::Stringy
  13. Time::HiRes
  14. Unix::Syslog

Pada instalasinya, apt debian akan ikut menginstall apa yang diperlukan bila memang modul-modul itu belum ada pada komputer.

Selain itu, amavisd-new juga menggunakan beberapa program di bawah ini untuk mendecompose email terkompres. Program ini digunakan hanya bila memang ditemukan dalam system (sifatnya optional).

  1. zip/unzip
  2. gzip
  3. bzip2
  4. nomarch
  5. lha
  6. arj/unarj
  7. rar/unrar
  8. zoo
  9. cpio
  10. lzop
  11. freeze/unfreeze

Sekarang kita akan menginstall amavisd-new beserta beberapa paket penunjang yang bersifat optional.

root:~# apt-get install amavisd-new bzip2 unzip spamassassin

4. Konfigurasi

Pada bagian ini sudah tidak ada lagi yang akan kita install. Sekarang kita tinggal mengkonfigurasi ketiga komponen di atas agar mail gateway kita berjalan dengan lancar. Sebelum memulai konfigurasi sangat dianjurkan untuk membuat kopi/teh dan menyiapkan camilan untuk menemani anda bermain-main dengan konfigurasi ini. :)

Konfigurasi ini dijalankan dengan urutan clamav, amavisd-new, dan terakhir postfix. Hal ini dilakukan karena clamav berada pada bagian paling bawah sistem, yang kemudian akan digunakan oleh amavis dan pada akhirnya sampai ke postfix.

4.1. ClamAV

Konfigurasi clamav hanya sedikit, yaitu mengganti user yang menjalankan daemon agar sama dengan user yang menjalankan amavisd-new. Hal ini diperlukan karena keduanya akan berkomunikasi melalui socket yang dibuat oleh clamav. Socket yang digunakan adalah /var/run/clamav/clamd.ctl.

Bukalah file /etc/clamav/clamav.conf dan ubahlah "User clamav" menjadi " User amavis". Setelah itu hentikan clamav-daemon, dan ubah kepemilikan direktori /var/run/clamav dan semua isinya agar dimiliki oleh user amavis. Setelah itu jalankan amavis dan periksa apakah socket itu sudah dimiliki oleh amavis.

root:~# /etc/init.d/clamav-daemon stop
root:~# chown -R amavis /var/run/clamav
root:~# /etc/init.d/clamav-daemon start
root:~# lsof | grep clamd.ctl
clamd 3941 amavis 0u unix 0xc733d7a0 31940 /var/run/clamav/clamd.ctl

Kolom ketiga yang dicetak tebal di atas menunjukkan bahwa socket itu sudah dimiliki oleh amavis. Bila hasil yang anda dapatkan berbeda, coba lagi untuk mengulangi langkah di atas sampai berhasil. Sebenarnya user yang digunakan tidak harus amavis, yang penting kedua program itu dijalankan oleh user yang sama. Bila anda memilih agar amavsd-new yang dijalankan oleh user clamav, maka anda harus mengatur agar segala file yang dijalankan oleh amavisd-new ada dalam kekuasaan user clamav (ini sih lebih ruwet he..he..he..).

4.2. Amavisd-New

Konfigurasi paling banyak terdapat di bagian ini. Amavis adalah program yang paling menentukan bagaimana perilaku mailgateway yang kita buat. File konfigurasi amavisd-new ada pada file /etc/amavis/amavisd.conf. Setiap baris konfigurasi amavisd-new dikomentari secara detil sehingga anda dapat lebih flexibel dalam mengubah setting yang ada di sana. Di sini kita akan mengkonfigurasi beberapa konfigurasi yang penting dan mendasar supaya mailgateway kita dapat bekerja dengan baik.

$mydomain = 'example.com';
Gantilah example.com di atas ke domain anda. Pada contoh ini kita menggunakan domain mgw.mailumum.com sehingga setting di atas menjadi $mydomain = 'mgw.mailumum.com';

$forward_method = 'smtp:127.0.0.1:10025';
$notify_method = $forward_method;
Pada awalnya kedua konfigurasi di atas masih tertutup (diawali karakter #). Yang perlu anda lakukan hanyalah menghapus karakter '#' yang terletak pada awal baris. Kedua baris di atas menyatakan bahwa email yang telah diperiksa oleh amavis akan dikembalikan ke MTA dengan alamat 127.0.0.1(localhost) port 10025. Bila tidak sesuai anda dapat mengubah isinya.

$inet_socket_port = 10024;
Line di atas menyatakan bahwa amavis menerima email melalui TCP port 10024. Anda dapat mengubah port ini ke port berapa pun asal port itu belum dipakai oleh aplikasi yang lain dan port itu lebih besar dari 1024.

@bypass_spam_checks_acl = qw( . );
Baris ini pada awalnya aktif(tidak ditutup). Dengan aktifnya pilihan ini maka amavisd-new tidak akan menggunakan spamassassin untuk memeriksa email yang masuk. Bila anda ingin mengaktifkan pemeriksaan email spam maka tutuplah konfigurasi ini dengan memberikan tanda '#' di awal baris.

$virus_admin = "postmaster\@$mydomain";
$spam_admin = "postmaster\@$mydomain";
Kedua baris di atas menentukan ke email mana laporan temuan virus dan spam dikirimkan. Gantilah dengan email yang anda gunakan, atau matikan pilihan ini bila anda tidak menginginkan laporan. Ingatlah bahwa bila mailgateway ini akan menscan banyak email bervirus maka laporan yang masuk pada mailbox anda bisa jadi tidak sedikit. :)

Konfigurasi yang lain dapat anda ikuti dari penjelasan pada file konfigurasi. Konfigurasi ini sudah cukup untuk jalannya mailgateway anda dengan tingkat keamanan moderate.

4.3. Postfix

Konfigurasi postfix terpecah menjadi dua file utama yaitu master.cf, dan main.cf. Kedua file tersebut dapat ditemukan pada /etc/postfix. Untuk mengaktifkan jalur komunikasi antara amavis dan postfix tambahkan konfigurasi di bawah ini ke file master.cf.

smtp-amavis unix -      -     n   -     2  smtp
    -o smtp_data_done_timeout=1200
    -o smtp_send_xforward_command=yes
    -o disable_dns_lookups=yes

127.0.0.1:10025 inet n  -     n   -     -  smtpd
    -o content_filter=
    -o local_recipient_maps=
    -o relay_recipient_maps=
    -o smtpd_restriction_classes=
    -o smtpd_client_restrictions=
    -o smtpd_helo_restrictions=
    -o smtpd_sender_restrictions=
    -o smtpd_recipient_restrictions=permit_mynetworks,reject
    -o mynetworks=127.0.0.1
    -o strict_rfc821_envelopes=no
    -o smtpd_error_sleep_time=0
    -o smtpd_soft_error_limit=1001
    -o smtpd_hard_error_limit=1000

Kemudian tambahkan baris ini ke file main.cf agar semua email yang diterima oleh postfix dikirim ke amavis untuk diperiksa sebelum dikirimkan ke penerimanya.

content_filter = smtp-amavis:[127.0.0.1]:10024

Sampai di sini kita telah mengkonfigurasikan mailgateway kita. Yang kemudian harus dijalankan adalah mengarahkan email yang akan masuk ke mail1.mailumum.com dan mail2.mailumum.com ke mgw.mailumum.com dengan cara mengubah MX record pada domain. Contoh entri record domain yang dapat dilakukan dapat berbentuk seperti di bawah ini.

mgw.mailumum.com. IN A 10.11.12.5
mail1.mailumum.com. IN MX 1 mgw.mailumum.com.
mail2.mailumum.com. IN MX 1 mgw.mailumum.com.

Selanjutnya kita mengkonfigurasikan postfix kita untuk merelay email-email tersebut dengan menambahkan 2 file konfigurasi yaitu relaydomains dan transport.

File relaydomains berisi domain-domain yang kita izinkan untuk melewati gateway ini.

mail1.mailumum.com OK
mail2.mailumum.com OK

File transport berisi domain dan alamat IP mailserver yang menangani email untuk domain yang kita sebutkan.

mail1.mailumum.com:smtp[10.11.12.6]
mail2.mailumum.com:smtp[10.11.12.7]

Setelah kedua file itu terbentuk kita tinggal membuat file hashdb dengan mengunakan perintah postmap.

root:~# cd /etc/postfix
root:~# postmap transport
root:~# postmap relaydomains

Tambahkan kedua baris konfigurasi di bawah ini pada file main.cf.

relay_domains = hash:/etc/postfix/relaydomains
transport_maps = hash:/etc/postfix/transport

Restart amavisd-new dan postfix. MailGateway ini telah siap digunakan. Silakan mencoba mengirimkan virus ke salah satu email misal user@mail2.mailumum.com dan lihat hasilnya. Bila masih ada virus yang bisa masuk silakan membaca tutorial singkat ini lagi siapa tau ada bagian-bagian yang terlewati.

Saat ini mail gateway ini dapat memeriksa email yang berasal dari luar DMZ kita. Akan jauh lebih baik lagi apabila mail gateway ini juga memeriksa virus yang keluar dari DMZ kita. Untuk itu pastikan bahwa mail gateway ini mengizinkan kedua mailserver kita untuk merelay melalui gateway ini dengan menambahkan baris di bawah ini pada /etc/postfix/main.cf.

mynetworks = 127.0.0.0/8, 10.11.12.0/24

Jangan lupa untuk meroute email dari kedua mailserver agar merelaykan email yang dikirim ke mailgateway ini sebelum email keluar ke internet dengan menambahkan entri berikut pada /var/qmail/control/smtproutes.

:mgw.mailumum.com

Selamat menikmati duet postfix & qmail.

5. Referensi & Thanks

  1. http://www.postfix.org
  2. http://www.postfix.or.id
  3. http://www.ijs.si/software/amavisd
  4. http://www.clamav.net
  5. http://person.olami.net.id/~duken/tutorial/postfix-qmail.html
  6. Asfihani
  7. Milis tanya-jawab@linux.or.id
  8. Kawan-kawan di ITSnet
  9. Kawan-kawan di AJK