setting qmail agar support ssl dan tls
Filed under: Open mail relay, Qmail, Spam Filtering, linux, security, vpopmail
Tujuan instalasi ini adalah agar pengguna dapat login ke mail server untuk mengirimkan email menggunakan email client non webmail. Di era personal computing yang saat ini makin personal, banyak pengguna yang ingin dapat menerima dan mengirimkan email langsung dari gadgetnya seperti blackberry, iphone, android, dll yang didalamnya terdapat aplikasi email client. Khusus pada smartphone android, seting outgoing email biasanya menggunakan ssl port 465 dan tls port 587, sehingga mail server harus menyiapkan port tersebut. Dan lebih baik kalau ssl dan tls tidak di port 25 agar tidak terkena filtering seperti rblsmtpd.
Bagi mail server yang proses instalasinya dahulu mengacu ke qmailrocks, harus mengkompilasi ulang qmail dengan menggunakan patch dari john simpson dengan proses sebagai berikut :
$ cd /home/gregor
$ wget http://cr.yp.to/software/qmail-1.03.tar.gz
$ wget http://qmail.jms1.net/patches/qmail-1.03-jms1.7.08.patch
$ tar xvzf qmail-1.03.tar.gz
$ cd qmail-1.03
$ patch < ../qmail-1.03-jms1.7.08.patch
$ make
$ qmailctl stop
$ make setup check
jika muncul pesan error seperti ini :
install: fatal: unable to write …/bin/qmail-lspawn: text busy
itu artinya qmail-send masih aktif. berikan perintah :
$ ps ax | grep qmail-send
lalu kill -9 pid nya. jika tidak ada pesan error berarti instalasi qmail berjalan lancar.
$ cd /service/qmail-smtpd/
$ cp run bak_run
$ wget http://qmail.jms1.net/scripts/service-qmail-smtpd-run
$ vi service-qmail-smtpd-run
lakukan penyesuaian sebagai berikut :
IP=127.0.0.1
PORT=25
SSL=0
SMTP_CDB=/etc/tcp/smtp.cdb
FORCE_TLS=0
DENY_TLS=0
AUTH=1
REQUIRE_AUTH=0
RBLSMTPD_PROG=”rblsmtpd”
RBLSMTPD_TIMEOUT=5
RBL_BAD=”zen.spamhaus.org bl.spamcop.net”
QMAILQUEUE=”$VQ/bin/qmail-scanner-queue”
lalu simpan dan keluar dari vi.
$ cp service-qmail-smtpd-run run
$ chmod 755 run
$ chmod 6711 ~vpopmail/bin/vchkpw
$ chmod 4711 /var/qmail/bin/qmail-scanner-queue
selanjutnya menyesuaikan akses kontrol tcpserver yang mengalami sedikit perubahan. biasanya /etc/tcp.smtp.cdb menjadi /etc/tcp/smtp.cdb :
$ mkdir -m 755 /etc/tcp
$ cd /etc/tcp
$ wget http://qmail.jms1.net/etc-tcp-makefile
$ mv etc-tcp-makefile Makefile
$ vi smtp
isi dengan :
127.:allow,RELAYCLIENT=”",RBLSMTPD=”"
:allow
simpan dan keluar dari vi
$ make
$ qmailctl start
$ qmailctl stat
pastikan qmail-smtpd up lebih dari 5 detik. jika tidak, lihat log file untuk mengetahui pesan error yang muncul:
$ tail -f /var/log/qmail/qmail-smtpd/current | tai64nlocal
jika terdapat pesan error :
421 unable to read controls #4.3.0
berikan perintah :
$ touch /var/qmail/control/validrcptto.cdb
untuk membuat dummy file. namun jika ingin sungguh-sungguh memanfaatkan patch validrcptto dari john simpson maka harus membuat file validrcptto.cdb yang sesungguhnya menggunakan script mkvalidrcptto.
Selanjutnya seting TLS di port 587 lakukan sebagai berikut :
$ cd /var/qmail/supervise
$ mkdir -m 1755 qmail-smtpd-tls
$ cd qmail-smtpd-tls
$ wget http://qmail.jms1.net/scripts/service-qmail-smtpd-run
$ vi service-qmail-smtpd-run
lakukan penyesuaian sebagai berikut :
IP=192.168.10.25 (sesuaikan dengan ip server)
PORT=587
SSL=0
FORCE_TLS=1
DENY_TLS=0
AUTH=1
REQUIRE_AUTH=1
SMTP_CDB=/etc/tcp/smtptls.cdb
QMAILQUEUE=”$VQ/bin/qmail-scanner-queue.pl”
simpan lalu keluar dari vi
$ mv service-qmail-smtpd-run run
$ chmod 755 run
$ mkdir -m 755 log
$ cd log
$ wget http://qmail.jms1.net/scripts/service-any-log-run
$ vi service-any-log-run
lakukan penyesuaian menjadi :
exec env - PATH=”$VQ/bin:/usr/local/bin:/usr/bin:/bin” \
multilog t n10 s1048576 /var/log/qmail/qmail-smtpd-tls \
‘-*’ ‘+*ver: status:*’ =lstatus
simpan lalu keluar dari vi
$ mv service-any-log-run run
$ chmod 755 run
$ mkdir /var/log/qmail/qmail-smtpd-tls
$ chmod 750 /var/log/qmail/qmail-smtpd-tls
$ chown qmaill.root /var/log/qmail/qmail-smtpd-tls
$ cd /etc/tcp
$ vi smtptls
tambahkan :
127.:allow,RELAYCLIENT=”"
:allow
simpan lalu keluar dari vi
$ vi Makefile
sesuaikan menjadi :
all: smtp.cdb smtptls.cdb
simpan dan keluar dari vi
$ make
$ cd /usr/local/bin
$ wget http://qmail.jms1.net/scripts/vfixpermissions
$ chmod 755 vfixpermissions
$ ./vfixpermissions -s
$ chmod 0755 /var/qmail/bin/qmail-scanner-queue.pl
$ ln -s /var/qmail/supervise/qmail-smtpd-tls /service/
$ svstat /service/qmail-smtpd-tls
pastikan qmail-smtpd-tls up lebih dari 5 detik. jika tidak, lihat log file untuk mengetahui pesan error yang muncul:
$ tail -f /var/log/qmail/qmail-smtpd-tls/current | tai64nlocal
jika ada error “YOU HAVEN’T DISABLED SET-ID SCRIPTS IN THE KERNEL YET!” pastikan perubahan permission qmail-scanner:
$ chmod 0755 /var/qmail/bin/qmail-scanner-queue.pl
Selanjutnya seting SSL di port 465 lakukan sebagai berikut :
instalasi ucspi-ssl:
$ mkdir /package
$ chmod 1755 /package
$ cd /package
$ wget http://www.superscript.com/ucspi-ssl/ucspi-ssl-0.70.tar.gz
$ tar xzfv ucspi-ssl-0.70.tar.gz
$ cd host/superscript.com/net/ucspi-ssl-0.70
$ package/compile
jika muncul pesan error :compile:fatal: cannot make it-base it-sslperl lakukan :
$ package/compile base
$ package/rts base
$ package/install base
$ cd /var/qmail/supervise
$ mkdir -m 1755 qmail-smtpd-ssl
$ cd qmail-smtpd-ssl
$ wget http://qmail.jms1.net/scripts/service-qmail-smtpd-run
$ vi service-qmail-smtpd-run
lakukan penyesuaian :
IP=192.168.10.25 (sesuaikan dengan ip server)
PORT=465
SSL=1
FORCE_TLS=0
DENY_TLS=0
AUTH=1
REQUIRE_AUTH=1
SMTP_CDB=/etc/tcp/smtpssl.cdb
QMAILQUEUE=”$VQ/bin/qmail-scanner-queue.pl”
simpan lalu keluar dari vi
$ mv service-qmail-smtpd-run run
$ chmod 755 run
$ mkdir -m 755 log
$ cd log
$ wget http://qmail.jms1.net/scripts/service-any-log-run
$ vi service-any-log-run
lakukan penyesuaian menjadi :
exec env - PATH=”$VQ/bin:/usr/local/bin:/usr/bin:/bin” \
multilog t n10 s1048576 /var/log/qmail/qmail-smtpd-ssl \
‘-*’ ‘+*ver: status:*’ =lstatus
simpan lalu keluar dari vi
$ mv service-any-log-run run
$ chmod 755 run
$ mkdir /var/log/qmail/qmail-smtpd-ssl
$ chmod 750 /var/log/qmail/qmail-smtpd-ssl
$ chown qmaill.root /var/log/qmail/qmail-smtpd-ssl
$ cd /etc/tcp
$ vi smtpssl
tambahkan :
127.:allow,RELAYCLIENT=”"
:allow
simpan lalu keluar dari vi
$ vi Makefile
sesuaikan menjadi :
all: smtp.cdb smtptls.cdb smtpssl.cdb
simpan dan keluar dari vi
$ make
membuat file SSL key :
$ cd /var/qmail/control
$ openssl req -newkey rsa:1024 -x509 -nodes -days 3650 -out servercert.pem -keyout servercert.pem
isi dengan data yang sesuai.
$ chown root:nofiles servercert.pem
$ chmod 640 servercert.pem
$ cp servercert.pem clientcert.pem
$ chown root:qmail clientcert.pem
$ chmod 640 clientcert.pem
$ ln -s /var/qmail/supervise/qmail-smtpd-ssl /service/
$ svstat /service/qmail-smtpd-ssl
pastikan qmail-smtpd-tls up lebih dari 5 detik. jika tidak, lihat log file untuk mengetahui pesan error yang muncul:
$ tail -f /var/log/qmail/qmail-smtpd-ssl/current | tai64nlocal
mengurangi spam dengan rblsmtpd gratis
Ada beberapa cara untuk memfilter email spam. salah satu yang umum diketahui adalah dengan spamassassin. Dengan menggunakan spamassassin di mail server, email diterima kemudian discan oleh spamassassin untuk dipilah sebagai spam atau non spam. Pekerjaan spamassassin ini tentu saja membutuhkan sumber daya server dan makin banyak email yang harus discan makin banyak juga sumber daya yang diperlukan.
Cara lain yang dapat digunakan secara tersendiri maupun digabung dengan spamassassin adalah dengan rblsmptd atau real time blacklist. Metode ini melibatkan penggunaan DNS. Sebelum email diterima, mail server tujuan akan memeriksa apakah IP pengirim terdapat dalam daftar IP yang diketahui sebagai spammer. Jika terdaftar maka langsung ditolak. Sehingga sumber daya server dapat dihemat.
Beberapa organisasi non profit yang menyediakan daftar IP spammer antara lain adalah spamhaus dan spamcop. Kita dapat menggunakan layanan spamhaus secara gratis jika mail server kita bukan untuk tujuan komersial dan load nya kecil. Untuk dapat menggunakan layanan gratis ini dengan mail server qmail sangat mudah. Hanya 2 file yang perlu diubah. Yang pertama adalah /service/qmail-smtpd/run. Pada file tersebut carilah bagian yang seperti ini :
exec /usr/local/bin/softlimit -m 20000000 \
/usr/local/bin/tcpserver -v -R -l “$LOCAL” -x /etc/tcp.smtp.cdb -c
“$MAXSMTPD” \
-u “$QMAILDUID” -g “$NOFILESGID” 0 smtp \
/var/qmail/bin/qmail-smtpd mail.jogjakota.go.id \
/home/vpopmail/bin/vchkpw /usr/bin/true 2>&1
lalu tambahkan hingga menjadi seperti ini :
exec /usr/local/bin/softlimit -m 20000000 \
/usr/local/bin/tcpserver -v -R -l “$LOCAL” -x /etc/tcp.smtp.cdb -c
“$MAXSMTPD” \
-u “$QMAILDUID” -g “$NOFILESGID” 0 smtp rblsmtpd -r zen.spamhaus.org -r
bl.spamcop.net \
/var/qmail/bin/qmail-smtpd mail.jogjakota.go.id \
/home/vpopmail/bin/vchkpw /usr/bin/true 2>&1
File yang kedua adalah /etc/tcp.smtp. Umumnya isi file tersebut adalah :
127.:allow,RELAYCLIENT=”"
:allow
tambahkan sehingga menjadi seperti ini :
127.:allow,RELAYCLIENT=”",RBLSMTPD=”"
:allow
kemudian berikan perintah untuk rebuild file tcp.smtp.cdb :
$ tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
kemudian berikan perintah untuk restart qmail :
$ qmailctl restart
Untukmengetahui apakah rblsmtpd bekerja atau tidak cek log file di /var/log/qmail/qmail-smtpd dengan perintah :
$ cd /var/log/qmail/qmail-smtpd
$ cat current | tai64nlocal | grep spamhaus
jika bekerja maka hasilnya kira-kira sebagai berikut :
2011-09-26 09:36:48.263908500 rblsmtpd: xxx.221.221.165 pid 8746: 451
http://www.spamhaus.org/query/bl?ip=xxx.221.221.165
2011-09-26 10:17:50.068918500 rblsmtpd: xxx.138.223.82 pid 12242: 451
http://www.spamhaus.org/query/bl?ip=xxx.138.223.82
Dengan menggunakan rblsmtpd spamhaus, kurang lebih 10% email yang berpotensi spam berhasil ditolak.
Bagaimana memastikan rule spamassassin up to date?
Spamassassin merupakan perangkat lunak open source untuk menangkal spam yang cukup handal. Perangkat lunak ini biasanya digunakan di mail server sebagai pelengkap MTA seperti qmail, procmail, sendmail dan Postfix. Spamassassin bekerja dengan rule yang akan memberi skor pada email. Berdasarkan skor itulah sebuah email ditentukan sebagai spam atau tidak. Administrator dapat menentukan berapa skor agar sebuah email dianggap sebagai spam.
Setiap hari spammer di internet makin banyak dan rule spamassassin pun diperbaharui. Saya kurang paham seberapa sering rule ini diperbaharui. Sehingga saya memasang update otomatis secara berkala di crontab. Namun kadang kala saya ingin tahu apakah rule yang terpasang sudah up to date atau belum. Untuk itu saya berikan perintah berikut:
$ host -t txt “0.3.3.updates.spamassassin.org”
jawaban yang diperoleh sebagai berikut :
0.3.3.updates.spamassassin.org text “917420″
Angka 0.3.3 adalah penulisan secara terbalik versi spamassassin yang saya pakai yaitu versi 3.3.0. Angka 917420 adalah versi rule up to date yang dimiliki oleh tim spamassassin. Untuk mengetahui apakah rule yang saya miliki up to date, saya berikan perintah berikut :
$ head -1 /var/lib/spamassassin/3.001004/updates_spamassassin_org.cf
dan jawabannya :
# UPDATE version 917420
berarti rule saya up to date.







