melindungi domain dari spammer

Salah satu cara untuk meningkatkan penjualan adalah dengan iklan. Penjual ingin agar iklannya dapat dilihat oleh sebanyak mungkin orang. Salah satu cara yang mudah dan murah untuk itu adalah melalui email. Maka segala cara dilakukan agar dapat mengirimkan iklan ke sebanyak mungkin alamat email.

Model marketing yang seperti ini sangat tidak santun, bahkan di beberapa negara ada regulasi (spam act) yang mengatur hal ini lengkap dengan ancaman hukumannya. Marketing melalui email yang santun agar tidak dianggap melanggar regulasi dan tidak dikategorikan sebagai spam, harus memenuhi beberapa kriteria, antara lain :

  1. Jangan menggunakan header yang tidak jelas atau palsu. From, To, Reply-To dan info lain dalam header email harus mencerminkan si pengirim.
  2. Jangan menggunakan subject yang tidak relevan dengan isi email. Subject harus sebaik mungkin mencerminkan isi email.
  3. Tunjukkan bahwa email adalah memang iklan.
  4. Beritahukan kepada penerima dimana alamat fisik (alamat pos) anda.
  5. Beritahukan kepada penerima bagaimana caranya agar tidak lagi menerima email sejenis dari anda. Pemberitahuan dan petunjuk ini harus jelas dan mudah dilihat serta diikuti oleh penerima.
  6. Hargai dan laksanakan permintaan penerima jika tidak ingin lagi menerima email dari anda.
  7. Jika anda meminta pihak ketiga untuk melakukan marketing email untuk kepentingan anda, lakukan pengawasan dan pastikan yang bersangkutan tidak melakukan pelanggaran terhadap regulasi ini. Karena jika pihak ketiga melanggar spam act,  bukan hanya dia yang dapat dihukum tapi pihak yang dipromosikan pun juga dapat dihukum.

Tapi spammer tidak peduli dengan spam act. Salah satu cara yang sering digunakan spammer adalah menggunakan nama domain milik suatu organisasi yang bonafid agar penerima lebih tertarik dan percaya. Jika isi email spam adalah sesuatu yang buruk tentu saja akan merusak citra organisasi yang bersangkutan sebagai pemilik nama domain.

Untuk mencegah agar suatu nama domain tidak disalahgunakan oleh spammer, dibuatlah suatu cara yang dikenal dengan sebutan SPF (Sender Policy Framework). SPF adalah suatu cara yang memungkinkan pemilik nama domain untuk memberitahu kepada dunia siapa saja (mail server mana) yang berhak mengirim email menggunakan nama domainnya. Jika suatu email dikirim oleh mail server yang tidak diakui oleh pemilik nama domain maka hampir dapat dipastikan bahwa email tersebut palsu. Email palsu biasanya spam. Sehingga mail server penerima boleh menolak email tersebut.

Lakukanlah pencegahan agar nama domain anda tidak disalahgunakan oleh spammer. SPF memanfaatkan DNS untuk dapat berfungsi. Caranya dengan menambahkan record SPF pada semua DNS server anda. Jika DNS anda menggunakan BIND tambahkan sebagai berikut (ganti xxx.xxx.xxx.xxx dengan ip mail server yang menangani nama domain anda & sesuaikan namadomain.com):

$ vi /var/named/namadomain.com.zone

namadomain.com        TXT         “v=spf1 ip4:xxx.xxx.xxx.xxx -all”

jangan lupa update serial, simpan dan keluar dari vi lalu restart BIND. jika menggunakan tinydns dari djbdns, gunakan online SPF record builder yang disediakan oleh Anders Brownworth dengan klik disini. Pada kotak Domain ketikkan namadomain.com dan pada kotak Text ketikkan

v=spf1 ip4:xxx.xxx.xxx.xxx -all

lalu klik tombol Build SPF Record, hasilnya kurang lebih seperti ini :

:namadomain.com:16:37v=spf140ip472xxx.xxx.xxx.xxx40-all:86400

copy hasilnya lalu buka file data dan paste. simpan dan keluar dari vi lalu restart tinydns.

$ vi /service/tinydns/root/data

$ make

$ svc -t /service/tinydns

SPF record pada contoh ini artinya hanya mail server dengan ip xxx.xxx.xxx.xxx yang berhak mengirim email menggunakan namadomain.com selain mail server tersebut berarti palsu dan bisa dianggap sebagai spammer.

Jika memiliki lebih dari satu mail server atau membutuhkan record SPF yang lebih kompleks, silakan klik disini untuk referensi syntax dari record SPF.

Untuk menguji apakah record SPF di DNS server sudah benar dan berfungsi dengan baik, ada beberapa alat uji yang dapat digunakan. Antara lain dengan mengirimkan email dari mail server ke alamat check-auth@verifier.port25.com yang akan mengirimkan email balasan. Jika berfungsi akan terdapat baris sebagai berikut :

----------------------------------------------------------
SPF check details:
----------------------------------------------------------
Result:         pass 

alat uji lainnya dapat dilihat disini.

setting qmail agar support ssl dan tls

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

Selanjutnya testing

1. diasumsikan sudah ada user yang valid di server yaitu katrin@server.com dengan password inipasswordnya. untuk bisa login harus melakukan encoding dahulu terhadap user dan password.

$ perl -MMIME::Base64 -e ‘print encode_base64(“00katrin@server.com00inipasswordnya”)’

hasilnya : AGthdHJpbkBzZXJ2ZXIuY29tAGluaXBhc3N3b3Jkbnlh

2. untuk test TLS gunakan hasil encoding pada langkah 1 :

$ openssl s_client -starttls smtp -crlf -connect xxx.xxx.xxx.xxx:587

250 8BITMIME
AUTH PLAIN AGthdHJpbkBzZXJ2ZXIuY29tAGluaXBhc3N3b3Jkbnlh

jika berhasil maka akan muncul :

235 ok, go ahead (#2.0.0)

3. untuk test SSL gunakan juga hasil encoding pada langkah 1 :

$ openssl s_client -crlf -connect xxx.xxx.xxx.xxx:465

AUTH PLAIN AGthdHJpbkBzZXJ2ZXIuY29tAGluaXBhc3N3b3Jkbnlh

jika berhasil maka akan muncul :

235 ok, go ahead (#2.0.0)