Difference between revisions of "Blok Spam Menggunakan Postfix dan Bogofilter"
Onnowpurbo (talk | contribs) |
Onnowpurbo (talk | contribs) |
||
Line 34: | Line 34: | ||
==Melakukan Filter== | ==Melakukan Filter== | ||
− | * Buat script untuk menjalankan bogofilter, misalnya / | + | * Buat script untuk menjalankan bogofilter, misalnya /home/bogofilter/postfix-filter.sh yang berisi |
− | vi / | + | mkdir /home/bogofilter |
+ | vi /home/bogofilter/postfix-filter.sh | ||
#!/bin/sh | #!/bin/sh | ||
Line 73: | Line 74: | ||
exit $EX_TEMPFAIL | exit $EX_TEMPFAIL | ||
− | * Set supaya script bisa di jalankan! | + | * Set supaya script bisa di jalankan! Semoga kumpulan kata-kata yang awal kita masukan ke bogofilter cukup lumayan untuk memberikan training awal. Memang kadang kala akan terjadi kesalahan klasifikasi.Jika terjadi salah klasifikasi maka HARUS dibetulkan kemudian. |
+ | ==Modifikasi /etc/postfix/master.cf== | ||
− | + | Modifikasi /etc/postfix/master.cf agar dapat menjalankan filter. | |
− | + | Setelah kalimat yang berawalan "smtp " dan di akhiri dengan "smtpd" (pastikan ada "d" di akhir!). Tambahkan kalimat berikut, kita perlu meng-ident dengan spasi atau tab: | |
− | |||
− | |||
− | - | + | -o content_filter=filter: |
− | + | Di akhir file, tambahkan dua kalimat berikut | |
− | |||
− | |||
− | + | filter unix - n n - - pipe | |
+ | flags=Rq user=filter argv=/home/bogofilter/postfix-filter.sh -f ${sender} -- ${recipient} | ||
− | + | Selanjutnya di setiap mail yang masuk akan di tambahkan kalimat header: | |
− | |||
− | |||
− | |||
− | |||
− | |||
X-Bogosity: ... | X-Bogosity: ... | ||
− | + | Sebuah e-mail yang di klasifikasikan oleh bogofilter sebagai spam akan mempunyai header | |
− | |||
X-Bogosity: Spam ... | X-Bogosity: Spam ... | ||
− | + | Perlu di catat bahwa nama header bisa di konfigurasi saat compile dan dapat di ubah. | |
− | |||
− | + | Kita perlu mengedukasi pengguna bagaimana cara memilah spam berdasarkan nilai yang ada di header X-Bogosity. E-mail spam sebaiknya dimasukan folder / mailbox spam, daripada di delete / di buang. | |
− | |||
− | |||
+ | ==Registrasi dan Koreksi== | ||
− | + | Untuk menggunakan external filter di Postfix, kita perlu membuat Unix group di server dengan nama "filter". | |
− | + | Selanjutnya, kita dapat membuat account user dengan nama "filter" di server dan menjadi anggota group "filter". Ini akan menjadi account yang tidak mempunyai hak tinggi yang akan digunakan oleh script. | |
− | |||
− | + | Pastikan tidak ada user lain yang menjadi anggota group "filter". Login ke account "filter" sebaiknya di kunci misalnya mengunakan perintah | |
− | |||
− | |||
− | + | passwd -l filter' on Linux and | |
− | |||
Solaris) and the shell in /etc/passwd should be set to an invalid | Solaris) and the shell in /etc/passwd should be set to an invalid | ||
shell such as /bin/false. | shell such as /bin/false. | ||
Line 136: | Line 123: | ||
- Make sure the script is executable | - Make sure the script is executable | ||
− | + | # chmod +x /home/bogofilter/postfix-filter.sh | |
- Change the ownership of /home/bogofilter to the filter user | - Change the ownership of /home/bogofilter to the filter user | ||
− | + | # chown -R filter:filter /home/bogofilter | |
- Done! | - Done! |
Revision as of 20:53, 5 January 2011
Disini akan di terangkan cara menggunakan bogofilter untuk mem-filter e-mail yang melalui postfix.
Teori
Kita akan mensetup bogofilter di mail server dan akan mem-filter semua mail yang masuk. Ada beberapa keuntungan yang akan di peroleh karena hal tersebut, yaitu:
- Pengguna e-mail non-unix / non-linux akan memperoleh keuntungan dari bogofilter.
- Bogofilter akan belajar banyak karena akan memperoleh akses ke corpus yang sangat besar.
Di samping itu, juga ada mekanisme bagi pengguna untuk mendaftarkan message spam baru / non-spam termasuk memperbaiki klasifikasi yang salah.
Asumsi
- Langkah yang di terangkan disini membutuhkan privilege sebagai root.
- Postfix di install di /usr. Jika kita menginstall dari repo kemungkinan akan berada disitu. Kalau kita menginstall menggunakan source code maka kemungkinan akan ada di /usr/local/
- Bogofilter di install di /usr/bin/bogofilter di mail server.
Instalasi
instalasi postfix
apt-get install postfix
instalsi bogofilter
apt-get install bogofilter
beri training bogofilter
bogofilter -d . -s < spam.mbx bogofilter -d . -n < nonspam.mbx
Melakukan Filter
- Buat script untuk menjalankan bogofilter, misalnya /home/bogofilter/postfix-filter.sh yang berisi
mkdir /home/bogofilter vi /home/bogofilter/postfix-filter.sh
#!/bin/sh FILTER=/usr/bin/bogofilter FILTER_DIR=/var/spool/filter # WARNING! The -i is crucial, else you may see # messages truncated at the first period that is alone on a line # (which can happen with several kinds of messages, particularly # quoted-printable) # -G is ignored before Postfix 2.3 and tells it that the message # does not originate on the local system (Gateway submission), # so Postfix avoids some of the local expansions that can leave # misleading traces in headers, such as local address # canonicalizations. POSTFIX="/usr/sbin/sendmail -G -i" export BOGOFILTER_DIR=/home/bogofilter # Exit codes from <sysexits.h> EX_TEMPFAIL=75 EX_UNAVAILABLE=69 cd $FILTER_DIR || \ { echo $FILTER_DIR does not exist; exit $EX_TEMPFAIL; } # Clean up when done or when aborting. trap "rm -f msg.$$ ; exit $EX_TEMPFAIL" 0 1 2 3 15 # bogofilter -e returns: 0 for OK, nonzero for error rm -f msg.$$ || exit $EX_TEMPFAIL $FILTER -p -u -e > msg.$$ || exit $EX_TEMPFAIL exec <msg.$$ || exit $EX_TEMPFAIL rm -f msg.$$ # safe, we hold the file descriptor exec $POSTFIX "$@" exit $EX_TEMPFAIL
- Set supaya script bisa di jalankan! Semoga kumpulan kata-kata yang awal kita masukan ke bogofilter cukup lumayan untuk memberikan training awal. Memang kadang kala akan terjadi kesalahan klasifikasi.Jika terjadi salah klasifikasi maka HARUS dibetulkan kemudian.
Modifikasi /etc/postfix/master.cf
Modifikasi /etc/postfix/master.cf agar dapat menjalankan filter.
Setelah kalimat yang berawalan "smtp " dan di akhiri dengan "smtpd" (pastikan ada "d" di akhir!). Tambahkan kalimat berikut, kita perlu meng-ident dengan spasi atau tab:
-o content_filter=filter:
Di akhir file, tambahkan dua kalimat berikut
filter unix - n n - - pipe flags=Rq user=filter argv=/home/bogofilter/postfix-filter.sh -f ${sender} -- ${recipient}
Selanjutnya di setiap mail yang masuk akan di tambahkan kalimat header:
X-Bogosity: ...
Sebuah e-mail yang di klasifikasikan oleh bogofilter sebagai spam akan mempunyai header
X-Bogosity: Spam ...
Perlu di catat bahwa nama header bisa di konfigurasi saat compile dan dapat di ubah.
Kita perlu mengedukasi pengguna bagaimana cara memilah spam berdasarkan nilai yang ada di header X-Bogosity. E-mail spam sebaiknya dimasukan folder / mailbox spam, daripada di delete / di buang.
Registrasi dan Koreksi
Untuk menggunakan external filter di Postfix, kita perlu membuat Unix group di server dengan nama "filter".
Selanjutnya, kita dapat membuat account user dengan nama "filter" di server dan menjadi anggota group "filter". Ini akan menjadi account yang tidak mempunyai hak tinggi yang akan digunakan oleh script.
Pastikan tidak ada user lain yang menjadi anggota group "filter". Login ke account "filter" sebaiknya di kunci misalnya mengunakan perintah
passwd -l filter' on Linux and Solaris) and the shell in /etc/passwd should be set to an invalid shell such as /bin/false.
Arrange for users to send misclassified mail to a particular mailbox and make sure that the database is updated regularly.
If you cannot arrange for regular corrections, remove the "-u" from the bogofilter command in the script above, and update the database as the need arises by registering more mail.
- Make sure the script is executable
# chmod +x /home/bogofilter/postfix-filter.sh
- Change the ownership of /home/bogofilter to the filter user
# chown -R filter:filter /home/bogofilter
- Done!
Author:
David Relson <relson@osagesoftware.com> Matthias Andree <matthias.andree@gmx.de>