Creation date: 10/08/2003
Procmail-id-BasicLevelTutorial ini terbagi atas dua bagian, ini yang pertama, hanya membahas masalah utilitas di procmail.Dan yang kedua membahas pengunaan regular expresi di procmail. Pra-syaratUntuk menjalankan semua tutorial ini, anda harus menyiapkan procmail yang sudah terinstall, sebuah mailserver (smtp server bukan pop atau imap) yang sudah berjalan normal, dan user untuk percobaan.PendahuluanProcmail adalah suatu program yang dibuat untuk memproses mail yang datang pada tingkat local delivery. Cara kerja program ini yang utama untuk meneruskan email sesuai dengan tingkat filter dan tujuan akhir mail. Atau bila ternyata oleh admin, MTA (mail transfer agent) tidak menggunakan procmail sebagai MDA (mail delivery agent), dapat juga di letakkan pada file .forward pada home direktori user. Dengan syntax sebagai berikut pada file .forward: "|IFS=' ' && exec /usr/bin/procmail -f- || exit 75 #username"ganti username dengan login anda, dan tanda petik dua (") pada awal dan akhir juga harus di tulis. Pastikan juga letak binary procmail sudah pada direktori yang benar. Format .procmailrcFormat satu buah file procmailrc (lazimnya):
|
SHELL=/bin/bash <-- variable :0 <-- awal proses * ^Subject: .*linux <-- regex $DEFAULT <-- aksi yang diambil
H B b h f c w i
dan file-lock
:0 atau :0 atribut atau :0: file-lock atau :0 atribut : file-lock atau
SHELL=/bin/bash
MAILDIR=$HOME
DEFAULT=$HOME/Maildir/
LOGFILE=$MAILDIR/procmail.log
LOG="---LOGGING-->"
VERBOSE=yes
LOGABSTRACT=all
VERBOSE
dan LOGABSTRACT
Sebuah filter procmail selalu di awali dengan :0 . Awalan ini nantinya juga akan digunakan untuk mendefinisikan file locking.
Baris kedua mendefinisikan jenis filter yang dipakai. Tanda * (bintang/shift + 8) menandakan dimulainya regular expression atau proses filter.
filter email-address
Dalam latihan ini, dibuat seorang user untuk percobaan procmail, misal user tono, dan dibuatkan file .procmailrc untuk user tono di home direktorinya
root@uler root# useradd tono root@uler root# su - tono tono@uler tono$ vi .procmailrccontoh isi file
procmailrc
SHELL=/bin/bash MAILDIR=$HOME LOGFILE=$MAILDIR/procmail.log LOG="---LOGGING--> " VERBOSE=yes LOGABSTRACT=all COMSAT=no :0 * ^From.*root $MAILDIR/testIsi procmailrc diatas dapat dibaca, filter semua email (yang mempunyai header) berasal dari root dan bila benar maka simpan email tersebut ke file (mailbox format) test.
Kemudian test kirim email dari root ke user tono yang telah diedit procmailrc-nya.
root@uler root# mail tono < /dev/null No message, no subject; hope that's okperintah diatas berarti, kirim email ke tono dengan pesan "null" alias kosong.
tono@uler tono$ cat procmail.log ---LOGGING--> procmail: [1836] Mon Oct 13 11:11:32 2003 procmail: Assigning "LOGABSTRACT=all" procmail: Assigning "COMSAT=no" procmail: Assigning "COMSAT=no" procmail: Match on "^From.*root" procmail: Assigning "LASTFOLDER=/home/users/tono/test" procmail: Opening "/home/users/tono/root" procmail: Acquiring kernel-lock From [email protected] Mon Oct 13 11:11:32 2003 Folder: /home/users/toni/rootHasilnya pada baris
procmail: Match on "^From.*root"
menunjukkan kriteria cocok pada email yang dikirim user root. Dan procmail: Assigning "LASTFOLDER=/home/users/tono/test"
meneruskan proses tersebut ke file bernama test
filter subject email
Sekarang kita edit procmail menjadi
:0 * ^Subject:.*gunung $MAILDIR/rootini akan memfilter semua email yang mempunyai (header) subject (yang ada kata) gunung.
root@uler root# mail tono -s "naik gunung" < /dev/nullhasilnya
procmail: Match on "^Subject:.*gunung"filter pada body message
:0B * ular $MAILDIR/testkita buatkan file messagenya
root@uler tono# cat > pesan pada hari minggu diajak ayah ke kebun binatang disana ada ular ^dlalu dimasukkan ke email
root@uler toni# mail tono < pesandan hasilnya di procmail.log
procmail: Match on "ular"proses pada isi header/body-mail
:0h $MAILDIR/testheaderMisal dikirim email, maka akan muncul file baru testheader yang berisi header email, silakan buka file tersebut.
:0h atau :0Hh * ^Subject:.*spam $MAILDIR/spamBila ingin mengambil isi message(body) mail saja diperlukan atribut b. misal
:0b atau :0Hb * ^TO_milis-linux $MAILDIR/milis-linux
memforward email
Selain menyimpan tujuan akhir email ke dalam file, procmail juga memungkinkan email yang datang untuk diforward ke email address yang lain. Dengan memakai tanda "!" (aphostrope) pada tujuan akhir.
:0 * Subject:.*bounce ! postmastercontoh diatas akan memforward email dengan subject bounce ke postmaster smtplocal.
:0 * Subject:.*virus ! [email protected], [email protected]contoh di atas akan memforward email ke external mail server, untuk memforward kebanyak tujuan dapat di pakai tanda koma sebagai pemisah
trigger aplikasi
Procmail juga dapat digunakan untuk mentrigger suatu aplikasi bila suatu kriteria dipenuhi. Karena difungsikan sebagai trigger, maka ada baiknya bila tujuan akhir dari procmail diset /dev/null
DEFAULT=/dev/null :0 * From .*root | touch "test-trigger"Perintah diatas membuat file test-trigger bila ada email yang berasal dari root
Filter dengan Logika "and" dan "or"
Logika and dapat dibuat dengan membuat filter yang bertingkat. Atau setelah cocok filter 1 harus cocok filter berikutnya.
:0 * ^Toadilinux * ^Subject .*Test ! [email protected]Perintah diatas dapat dibaca, email dengan header to adilinux dengan subject mengandung kata Test akan di forward ke email.
Logika or didapat dengan memberi tanda | (pipe) pada 1 baris filter
:0 * ^Subject:.*test | ^Subject:.*coba /dev/null atau :0 * ^Subject:(.*test|.*coba) /dev/nullBaris di atas dapat dibaca email dengan subyek mengandung kata test atau kata coba akan di teruskan ke /dev/null
mailbox_command = /<where ever u put the file>/procmailSatu hal yang harus diperhatikan adalah bila anda telah memutuskan untuk memakai procmail, maka harus ada yang user yang menangani semua email yang dikirimkan untuk root. Dalam hal ini anda harus memberikan alias untuk root. Edit file alias di /etc/postfix atau
root@uler root# echo "root : someone" >> /etc/postfix/alias root@uler root# newaliases
poll 202.203.204.205 with protocol POP3, with options user "adilinux" there with password "2000rupiah" is adi here with options rewrite mimedecode fetchall pass8bits and wants mda "/usr/bin/procmail"
# 1. Run TrashScan :0 * multipart * !^X-Virus-Scan: | /usr/local/bin/trashscan # 2. Filter tagged virus mails :0: * ^X-Virus-Scan: Suspicious mail.virusPanduan selengkapnya ada pada antivirus clamav