# Contoh berkas pemetaan pcre (PERL-compatible regular expression) bagi # pengontrolan akses SMTPD. Lihat pcre_table(5) dan access(5) untuk # deskripsi sintaksis. # # Kolom pertama adalah regular expression (ekspresi umum) yang mirip dengan # perl. Pembatas ekspresi bisa berupa segala karakter kecuali spasi, atau # karakter-karakter yang memiliki arti khusus bagi pustaka-pustaka regexp # (secara tradisional karakter garis miring depan atau slash depan yang # digunakan). Ekspresi umum dapat berisikan spasi. # # Ketika ekspresi umum diawali dengan '!', pola akan berhasil jika ekspresi # tidak cocok. # # Secara default, kecocokkan TIDAK didasarkan pada perbedaan huruf besar/kecil # meskipun menyertakan karakter 'i' di akhir slash kedua akan menyebabkan # kecocokkan didasarkan kepada perbedaan karakter huruf besar/kecil. Juga # mendukung flag-flag lainnya, tetapi yang berguna adalah 'U', yaitu membuat # pengecekan kecocokkan tidak terlalu ketat (lihat dokumentasi dan kode # sumber PCRE untuk info lebih lanjut). # # Sebuah blok tabel masukan bisa "lingkupi" oleh sebuah baris dengan # `if /pola/flag' dan sebuah baris yang berisikan `endif'. Hal ini akan # menyebabkan blok tabel-tabel masukan akan diperiksa hanya ketika # pencarian string cocok dengan pola. Bentuk `if..endif` bisa dalam bentuk # bersarang (nested loop). Untuk saat ini tidak ada operator 'else' # # Kolom kedua adalah string "pengganti" - teks yang dihasilkan oleh proses # pencocokkan.. Ketika digunakan bagi pengecekan smtpd, teks tersebut # akan sangat berguna bagi para pengguna yang salah arah (atau pesan # yang isinya menyerang bagi para pengirim spam), meskipun teks tersebut # bisa digunakan bagi sebuah nama domain atau data lainnya yang digunakan # sebagai sebuah pemetaan transport, virtual atau lainnya. # # Penggantian sub-string dari ekspresi yang cocok bisa dilakukan dengan # menggunakan sintaksis perl konvensional. Makro-makro pada string pengganti # mungkin membutuhkan perlindungan dengan tanda kurung kurawal (yaitu { dan }) # jika makro-makro tersebut tidak diikuti oleh spasi (lihat contoh dibawah). # # Baris-baris yang diawali dengan spasi kosong merupakan baris lanjutan - # baris-baris tersebut ditambahkan ke akhir baris sebelumnya (harus tidak # ada spasi sebelum ekspresi umum milik anda!) # # Pada awalnya kode ini dikembangkan untuk mengontrol kiriman spam. # Namun, sepertinya bisa juga digunakan sama baiknya bagi penulisan ulang # alamat bagi pencarian-pencarian virtual maupun kanonikal. Sepertinya, # menggunakan kode ini bagi aliases akan semakin memperketat pengontrolan. # Lindungi majordomo exploder anda yang mengirimkan email keluar # /^(?!owner-)(.*)-outgoing@(.*)/ 550 Gunakan ${1}@${2} saja # Bounce teman@apasaja, kecuali jika "apasaja" adalah domain kita # (anda sebaiknya mem-bounce semua email beralamat teman@ - ini hanyalah # sebuah contoh. /^friend@(?!my\.domain)/ 550 Stick this in your pipe $0 # Sebuah tanggapan multi-baris # /^noddy@my\.domain$/ 550 User ini orangnya sangat lucu. Anda akan benar-benar tidak ingin mengirimkan email kepadanya, karena hanya akan membuat kepala mereka berputar