Image Spam

Bertugas sebagai kacung yang mengawasi lalu lintas email memang susah-susah gampang. Paling enak memang ketika sistem bekerja dengan lancar, tinggal ongkang-ongkang kaki. Tapi ketika ada masalah, semua orang berteriak serempak dan semuanya ingin didengarkan saat itu juga.

Yang paling jadi masalah belakangan ini adalah email-email spam. Sebagian besar email spam memang sudah diatasi dengan spamassassin, tapi masih banyak juga spam yang lolos. Dalam 1 hari, email spam yang lolos masuk ke inbox ada sekitar 80-90-an. Kategori 90-an email spam itu sudah tergolong besar mengingat klien-klien yang baru menerima 5-8 email spam saja sudah teriak-teriak.

Email spam yang berhasil lolos itu sebagian besar berupa image spam. Image spam biasanya berupa email dengan attachment gif, jpg, jpeg. Isi dari file image itu berupa kata-kata yang biasanya ada di email spam lainnya, seperti viagra, investor, medicine, dan lainnya.

Image spam ini menjadi masalah, karena spamassassin tidak bisa melakukan pengecekan terhadap attachment yang ada. Pantas aja semua spam pada lolos. Setelah mencari-cari di google, akhirnya dicoba untuk masang plugin FuzzyOcr di spamassassin. Berikut beberapa langkah instalasi yang diperlukan, diambil dari sini: (note: versi yang lebih baru sudah keluar)

Paket yang dibutuhkan:

  • SpamAssassin 3.1.1 atau lebih
  • libungif-4.1.4.tar.gz
  • libnetpbm10-dev
  • netpbm
  • giflib3g-dev
  • libimage-exif-perl
  • libstring-approx-perl
  • imagemagick
  • libjpeg-progs
  • gocr-0.40.tar.gz
  • fuzzyocr-2.3b.tar.gz

Kalau pakai debian atau fedora, aplikasi yang ada bisa tinggal di apt-get atau di yum. Terkecuali untuk paket-paket .tar.gz ya, sebaiknya install dari source. Untuk paket libstring-approx-perl, lebih mudah install dari cpan.

perl -MCPAN -e shell
install String::Approx

  1. Download, extract, patch, dan install libungif
    cd /usr/local/src
    wget http://internap.dl.sourceforge.net/sourceforge/libungif/libungif-4.1.4.tar.gz
    tar xzvf libungif-4.1.4.tar.gz
    cd libungif-4.1.4/util
    wget https://arjuna.files.wordpress.com/2007/02/giftext-segfaultpatch.doc
    patch giftext.c < giftext-segfault.patch
    cd ..
    ./configure –prefix=/usr && make && make install
  2. Download, extract, patch, compile dan install gocr:
    cd /usr/local/src
    wget http://www-e.uni-magdeburg.de/jschulen/ocr/gocr-0.40.tar.gz
    tar xzvf gocr-0.40.tar.gz
    cd gocr-0.40/src
    wget https://arjuna.files.wordpress.com/2007/02/patch-gocr-segfault.doc
    patch pgm2asc.c < patch-gocr-segfault.doc
    cd ..
    ./configure –prefix=/usr && make && make install

    Tes gocr dengan file ini
    wget https://arjuna.files.wordpress.com/2007/02/image001.gif
    giftopnm image001.gif > image001.pnm
    gocr image001.pnm

    Harusnya muncul seperti ini:
    ‘ AnENTlON ALL DAY TRADERS AND INVESTORS ‘

    Sekarang coba test dengan giffix, mustinya nggak ada error seperti di awal:
    giffix image001.gif > image001.fixed
    giftopnm image001.fixed > image001.pnm
    gocr image001.pnm

  3. Install FuzzyOcr 2.3b
    cd /usr/local/src/
    wget http://users.own-hero.net/~decoder/fuzzyocr/fuzzyocr-2.3b.tar.gz
    tar xzvf fuzzyocr-2.3b.tar.gz
    cd FuzzyOcr-2.3b

    Patch pakai punyanya Robert LeBlanc
    wget https://arjuna.files.wordpress.com/2007/02/fuzzyocr-23b-hashdb-poisonpatch.doc
    patch FuzzyOcr.pm < fuzzyocr-23b-hashdb-poison.patch.doc

    Kopi plugin dan configurasi file ke direktori spamassassin:
    cp FuzzyOcr.pm /etc/mail/spamassassin/
    cp FuzzyOcr.cf /etc/mail/spamassassin/
    cp FuzzyOcr.words.sample /etc/mail/spamassassin/FuzzyOcr.words

    Tambahkan baris “loadplugin FuzzyOcr /etc/spamassassin/FuzzyOcr.pm” di file v310.pre
    cp /etc/mail/spamassassin/v310.pre /etc/mail/spamassassin/v310.pre.bak
    echo ” loadplugin FuzzyOcr /etc/mail/spamassassin/FuzzyOcr.pm” >> /etc/mail/spamassassin/v310.pre

    Edit konfigurasi FuzzyOcr:
    vi /etc/spamassassin/FuzzyOcr.cf
    – Remark baris yang load plugin FuzzyOcr
    #loadplugin FuzzyOcr FuzzyOcr.pm

    #Khusus spamassassin di bawah versi 3.1.4, uncomment baris ini dan ganti isinya ke 1.0:
    focr_pre314 1.0

    #sesuaikan konfigurasi dengan di bawah ini
    focr_base_score 2
    focr_autodisable_score 50

  4. Test spamassassin dan fuzzyocr
    spamassassin –lint

    Kalau tidak ada error, test plugin fuzzyocr dengan file-file samples yang disediakan:
    /usr/local/src/fuzzyocr-2.3b/samples
    spamassassin -t < animated-gif.eml

    Hasil:

    19 FUZZY_OCR BODY: Mail contains an image with common spam text inside
    Words found:
    “alert” in 4 lines
    “charts” in 1 lines
    “symbol” in 1 lines
    “alert” in 4 lines
    “stock” in 2 lines
    “company” in 3 lines
    “trade” in 1 lines
    “xanax” in 1 lines
    “meridia” in 1 lines
    “growth” in 1 lines
    (19 word occurrences found)

    spamassassin -t < corrupted-gif.eml

    Hasil:

    1.5 FUZZY_OCR_WRONG_CTYPE BODY: Mail contains an image with wrong
    content-type set
    Image has format “GIF” but content-type is
    “image/jpeg”
    2.5 FUZZY_OCR_CORRUPT_IMG BODY: Mail contains a corrupted image
    Corrupt image: GIF-LIB error: Image is
    defective, decoding aborted.
    10 FUZZY_OCR BODY: Mail contains an image with common spam text inside
    Words found:
    “alert” in 1 lines
    “alert” in 1 lines
    “stock” in 2 lines
    “investor” in 1 lines
    “company” in 1 lines
    “trade” in 1 lines
    “target” in 1 lines
    “service” in 1 lines
    “recommendation” in 1 lines
    (10 word occurrences found)

    spamassassin -t < jpeg.eml

    Hasil:

    4.0 FUZZY_OCR BODY: Mail contains an image with common spam text inside
    Words found:
    “viagra” in 2 lines
    “cialis” in 1 lines
    “levitra” in 1 lines
    (4 word occurrences found)

    spamassassin -t < png.eml

    28 FUZZY_OCR BODY: Mail contains an image with common spam text inside
    Words found:
    “alert” in 2 lines
    “news” in 2 lines
    “symbol” in 1 lines
    “alert” in 2 lines
    “stock” in 1 lines
    “investor” in 3 lines
    “company” in 2 lines
    “buy” in 1 lines
    “price” in 2 lines
    “trade” in 2 lines
    “target” in 2 lines
    “service” in 2 lines
    “recommendation” in 1 lines
    “levitra” in 1 lines
    “software” in 2 lines
    (26 word occurrences found)

    Kalau tidak ada masalah, kembalikan setingan focr_autodisable_score ke nilai yang normal

    vi /etc/mail/spamassassin/FuzzyOcr.cf
    focr_autodisable_score 8

  5. Restart Spamassassin
    /etc/init.d/spamassassin restart
  6. Cek log maillog
    Lihat apakah plugin sudah berjalan atau belum
    tail -f /var/log/maillog |grep FUZZY_OCR

Done! Selamat menikmati berkurangnya spam.

PS: hati-hati false positive :))

4 thoughts on “Image Spam

  1. mBu says:

    So, gimana hasilnya sekarang? OCR-nya bener ga?

  2. chiank says:

    85.4% spam… itu ada false positive gak ?

    *siul2*

  3. budiw says:

    Kerja dimana sih kamu jun?
    *penasaran*

    –budiw

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s