InggrisPerancisSpanyol

favorit OnWorks

mailagent - Online di Cloud

Jalankan agen surat di penyedia hosting gratis OnWorks melalui Ubuntu Online, Fedora Online, emulator online Windows, atau emulator online MAC OS

Ini adalah agen surat perintah yang dapat dijalankan di penyedia hosting gratis OnWorks menggunakan salah satu dari beberapa stasiun kerja online gratis kami seperti Ubuntu Online, Fedora Online, emulator online Windows atau emulator online MAC OS

PROGRAM:

NAMA


mailagent - alat pemrosesan surat otomatis

RINGKASAN


agen surat [ -dhilqtFIVU ] [ -s{umaryt} ] [ -f fillet ] [ -e memerintah ] [ -c config ] [ -L
tingkat log ] [ -r file aturan ] [ -o mengesampingkan ] [ berkas surat ]

DESKRIPSI


Agen surat memungkinkan Anda untuk memproses email Anda secara otomatis. Diberikan satu set lex-seperti aturan,
Anda dapat mengisi email ke folder tertentu, meneruskan pesan ke orang ketiga, pipa a
pesan ke perintah atau bahkan posting pesan ke newsgroup. Bisa juga
memproses pesan yang berisi beberapa perintah. NS agen surat biasanya tidak dipanggil secara manual
tetapi lebih disebut melalui menyaring program, yang pada gilirannya dipanggil oleh kirim email. Bahwa
berarti kamu harus punya kirim email pada sistem Anda untuk menggunakan ini. Anda juga harus memiliki perl untuk menjalankan
skrip agen surat.

Ada serangkaian opsi yang dapat digunakan saat Anda memanggil agen surat dirimu sendiri. Tolong
mengacu kepada PILIHAN bagian untuk deskripsi lengkap. Anda dapat menggunakan -h pilihan untuk mendapatkan
pengingat penggunaan samar.

Produk Ringkasan
Agen surat sebenarnya memiliki empat set fitur yang berbeda, yang dapat digunakan secara bersamaan atau
satu per satu. Ini melibatkan:

· Prosesor perintah @SH, agar tetap kompatibel dengan implementasi pertama. Di dalam
penggunaan paling sederhana ini, semua pesan email tertinggal di kotak surat Anda (atau tangkap semua
folder yang diperlukan pada sistem Debian: Silakan lihat /usr/share/doc/mailagent/SECURITY untuk
rincian), dengan pemrosesan khusus yang diangkat pada pesan yang subjeknya perintah.
Silakan merujuk ke bagian yang berjudul MENGGUNAKAN THE DEFAULT ATURAN jika Anda ingin menggunakan ini
fitur.

· Filter email lengkap, yang membantu Anda menyortir email berdasarkan berbagai penyortiran
kriteria dan tindakan. Pemfilteran ditentukan dalam file aturan dan menggantikan
kegagalan perintah pemrosesan email (yang dapat diaktifkan kembali dengan menyetel secara eksplisit
membuat aturan untuk itu). Ini harus menjadi penggunaan yang paling umum dari agen surat dan sepenuhnya
didokumentasikan di bawah bagian berjudul MENGGUNAKAN THE FILTER. Anda dapat mengirimkan surat ke
folder gaya Unix biasa tetapi juga untuk folder MMDF dan MH.

· Pengganti untuk liburan program, yang secara otomatis akan menjawab email Anda
sementara kamu tidak ada. Anda hanya perlu memberikan pesan untuk dikirim kembali dan
frekuensi di mana ini akan terjadi. Beberapa substitusi makro sederhana memungkinkan Anda untuk
gunakan beberapa bagian dari header email ke dalam pesan liburan Anda, untuk pesan yang lebih personal
membalas. Lihat LIBURAN MODE bagian untuk lebih jelasnya.

· Server email generik, yang memungkinkan Anda mengimplementasikan server email nyata tanpa
kerumitan masalah tingkat yang lebih rendah seperti pemulihan kesalahan, pencatatan atau penguraian perintah.
Dokumentasi lengkap dapat ditemukan di bagian UMUM MAIL SERVER pada akhir
halaman panduan ini.

Dimungkinkan untuk memperluas perintah pemfilteran agen surat dengan mengimplementasikannya di perl dan
kemudian memuatnya secara otomatis saat digunakan. Perintah yang diperluas itu akan berperilaku
persis seperti yang ada di dalamnya, seperti yang didokumentasikan dalam MEMPERPANJANG PENYARINGAN PERINTAH bagian.

Learning Mulai dari contoh
Sangat mungkin bahwa Anda akan menemukan halaman manual ini terlalu rumit untuk Anda.
Sayangnya, itu tidak benar-benar dimaksudkan untuk menjadi tutorial melainkan bahan referensi. Jika
Anda inginkan, Anda dapat mulai dengan melihat contoh yang ada di pohon sumber distribusi
bawah agen/contoh. Direktori ini berisi dua contoh file aturan (lihat di
README file terlebih dahulu) dan dikomentari secara verbose.

MENDAPATKAN DIMULAI


Pertama, Anda perlu menginstal konfigurasi minimum dan melihat cara kerjanya. Itu akan
tidak berguna untuk menginstal program sepenuhnya dan kemudian menemukan bahwa itu tidak berfungsi sebagai
diiklankan...

Untuk memulai penginstalan, Anda harus menyiapkan ~/.mailagent file yang utama
file konfigurasi, dan pilih yang benar menyaring program.

Memilih Filter program
Distribusi dilengkapi dengan dua program filter. Satu ditulis di shell dan satu di C. The
versi shell mungkin yang digunakan jika Anda dapat menerima email Anda di banyak yang berbeda
platform di mana direktori home Anda terpasang NFS (yaitu dibagikan di antara semua itu
platform). Versi C lebih aman dan lebih cepat, tetapi Anda harus menginstalnya ke versi tetap
lokasi.

Pada beberapa platform, kirim email tidak mereset UID-nya dengan benar saat memproses email dalam
antrian sendiri. Dalam hal ini, Anda perlu mendapatkan salinan pribadi dari program filter C dan membuat
itu setuid untuk diri sendiri. Filter kemudian akan mengatur ulang UID dengan benar jika dipanggil dengan
UID efektif yang berbeda dari milik Anda (mungkin juga memerlukan bit setgid untuk mengatur ulang GID sebagai
dengan baik). Jika ini memang terjadi pada sistem Anda, pastikan Anda menggunakan path
variabel konfigurasi untuk menetapkan PATH yang tepat, karena filter akan menelurkan proses Perl dengan
opsi '-S', mencari agen surat Script.

Bahkan jika Anda tidak perlu mendapatkan salinan setuid dari menyaring program, adalah bijaksana untuk mengatur
jalur yang benar: seseorang mungkin membobol akun Anda dengan memasukkan kuda Trojan agen surat
lokasi yang sesuai. Pastikan juga program agen surat terlindungi dari
tulisan, serta direktori yang menyimpannya, atau seseorang dapat menggantikan miliknya sendiri
versi skrip dan merusak keamanan. Saya percaya setuid menyaring program agar aman,
tetapi menghadap selalu memungkinkan jadi tolong laporkan lubang keamanan apa pun kepada saya.

menyaring skrip dapat ditemukan di Lib/agen surat direktori. Itu perlu beberapa penjahitan jadi
Anda harus menyalinnya ke direktori home Anda dan mengeditnya sesuai kebutuhan Anda. Komentar ditahan
di dalamnya harus cukup jelas. Hanya ada bagian kecil di kepala naskah
yang perlu diedit. Anda harus menghapus komentar shell di menyaring naskah oleh
diri Anda sendiri jika cangkang Anda tidak dapat menanganinya.

Pada versi 3.0 PL44, saya menyarankan Anda untuk memilih versi C jika Anda khawatir tentang
keamanan. Jika Anda berada dalam posisi di mana banyak arsitektur dapat memproses .maju,
maka pembungkus shell memilih executable yang tepat berdasarkan arsitekturnya adalah
diperlukan.

Mengkonfigurasi Agen surat
If agen surat ada di jalur Anda, Anda dapat secara otomatis mengonfigurasi instalasi default dengan
berlari:

agen surat - saya

yang akan membuat ~/.mailagent file dari template yang ada, sesuaikan beberapa yang penting
variabel untuk situs Anda, dan lakukan beberapa pemeriksaan kewarasan dasar. Semua yang dilakukan perintah adalah
output pada layar untuk tujuan pemeriksaan, dan setiap masalah yang ditemukan dilaporkan.

Jika tidak, Anda harus menyalin agen surat.cf file yang disimpan di sub-direktori agen surat
/usr/bagikan/agen surat (selanjutnya disebut Lib) sebagai .mailagent di direktori home Anda. Sunting itu
untuk mengkonfigurasi seluruh pemrosesan. Secara khusus, Anda harus memilih direktori spool
(selanjutnya bernama Spool) dan direktori log (selanjutnya disebut Log).

Perhatikan bahwa menggunakan prosedur instalasi otomatis di atas tidak mencegah Anda pergi
melalui file dan memodifikasinya sesuai keinginan. Bahkan, Anda sangat dianjurkan untuk melakukannya
ini, terutama untuk pengaturan direktori home, level logging dan path or p_host
variabel. Setelah Anda selesai, jalankan kembali agen surat -I perintah untuk memastikan semuanya baik-baik saja
bagus. Namun, Anda harus menyambungkan agen surat dengan membuat ~/.maju file, sebagai
dijelaskan dalam beberapa bagian.

Berikut ini adalah deskripsi dari masing-masing bidang yang akan Anda temukan di ~/.mailagent file,
diikuti dengan nilai yang disarankan, jika berlaku. Bidang yang ditandai sebagai opsional mungkin tidak
ada di file konfigurasi. Beberapa bidang memiliki hubungan dekat dengan yang lain, dan
yang diberikan juga.

agemax Periode setelah entri dalam database harus dihapus (disarankan: 1 tahun)
Bidang ini opsional, tetapi diperlukan jika autoclean aktif.
file auth Otorisasi pengiriman jarak jauh (belum diterapkan).
autoclean Disetel ke AKTIF (tidak peka huruf besar/kecil), agen surat akan melakukan pembersihan otomatis pada
entri database di bawah hash dengan menghapus semua item yang lebih lama dari agemax. Ini
bidang opsional, menghilangkannya default ke OFF. (disarankan: MATI, kecuali jika Anda menggunakan
ONCE, UNIQUE atau RECORD, atau aktifkan mode liburan.)
pukulan Apakah biffing diinginkan atau tidak ketika agen surat mengirimkan email ke folder. Mengatur
ke AKTIF (tidak peka huruf besar/kecil) untuk mengizinkan biffing lokal jika Anda masuk.
(opsional, default ke: OFF)
buffhead Saat biffing diaktifkan, variabel ini mencantumkan header mana yang harus dicetak
keluar. Header harus diberikan dalam format yang dinormalisasi dan dipisahkan dengan
koma. (opsional, default ke: Dari, Kepada, Subjek, Tanggal).
membingungkan Panjang maksimum badan pesan yang harus dicetak saat biffing.
(opsional, default ke 560).
biffline Jumlah maksimum baris badan pesan yang harus dicetak ketika
mengoceh. Sebenarnya, agen surat mencoba mencetak jumlah baris itu, asalkan
jumlah total karakter yang dicetak kurang dari membingungkan. (opsional,
default ke 7).
biffmh Saat AKTIF, isi pesan dipadatkan sebelum biffing dengan menghapus
spasi berurutan dan mengganti baris baru dengan satu spasi. Pesan
itu sendiri tidak diubah secara fisik tentu saja, hanya output di layar yang
khawatir. Karena ini mungkin menghasilkan pesan yang sulit dibaca, saya sarankan Anda
nyalakan juga biffnice saat menggunakan opsi ini. (opsional, default ke: OFF).
biffmsg Jalur ke file yang menjelaskan format biffing harus digunakan. Jika tidak disetel, a
format bawaan bawaan digunakan. Bumbui sesuai selera. (disarankan: ~/.biffmsg).
biffnice Apakah pesan harus diformat ulang agar sesuai dengan terminal.
(opsional, default ke OFF, disarankan: ON ketika biffmh juga AKTIF).
biffnl Mengontrol apakah garis tubuh "kosong" harus dicetak atau tidak. Dengan baris "kosong",
yang kami maksud adalah baris yang tidak mengandung kata-kata. Atur ke ON untuk mencetak baris kosong seperti itu, untuk
OFF jika Anda ingin mendapatkan tampilan bodi yang lebih ringkas dalam batas yang ditentukan
by membingungkan dan biffline. (opsional, default ke ON).
kutipan biff Mengontrol apakah baris atribusi terkemuka memperkenalkan kutipan yang dipangkas
harus menjadi bagian dari pesan biff atau tidak. Saat dimatikan, garis atribusi
dipangkas dan ini dilaporkan dalam pesan pemangkasan, ketika bifftrim is
PADA. (opsional, default ke ON).
bifftrim Mengontrol apakah garis yang dipangkas dalam pesan biff harus diganti dengan a
pesan yang menyatakan berapa banyak dari mereka yang dipangkas. Hanya digunakan oleh %-T biffing
makro. Ketika dimatikan, secara otomatis mati kutipan biff demikian juga. (opsional,
default ke ON).
bifftrlen Menyatakan berapa banyak baris yang seharusnya menjadi kutipan utama sebelum melakukan apa pun
pemangkasan. Hanya digunakan oleh makro biffing %-T. (opsional, default ke 2).
memanggil Nama file antrean info tempat tugas batch disimpan. Parameter ini
harus didefinisikan saat menggunakan perintah SETELAH. (disarankan: $spool/callout)
pembersihan Periode pembersihan untuk entri database. Nilai pembersihan terakhir disimpan
ke dalam file konteks. Ini opsional, tetapi diperlukan jika autoclean aktif.
(disarankan: 1M)
kompile Nama file yang berisi perintah resmi. Dibutuhkan saat PROCESS digunakan.
(disarankan: $spool/commands).
kompres Nama file yang berisi daftar folder terkompresi. Lihat bagian tentang
kompresi folder. Ini adalah parameter opsional. (disarankan: ~/.kompres).
spesifikasi Nama file yang berisi spesifikasi cara menangani berbagai jenis
format kompresi. Lihat bagian tentang kompresi folder. Ini adalah opsional
parameter. (disarankan: $spool/kompresor).
comptag Tag kompresi default saat membuat folder baru. Jika tidak ditentukan,
defaultnya adalah 'gzip'.
server com Nama file yang berisi perintah SERVER resmi dan definisinya.
Ini adalah parameter opsional jika Anda tidak berencana menggunakan server email generik.
(disarankan: $spool/server).
konteks File yang memegang konteks agen surat. Konteks menyimpan beberapa variabel yang perlu
untuk disimpan selama umur proses. Diperlukan jika pembersihan otomatis diaktifkan.
(disarankan: $spool/context)
daftar distilasi Daftar semua distribusi yang tersedia. Lihat sampel yang ada di
Lib/agen surat/distribusi. Dibutuhkan oleh PROSES saja. (disarankan: $spool/distribs)
domain Nama domain Anda, tanpa titik di depan, seperti pada example.com. Nilainya adalah
ditambahkan ke nilai email ketika variabel itu tidak memiliki '@', untuk
buat alamat email yang sepenuhnya memenuhi syarat. Lihat juga persembunyian variabel.
(opsional, default ke nama domain yang ditentukan pada waktu pembuatan).
email Alamat surat elektronik Anda. Jika dibiarkan tidak ditentukan, agen surat akan mencoba menebak
dia. Alamat ini digunakan oleh agen surat ketika mencoba mengirim sesuatu ke pengguna
(Anda!). (disarankan: tentukan alamat email Anda).
emergdir Nama direktori yang harus digunakan untuk dump, lebih disukai. Ini adalah
opsional. (disarankan: ~/tmp/hilang+surat)
execsafe Apakah harus ketat sebelum menggunakan exec () untuk meluncurkan proses baru atau tidak. NS
nilai variabel ini digunakan sebagai pengganti aman saat memeriksa executable
file. (default ke OFF, disarankan: ON jika memungkinkan).
lewati Apakah akan melewatkan exec () pemeriksaan keamanan secara keseluruhan. Jangan AKTIFKAN ini
kecuali Anda benar-benar mempercayai semua pengguna yang memiliki akses ke mesin atau file Anda
server. (opsional, default ke OFF, disarankan: OFF).
dari semua Apakah atau tidak agen surat harus lolos dari semua Mulai dari baris dalam pesan, bukan
hanya yang dianggap berbahaya (yaitu a Mulai dari setelah baris kosong).
Opsi ini hanya masuk akal ketika dariesc juga diaktifkan. Itu diabaikan
jika tidak, dan karena itu opsional. Secara default, ini dianggap OFF.
(disarankan: NONAKTIF, hingga Anda memiliki alasan untuk meyakini bahwa agen pengguna email Anda adalah
bingung dalam mode ini: ketika itu terjadi, agen pengguna Anda akan membagi email untuk no
alasan yang jelas).
dariesc Apakah atau tidak agen surat harus melarikan diri berpotensi berbahaya Mulai dari baris dalam surat
pesan. Jika Anda menggunakan MH atau jika pembaca email Anda tidak menggunakan baris tersebut untuk
pesan terpisah, maka Anda dapat mengaturnya ke OFF. (disarankan: AKTIF)
dari palsu Apakah atau tidak agen surat harus memalsukan baris From: ke dalam header pesan ketika
itu tidak ada. Secara alami, ini membutuhkan jalur Dari terkemuka yang valid untuk beroperasi!
(opsional, default ke ON, disarankan: ON).
aman untuk grup Jika dimatikan, file yang dapat ditulis grup akan dikelola seolah-olah mereka aman,
dari segi keamanan. Biarkan ke ON jika memungkinkan, atau Anda dapat melewati a
lubang keamanan besar tanpa Anda sadari (opsional, default ke AKTIF, disarankan:
PADA).
hash Direktori yang digunakan untuk hashing nama oleh database bawaan yang digunakan oleh ONCE,
Perintah UNIK dan REKAM. Opsional, kecuali jika Anda menggunakan perintah tersebut atau
aktifkan pembersihan otomatis. Direktori ditempatkan di area spool. (disarankan:
$spul/dbr).
pembantu Direktori tempat file bantuan untuk perintah SERVER disimpan. (disarankan:
$spool/bantuan)
persembunyian Saat disetel ke ON, nilai variabel domain adalah nama yang sepenuhnya memenuhi syarat
digunakan. Saat OFF, nama host ditambahkan ke domain. Jika nama hostnya adalah
sudah memenuhi syarat, maka nilai domain diabaikan. dengan asumsi domain
diatur ke example.com dan nama hostnya adalah tuan rumah, maka nama yang sepenuhnya memenuhi syarat
akan host.contoh.com if persembunyian MATI, dan example.com jika AKTIF. (opsional,
default ke apa pun yang ditentukan pada waktu pembuatan)
rumah Mendefinisikan di mana direktori home berada. Ini harus akurat.
tingkat Level log, lihat di bawah untuk definisi level yang tersedia (disarankan: 9).
linkdir Saat disetel ke AKTIF, periksa tautan simbolis ke direktori dengan hati-hati saat tampil
pemeriksaan keamanan pada file sensitif. Ini akan (secara rekursif) memeriksa masing-masing
tingkat tautan simbolik bahwa direktori target tidak dapat ditulis atau grup dunia
dapat ditulis dan direktori induk dari setiap tautan target bukan dunia
dapat ditulis. jika aman opsi OFF, parameter ini diabaikan. (opsional,
default ke: ON, disarankan: ON saat secure juga ON).
lockdekay Penundaan dalam hitungan detik antara dua upaya penguncian. (opsional, default ke: 2).
kunci Penundaan maksimum dalam detik untuk menahan kunci. Setelah waktu itu, kunci akan
menjadi rusak. (opsional, default ke: 3600).
lockmax Jumlah maksimum upaya penguncian sebelum menyerah. (opsional, default ke:
20).
pengaman kunci Saat mengunci file, agen surat biasanya membuat lockmax upaya dipisahkan oleh
penundaan penguncian detik, lalu menyerah. Saat menghadapi pengiriman ke kotak surat, itu
mungkin masuk akal untuk melanjutkan meskipun tidak ada kunci yang diambil, atau bahkan jika hanya
penguncian sebagian telah dilakukan (misalnya salah satu penguncian gaya .lock atau kawanan()
berhasil). Variabel ini mengontrol seberapa aman yang Anda inginkan. Setel ke OFF untuk membiarkan
agen surat melanjutkan pengiriman kotak suratnya meskipun tidak ada penguncian yang dilakukan, menjadi ON
jika Anda ingin penguncian yang ketat, ke PARTIAL jika Anda dapat hidup dengan penguncian sebagian.
Pesan yang tidak disimpan dalam folder dibuang ke kotak surat darurat. (opsional,
default ke ON). Pada sistem Debian, karena agen surat tidak bisa mengambil kunci, seharusnya
selalu dibiarkan AKTIF, atau mail garbling dapat terjadi. Lihat
/usr/share/doc/mailagent/SECURITY untuk rincian.
peringatan kunci Variabel ini mengontrol waktu setelah itu agen surat harus mulai memancarkan
peringatan ketika sibuk mencoba untuk mendapatkan kunci. Ini adalah daftar yang dipisahkan koma dari
nilai, dalam detik. Jika dua nilai diberikan, yang pertama adalah waktu awal
ambang batas, yang kedua adalah periode pengulangan. Misalnya, nilai "15,60"
akan menyebabkan peringatan setelah 15 detik, lalu setiap 60 detik hingga kuncinya
diambil atau waktu upaya penguncian telah kedaluwarsa (lihat lockmax dan penundaan penguncian). Jika
hanya satu nilai yang diberikan, itu diambil sebagai ambang awal dan
Titik. (opsional, default ke: 20,300).
mencatat Nama file log yang akan dimasukkan ke dalam direktori Log. (disarankan: agentlog).
logdir Direktori pencatatan. (disarankan: ~/var/log).
kotak surat Nama file kotak surat sistem, yang secara default adalah nilai dari pemakai
variabel konfigurasi. Ini adalah parameter opsional.
kiriman surat Lokasi direktori spool surat sistem. Jika tidak ada yang disediakan, maka
mailagent akan menggunakan nilai yang ditentukan oleh Configure.
pengambilan surat Opsi untuk diteruskan ke pengirim (lihat kirim email). (opsional, disarankan: -odq
-i, saat menggunakan sendmail).
maxcmds Jumlah maksimum perintah yang diizinkan untuk dieksekusi oleh perintah SERVER
sebelum membilas sisa pesan email. (disarankan: 10).
kesalahan maksimal Jumlah kesalahan maksimum untuk perintah SERVER sebelum menghapus sisa
pesan surat. (disarankan: 10).
ukuran maksimal Ukuran maksimum dalam byte file sebelum digunakan kit untuk mengirim file. Ini digunakan
oleh PROSES. (disarankan: 150000).
kunci kotak Format yang akan digunakan untuk mengunci kotak surat sebelum mengirimkannya. Ini
string melewati mekanisme substitusi makro kecil untuk membuatnya lebih
umum. Nama file yang diturunkan setelah substitusi makro adalah nama kunci
yang akan digunakan, diberi nama file yang akan dikunci. Tersedia
makro adalah:

%D: nama direktori file
%f: nama file yang akan dikunci (path lengkap)
%F: nama basis file (komponen jalur terakhir)
%p: nomor pid proses saat ini
%%: karakter % polos

Format penguncian yang umum adalah "%f.lock" dan "%D/.%F.lock". Tentu saja, untuk bisa
gunakan fitur ini, agen surat tidak boleh dikonfigurasi untuk menggunakan gaya-kawanan ()
penguncian saja. (opsional, default ke: %f.lock). Ini tidak berpengaruh pada Debian
sistem, karena agen surat tidak bisa mendapatkan kunci, karena itu bukan sgid mail.
profil Nama profil MH yang akan digunakan. Ini diperlukan hanya ketika mencoba untuk
simpan di folder MH. Jika parameter opsional ini tidak disetel, nilai default
~/.mh_profile digunakan.
mmdf Setel ini ke AKTIF jika Anda ingin dapat menyimpan email dalam kotak surat bergaya MMDF.
(disarankan: OFF, kecuali jika Anda menggunakan MMDF atau MH). Ini tidak valid pada sistem Debian.
kotak mmdf Nilai variabel ini hanya penting ketika mmdf aktif. Jika disetel ke ON, maka baru
folder akan dibuat sebagai folder MMDF. Variabel ini tidak digunakan saat menyimpan ke
folder yang ada, karena dalam hal ini agen surat otomatis akan
tentukan jenisnya dan simpan pesan yang sesuai. (disarankan: MATI, kecuali
Anda menggunakan MMDF atau ingin menggunakan MH's mshf).
msgprefix Nama file untuk dimasukkan ke dalam folder direktori, menentukan awalan pesan ke
digunakan. Opsional, default ke .msg_prefix.
nama Nama depan pengguna, digunakan oleh agen surat ketika merujuk kepada Anda. Ini menetapkan
nilai makro %U.
cmd baru Nama file yang menjelaskan perintah pemfilteran baru. Lihat bagian Memperluas
Penyaringan Perintah untuk lebih jelasnya. Biarkan parameter opsional ini keluar kecuali
Anda adalah ahli agen surat. (disarankan: $spool/newcmd).
opsi berita Opsi untuk diteruskan ke program posting berita (lihat kirim berita). (opsional,
disarankan: biarkan kosong saat menggunakan inews).
nfslock Setel ke ON untuk memastikan kunci NFS-secure. Perbedaannya adalah bahwa nama hostnya adalah
digunakan bersama dengan PID untuk mendapatkan kunci. Namun, agen surat harus
fork/exec untuk mendapatkan informasi tersebut. Ini adalah parameter opsional yang disetel
ke OFF secara default. (disarankan: OFF jika Anda mengirim email hanya dari satu mesin,
meskipun melalui NFS).
passwd File tempat kata sandi daya SERVER disimpan -- biasanya dienkripsi. (disarankan:
$kekuatan/passwd).
path Jalur minimum yang akan digunakan oleh program filter C. Untuk menetapkan jalur khusus untuk a
mesin tuan rumah, atur p_host variabel. Ini akan menjadi ditambahkan ke default
PATH variabel yang disediakan oleh program lain. (disarankan: /tempat sampah:/ usr / bin:/usr/ucb).
Perhatikan bahwa nama host harus ditentukan tanpa nama domain yang ditambahkan ke dalamnya
(misalnya untuk nama host dari lyon.eiffel.com, gunakan variabel p_lyon). Jika tuan rumah Anda
nama mengandung '-' di dalamnya, Anda harus menulisnya sebagai '_', karena '-' tidak valid
karakter untuk perl nama variabel.
perlib Variabel ini dapat digunakan untuk mengubah jalur pencarian perl untuk file yang diperlukan.
Direktori harus dipisahkan menggunakan karakter ':', seperti PATH shell.
Jalur ini ditambahkan ke jalur pencarian perl default. Direktori mana pun tidak
dimulai dengan '/' (setelah substitusi ~nama) diambil relatif ke
direktori lib pribadi mailagent ditentukan pada waktu konfigurasi.
tolong simpan Nama file yang digunakan untuk menyimpan patchlevel untuk distribusi yang diarsipkan. Ini
hanya digunakan oleh perintah yang dipanggil melalui PROCESS. (disarankan: $spool/plsave).
powerdir Direktori yang mencantumkan izin pengguna untuk kekuatan SERVER. (disarankan:
$kekuatan/izin)
daftar kekuatan Nama file yang mengandung alias daya SERVER. Karena nama kekuatan bisa sewenang-wenang
panjang tetapi beberapa sistem file masih memiliki batasan 14 karakter pada nama file
panjang, alias internal dibuat dan dikelola oleh agen surat. (disarankan:
$kekuatan/alias).
powerlog File tempat permintaan daya SERVER dicatat, selain agentlog. Sejak
itu adalah masalah keamanan, ada baiknya untuk mencatatnya secara terpisah. Jika tidak
didefinisikan, log mereka hanya di agentlog. (disarankan: $logdir/powerlog).
kekuatan Direktori untuk administrasi daya SERVER. (disarankan: $spool/powers)
pembuat program Deskripsi kecil untuk distribusi yang tersedia. Lihat sampel yang ada di
Lib/agen surat/proglist. Ini hanya digunakan oleh PROCESS. (disarankan:
$spool/proglist)
antre Direktori antrian (pesan menunggu untuk diproses). Diperlukan, tentu saja.
(disarankan: $spool/antrian)
antrian Jumlah detik maksimum sebuah surat dapat berada di antrian agen surat sebelum dikirim
benar-benar diproses. Selama waktu itu, agen surat tidak akan mencoba memproses
pesan bahkan ketika -q digunakan. (opsional, default ke: 1800).
antrian hilang Jumlah detik maksimum setelah itu agen surat harus menandai pesan masih dalam
antriannya sudah tua. (opsional, default ke: 86400, yaitu sehari).
antriantunggu Waktu dalam detik memberi tahu C menyaring program berapa lama harus menunggu sebelumnya
peluncuran agen surat. (opsional, default ke: 60, tetapi dapat diturunkan ke 0 jika Anda
tidak ingin menunggu untuk menunda mendapatkan pesan baru).
tembolok aturan Nama file yang digunakan untuk men-cache aturan kompilasi terbaru. Karena biasanya
agen surat bekerja terutama dengan satu file aturan yang sama, ini menghemat overhead
mengkompilasi ulang semua aturan setiap kali. (opsional, disarankan: $spool/rulecache).
aturan Setel ini ke AKTIF untuk mengaktifkan substitusi makro dalam pola aturan. (opsional,
default ke: OFF).
aturan Nama file yang memegang aturan penyaringan (opsional pada non Debian
sistem, disarankan: ~/.aturan). Pada sistem Debian, seseorang harus memiliki aturan minimal
file untuk mencegah agen surat dari mencoba memasukkan pesan ke dalam
/var/spool/mail/$ PENGGUNA, karena agen surat tidak dapat mengunci direktori itu untuk mencegah surat
dari menjadi kacau. Ini karena kebijakan Debian mengharuskan semua entitas
mencoba mengunci direktori itu menjadi SGID surat, dan membuat agen surat SGID
apapun akan menjadi celah keamanan.
{ SIMPAN masuk };
adalah file aturan minimal yang disarankan.
runmax Batas waktu untuk perintah RUN dan teman-teman. (opsional, default ke: 3600).
skripcc Bendera yang menunjukkan apakah salinan transkrip sesi SERVER harus dikirim
kepada pengguna yang menjalankan agen surat. (disarankan: MATI).
aman Saat disetel ke AKTIF, agen surat dan filter C akan melakukan keamanan ekstensif
memeriksa file sensitif. Ini termasuk pemeriksaan untuk kemampuan menulis grup,
pengujian kepemilikan dan perlindungan pada direktori tempat file berada, dan
memeriksa tautan simbolik ke direktori (khusus agen surat, saat tautan AKTIF
juga). Perhatikan bahwa aman diasumsikan AKTIF, apa pun pengaturannya yang sebenarnya, ketika
berjalan sebagai pengguna super. (disarankan: AKTIF).
kirim email Nama program yang digunakan untuk mengirim email. Program itu harus menerima surat
pesan dengan header pada input standarnya dan daftar penerima di
garis komando. Jika tidak ditentukan, akan menggunakan mailer yang dipilih pada waktu konfigurasi
(biasanya mengirim email). Baris perintah yang digunakan untuk mengirim pesan adalah kirim email
pengambilan surat alamat). (opsional, disarankan: /usr/lib/sendmail).
kirim berita Nama program yang digunakan untuk memposting berita. Program itu harus menerima berita
artikel dengan header pada input standarnya. Jika tidak ditentukan, akan menggunakan berita
memposting program yang dipilih pada waktu konfigurasi (biasanya inews). Baris perintah
digunakan untuk memposting artikel adalah kirim berita -h opsi berita. (opsional, disarankan:
/usr/local/bin/inews).
seq File yang digunakan untuk menghitung nomor pekerjaan (disarankan: .seq).
pelayan Nama direktori tempat perintah server shell dan perl disimpan. Ini adalah
tempat pencarian default. Parameter opsional kecuali SERVER digunakan. (disarankan:
$spul/cmds).
servshell Ini adalah nama shell yang digunakan untuk meluncurkan perintah shell SERVER (sebenarnya untuk
memproses file pembungkus yang pada akhirnya akan mengeksekusi () perintah). Pada beberapa
sistem seperti HPUX 10.x, ini harus disetel ke /usr/old/bin/sh untuk mendapatkan yang polos
cangkang Bourne tua, karena / Bin / sh adalah shell POSIX braindead yang menutup file
deskriptor lebih besar dari 2 pada exec(), sedangkan shell Bourne tidak.
(opsional, disarankan: / Bin / sh kecuali Anda menggunakan HPUX 10.x, seperti yang dijelaskan sebelumnya).
kumparan Direktori spool, diperlukan (disarankan: ~/var/agen surat).
file status File tempat statistik harus dikumpulkan. Jika tidak ada file seperti itu, tidak ada statistik
akan direkam (disarankan: $spool/mailagent.st).
palsu Apakah atau tidak agen surat harus memalsukan baris To: ke dalam header pesan saat itu
tidak ada, yang akan digunakan untuk tujuan penyaringan (tidak ada perubahan fisik dari
header terjadi). Ia menggunakan Alternate-To: header jika ditemukan, jika tidak maka diasumsikan
pesan dikirim ke pengguna dan mengambil nilai dari pemakai konfigurasi
variabel. (opsional, default ke AKTIF, disarankan: AKTIF; MATIKAN hanya jika Anda
ingin mengidentifikasi hilang Ke: baris untuk mendeteksi SPAM).
jilid Variabel opsional ini mungkin berisi daftar login alternatif yang dipisahkan koma
yang juga berlaku untuk pengguna (mail alias). Ini digunakan dalam mode liburan
untuk memeriksa apakah surat telah dikirim ke pengguna atau ke milis. Cocok
berlabuh pada nama login, jadi mengatakan "ro*" akan cocok dengan keduanya akar dan ROM.
jalur Mulai on (tidak peka huruf besar/kecil), ini akan mengaktifkan -t opsi yang melacak semua
kecocokan aturan dan tindakan pada output standar. Ini opsional (disarankan:
MATI).
zona Nilai zona waktu untuk variabel lingkungan TZ (opsional).
tmpdir Direktori untuk file sementara. Diperlukan (disarankan: / Tmp).
umask Umask default yang disetel ulang oleh agen surat sebelum memproses pesan. Diasumsikan
menjadi desimal kecuali dimulai dengan '0' (untuk oktal) atau '0x' (untuk heksadesimal).
Format oktal adalah cara termudah untuk menentukannya. (opsional,
default ke: 077).
pemakai Nama login pengguna yang menjalankan agen surat. Ini menetapkan nilai makro %u.
liburan Bendera diatur ke ON atau OFF untuk mengganti mode liburan yang sesuai.
file vaksin Nama file yang akan dikirim kembali dalam mode liburan (disarankan: ~/.liburan).
divaksinasi Saat AKTIF, semua perubahan pada file liburan (bahkan secara lokal) melalui
Perintah VACATION dilarang. Ini berguna jika Anda biasanya memiliki banyak
pesan liburan yang disesuaikan untuk orang yang berbeda tetapi untuk sementara ingin memaksa
satu pesan unik (opsional, default ke: OFF).
masa kosong Waktu minimum yang berlalu antara dua pesan liburan ke alamat tertentu
(disarankan: 1d).

Tersedia Logging tingkat
Level log berikut dapat digunakan saat menjalankan agen surat:

0 Tidak ada pencatatan
1 Masalah utama saja
2 pengiriman gagal
3 Pengiriman sukses
4 pesan yang ditangguhkan
5 tindakan filter yang berhasil
6 Insiden yang tidak biasa tapi tidak berbahaya
7 pesan informatif
8 Tindakan filter non-pengiriman
9 Penerimaan surat
12 Men-debug
19 Bertele-tele
20 Lebih banyak verbose

Mencolokkan Agen surat
Setelah Anda mengonfigurasi agen surat di a ~/.mailagent (dimana ~ singkatan dari rumah Anda
direktori), Anda harus memberi tahu kirim email cara memohonnya. Hal ini dilakukan dengan menetapkan ~/.maju
file yang terlihat seperti ini (tanda kutip ganda di depan dan di belakang adalah bagian wajib dari
dia):

"| exec /users/ram/mail/filter >>/users/ram/.bak 2>&1"

Ini akan menyalurkan semua email Anda ke menyaring program, mengarahkan semua pesan yang tidak biasa ke
~/.bak. Contoh skrip shell filter dapat ditemukan di Lib/agen surat, serta filter C
program. Pada beberapa sistem, mungkin perlu untuk memindahkan '|' karakter sebelum memimpin
kutipan, tapi jangan coba ini kecuali Anda tidak punya pilihan lain (yaitu hanya sebagai pilihan terakhir).
Juga, rupanya Exim mengambil pengecualian ke exec, dan bahkan mungkin ke pengalihan --
yang akan sangat disayangkan.

Hal ini sangat penting untuk mengarahkan pesan kesalahan ke beberapa file dalam direktori home Anda.
Untuk satu hal, itu akan membuatmu keluar dari masalah jika hal-hal aneh mulai terjadi, tapi
lebih tepatnya, itu membuat Anda .maju file yang unik. Lebih tua kirim email program, dalam sebuah
upaya heroik untuk "mengoptimalkan" pengiriman, diam-diam akan menghapus penerima duplikat, dan jika a
penerima memiliki .maju, konten literalnya digunakan sebagai pengganti alamat emailnya.
Oleh karena itu, dua penerima lokal dengan string pemfilteran yang sama akan dianggap sebagai satu
penerima unik dan hanya satu dari mereka yang akan menerima pesan...

Jika sistem Anda tidak mengizinkan pengalihan shell dari dalam .forward, Anda dapat menggunakan ini
sebagai gantinya (hanya didukung oleh filter C):

"| exec /users/ram/mail/filter -o /users/ram/.bak"

yang pada dasarnya mengalihkan stdout dan stderr ke file yang ditentukan untuk Anda, menambahkan data
di akhir file. Jika filter menjalankan setuid atau setgid, Anda tidak akan diizinkan untuk
membuat file, atau menambahkannya kecuali pemilik file adalah nyata pemanggilan uid
program (untuk alasan keamanan).

Perhatikan bahwa .maju file hanya menyalurkan surat ke menyaring program dan tidak meninggalkan
salinan apa pun di kotak surat. Terserah Anda untuk memutuskan dalam file aturan apakah Anda ingin
membuang surat atau meninggalkannya di kotak surat. (Perhatikan bahwa pada sistem Debian agen surat bisa
tidak mengunci direktori spool, dan membiarkannya meninggalkan email di kotak surat dapat menyebabkannya mendapatkan
kacau). Jika Anda tidak memiliki file aturan (yaitu Anda meninggalkan entri kosong di
~/.mailagent, atau Anda menamai file yang tidak ada, atau file Anda hanya kosong), the
tindakan default adalah meninggalkan surat di kotak surat, yang bukan ide yang baik untuk Debian
mesin. Harap instal file aturan minimal dalam hal apa pun,
{ SIMPAN masuk };
adalah file aturan minimal yang disarankan.

Diizinkan Perintah
File perintah yang diizinkan (seperti yang ditentukan oleh kompile variabel di Anda ~/.mailagent)
berisi semua perintah yang dikenali dan diizinkan. Berkas perintah diadakan di direktori
Lib/agen surat harus disalin apa adanya ke dalam direktori Spool Anda.

pengujian Anda Instalasi
Sekarang, dengan asumsi Anda telah menetapkan yang tepat ~/.mailagent file dan edit bagian konfigurasi
dari menyaring, sekarang saatnya untuk menguji instalasi Anda. Pastikan Anda .maju adalah dunia
dapat dibaca dan bahwa menyaring memiliki bit eksekusi yang ditetapkan (tidak ada alasan untuk membuat
menyaring dapat dibaca dunia). Tetapkan level log 20 dan nonaktifkan mode liburan ( liburan
entri dalam ~/.mailagent harus MATI). Setel nama file aturan menjadi file
berisi aturan catch-all:
{ SIMPAN masuk };
Anda siap untuk melanjutkan...

Kirimkan email kepada diri Anda sendiri dan berikan waktu kepada agen surat untuk memproses email Anda. subjek dari
pesan harus 'test' (sebenarnya, apa pun kecuali 'Command'). Anda mungkin ingin menjalankan "ekor
-f file log" untuk melihat apa yang terjadi. Di akhir pemrosesan, file log harus
mengandung sesuatu seperti berikut (nama sementara mungkin -dan akan- tentu saja
berbeda; cap waktu telah dihapus):

mendapat hak untuk memproses surat
membangun aturan default
menguraikan surat
menganalisis surat
dalam mode 'INTIAL' untuk SEMUA
pemilih 'Semua' pada '<1,->', pola '/^Subjek: [Cc]perintah/'
pencocokan '/^Subjek: [Cc]perintah/' pada 'Semua' (<1,->) salah
pemilih 'Semua' pada '<1,->'
cocok . di 'Semua' (<1,->) benar
simpan di folder masuk
XEQ (PERGI)
mulai TINGGAL
mulai SAVE /home/ram/mail/incoming
SIMPAN [qm7831] di folder masuk
FILTER [qm7831] dari ram (Raphael Manfredi)
agen surat berlanjut
agen surat keluar

Jika Anda tidak mendapatkan itu, ada masalah di suatu tempat. Mulailah dengan melihat ~/.bak fillet
(atau file apa pun yang .maju menggunakan untuk mengarahkan output filter). Jika kamu melihat
sesuatu seperti:

FATAL tidak ada direktori antrian yang valid
dibuang di ~/mbox.filter

maka itu berarti antre parameter di Anda ~/.mailagent tidak menunjuk ke valid
direktori. Surat Anda telah dibuang di kotak surat darurat.

~/.bak file mungkin juga berisi pesan kesalahan yang menyatakan bahwa perl tidak ditemukan. Karena
kasus, harus ada pesan kesalahan di file log:

ERROR mailagent gagal, [qm7886] tertinggal dalam antrian

Dalam hal ini, pastikan email telah diantrekan dengan benar dalam file qm7886. Antrian
akan diproses kembali ketika surat lain datang atau ketika agen surat dipanggil dengan -q
(namun, untuk menghindari kondisi balapan, hanya surat yang bertahan untuk sementara waktu yang akan
diproses).

Antrian surat juga terjadi ketika yang lain agen surat sedang berlari. Jika file log mengatakan:

ditolak haknya untuk memproses surat

kemudian hapus perl.lock file di direktori Spool. File kunci lama secara otomatis
dibuang oleh agen surat tetap (setelah satu jam).

Jika tidak ada yang terjadi, maka mungkin kirim email tidak memproses ~/.maju sama sekali atau
file memiliki kesalahan sintaks. Periksa kotak surat Anda, dan jika surat Anda ada di sana, Anda .maju
belum diproses. Jika tidak, minta administrator sistem Anda untuk memeriksa kirim email's
berkas log Entri yang benar akan muncul sebagai (dengan stempel waktu dan stempel syslog terkemuka
DIHAPUS):

ID-pesan=[email dilindungi]>
from=ram, size=395, class=0, diterima dari lokal
to="| /york/ram/mail/filter >>/york/ram/.bak 2>&1", delay=00:00:05, stat=Terkirim

Jika Anda masih tidak dapat menemukan mengapa email tidak diproses dengan benar, Anda harus memastikan
Anda biasanya menerima email dengan menghapus (atau mengganti nama) Anda ~/.maju dan mengirim dirimu sendiri
surat tes lainnya. Pastikan juga direktori home Anda dapat dibaca dunia dan "dapat dieksekusi".

Jika Anda menggunakan filter C, pastikan itu berjalan di platform yang tepat. Disana mungkin
menjadi perutean tingkat rendah dari semua email Anda ke a tuan rumah surat mesin, bertanggung jawab untuk final
pengiriman, dan program filter akan berjalan di mesin itu, yang mungkin berbeda
platform daripada yang Anda kompilasi filter. Pastikan juga direktori home Anda adalah
dipasang pada mesin itu, atau agen pengiriman surat tidak akan dapat menemukan
.maju file, kurang proses itu.

Pengiriman surat terpusat semacam ini hanya baik jika beberapa orang memiliki pemrosesan surat
kait (yaitu .maju file perpipaan surat ke program); jika tidak, lebih baik merutekan email
ke stasiun kerja atau mesin setiap pengguna, untuk pemrosesan lokal, untuk menghindari kelebihan
beban kerja pada tuan rumah surat mesin, terutama jika itu adalah server NFS khusus. Jika kamu adalah
administrator sistem menginstal agen surat dan berharap banyak orang menggunakannya, simpan ini di
pikiran.

PILIHAN


Ada serangkaian opsi terbatas yang dapat digunakan saat menghubungi agen surat secara langsung.
Hanya satu opsi khusus pada satu waktu yang dapat ditentukan. Memanggil agen surat sebagai antrian surat is
setara dengan menggunakan -l .

-c fillet Tentukan file konfigurasi alternatif (~ terjadi substitusi). NS
defaultnya adalah ~/.mailagent.

-d Agen surat mem-parsing file aturan, mengkompilasi aturan dan membuangnya
keluaran standar. Opsi ini terutama digunakan untuk memeriksa sintaks dari
file aturan dan pastikan aturannya benar-benar sesuai dengan yang dipikirkan pengguna.

-e memerintah Opsi ini memungkinkan Anda menentukan beberapa aturan pada baris perintah, yang akan
menimpa yang ditentukan melalui ~/.mailagent, jika ada. Mungkin ada banyak
-e jika perlu, semua aturan digabungkan menjadi satu bahagia
array, yang kemudian diuraikan dengan cara yang sama seperti file aturan. Jika hanya satu memerintah
diberikan dan tidak ada tindakan yang ditentukan antara {...} kurung kurawal, maka
seluruh garis diapit di antara kurung kurawal. Oleh karena itu mengatakan -e 'MENYIMPAN foo' akan
dipahami sebagai -e '{MENYIMPAN makanan}', yang akan selalu cocok dan dieksekusi.
Menggunakan -d opsi dalam hubungannya dengan yang satu ini adalah cara yang nyaman untuk
men-debug seperangkat aturan.

-f berkas surat Menggunakan berkas surat sebagai kotak surat bergaya UNIX (yaitu kotak di mana setiap surat berada
didahului oleh baris Dari khusus yang menyatakan pengirim dan tanggal pesan
dikeluarkan), ekstrak semua pesannya ke dalam antrian dan proses seolah-olah
mereka baru saja tiba dari subsistem pengiriman surat.

-F Memaksa pemrosesan pada pesan yang sudah dilihat. Biasanya, agen surat memasuki
khusus _MELIHAT_ menyatakan saat mendeteksi Filter-X: garis yang dikeluarkan dengan sendirinya,
tetapi opsi ini akan membuatnya berlanjut seperti biasa (meskipun pesan liburan
dinonaktifkan). Gunakan opsi ini ketika email pasca-pemrosesan sudah difilter.
Lihat juga -U beralih jika Anda menggunakan tindakan REKAM atau UNIK di
beberapa peraturan.

-h Cetak pesan penggunaan pada kesalahan standar dan keluar.

-i Mode interaktif, mengarahkan agen surat untuk mencetak salinan semua pesan log
on stderr.

-I Instal a ~/.mailagent file dari template, atau gabungkan konfigurasi baru
variabel ke dalam file yang ada; kemudian lakukan pemeriksaan kewarasan dan buat
file atau direktori wajib. Opsi ini dapat dilihat sebagai bantuan untuk
menyiapkan agen suratlingkungan. Bagaimanapun, yang dibuat/digabung
~/.mailagent file harus diverifikasi secara manual sebelum membiarkan agen surat transaksi
dengan surat Anda dengan menghubungkannya ke ~/.maju.

-l Daftar antrian agen surat. Surat antri baru-baru ini yang ditunggu oleh
menyaring adalah dilewati selama sekitar setengah jam, untuk menghindari kondisi balapan. Ini
dapat dikonfigurasi melalui antrian variabel. Pesan yang sangat lama (selengkapnya
dari antrian hilang detik) ditandai dengan karakter '#'. Pesan keluar
antrian (antre variabel) ditandai dengan '*', sementara pesan lama
keluar dari antrian ditandai dengan '@'. Pesan yang dikunci memiliki '*'
ditambahkan ke status mereka.

-L tingkat Ganti level log yang ditentukan dalam file konfigurasi.

-o mengesampingkan Opsi ini memungkinkan Anda mengganti opsi konfigurasi tertentu. Pilihan
harus diikuti oleh baris konfigurasi yang valid, yang akan diuraikan setelah
file konfigurasi itu sendiri. Misalnya, -L 4 pilihan sepenuhnya
setara dengan -o 'tingkat: 4'. Perhatikan bahwa ruang putih apa pun harus dilindungi
terhadap interpretasi shell dengan menggunakan mekanisme kutipan yang sesuai.
Mungkin ada banyak -o pilihan pada baris perintah yang diperlukan.

-q Memaksa pemrosesan antrian agen surat. Hanya surat yang tidak ditandai sebagai dilewati
oleh -l pilihan akan diproses.

-r fillet Tentukan file aturan alternatif.

-s {umaryt} Buat ringkasan dari semua statistik yang dikumpulkan sejauh ini. Keluarannya bisa berupa
dikontrol dengan menambahkan satu atau lebih huruf dari himpunan {umaryt}. Menggunakan
-Ringkasan adalah cara mudah untuk mendapatkan seluruh riwayat filter
tindakan. NS u pengubah hanya akan mencetak aturan yang digunakan. NS m akan menggabungkan semua
statistik di akhir sementara a melaporkan mode filter saat
perintah itu dieksekusi. NS r meminta statistik berbasis aturan dan y is
sangat tidak berguna dan di sini hanya untuk mendapatkan opsi mnemonic yang bagus. Perhatikan bahwa
menentukan opsi lebih dari sekali tidak berpengaruh apa pun pada opsi tersebut
sendiri (yaitu Anda dapat menempatkan tiga Uu dan hanya satu m, tetapi Anda masih akan mendapatkan
Ringkasan!). NS t huruf dapat diikuti oleh angka yang menentukan berapa banyak aturan
versi file relatif terhadap file aturan paling atas (paling baru) yang harus kita
ekstrak dari statistik, jumlah itu default ke 1: menggunakan -surat akan
cetak laporan statistik lengkap untuk versi terakhir aturan Anda,
sementara -surt12a akan melakukan hal yang sama untuk dua belas versi terakhir dari yang sama
aturan.

-t Tempatkan agen surat dalam mode pelacakan khusus di mana semua aturan cocok dan
tindakan yang dieksekusi dicetak pada output standar. Ini sebagian besar berguna
untuk men-debug file aturan. Lihat juga jalur parameter di
file konfigurasi.

-V Cetak nomor versi dan keluar.

-U Cegah perintah UNIQUE dan RECORD agar tidak menolak perintah yang sudah diproses
Message-ID saat pertama kali dijalankan pada pesan tertentu. Ini berguna
saat memproses pesan yang telah dijatuhkan di emergdir direktori
karena beberapa kondisi abnormal (tetapi sementara) dan Anda ingin memproses ulang
pesan. Lihat juga -F beralih jika Anda memproses ulang pesan.

Jika Anda memanggil agen surat tanpa opsi dan tanpa argumen apa pun, program akan menunggu a
mail pada input standarnya. Jika argumen diberikan, itu adalah nama file yang disimpan
satu surat untuk diproses. Ini adalah prosedur pemanggilan normal dari filter,
argumen menjadi lokasi surat antri.

MENGGUNAKAN THE DEFAULT ATURAN


Jika Anda tidak ingin menggunakan fitur penyaringan agen surat, (CATATAN: Ini dapat menyebabkan email
menjadi kacau pada sistem Debian, karena agen surat tidak dapat mengunci direktori spol di bawah
Pembatasan kebijakan Debian) maka aturan bawaan bawaan akan digunakan. Yaitu
sangat sederhana: semua surat tertinggal di kotak surat Anda dan surat dengan baris "Subjek:
Perintah" di mana saja dalam pesan akan diproses. Perintah dicari di baris
dimulai dengan "@SH". Sisa dari baris kemudian diberikan ke shell untuk dieksekusi.

Perintah yang tersedia dibaca dari file (entry kompile di file konfigurasi Anda), satu
nama perintah per baris. Hanya mereka yang terdaftar di sana yang akan dieksekusi, yang lain akan menghasilkan
pesan eror. Agen surat menjebak status keluar dan akan mengirim laporan kesalahan jika a
perintah gagal (asalkan perintah tidak mengeluarkan pesan dengan sendirinya, dalam hal ini
itu harus mengembalikan status keluar nol).

Jika Anda tidak ingin menggunakan aturan default, Anda dapat melewati sisa bagian ini.

Mengkonfigurasi Bantuan
Agen surat teks bantuan yang akan dikirim ke orang-orang harus disalin dari Lib/mailagent/agenthelp
ke direktori spool Anda sendiri, seperti yang ditentukan dalam ~/.mailagent. Dua makro dapat digunakan:

= TANGGAL = Ini akan diperluas ke alamat pengirim (orang yang mengirimi Anda surat
sedang diproses oleh agen surat).

= UKURAN MAKSIMAL = Ini adalah singkatan dari ukuran maksimum yang ditetapkan sebelumnya kit digunakan untuk mengirim file kembali
(parameter ukuran maksimal di Anda ~/.mailagent file).

Anda dapat menggunakan file bantuan default atau desain yang akan memberikan lebih banyak detail untuk
pengguna yang buruk.

Distribusi File
Kedua file tersebut pembuat program dan mendistribusikan ditahan di Lib/agen surat jelaskan distribusi Anda
mailagent akan dapat mendistribusikan. Sampel yang diberikan menunjukkan sintaks yang diharapkan. Di dalam
untuk memperjelas hal-hal, inilah format yang seharusnya:

File pembuat program berisi deskripsi kecil untuk program. Nama program muncul
setelah satu bintang. Ini diikuti oleh garis dalam format bebas. Garis tiga garis opsional
memisahkan deskripsi setiap program. Perhatikan bahwa tab terkemuka akan ditambahkan ke setiap baris
deskripsi.

mendistribusikan file memegang baris dari bentuk berikut:

nama program versi path diarsipkan dikompresi patch

di mana:

nama program adalah nama program (sama dengan yang disebutkan di pembuat program).

versi adalah nomor versi saat ini. Jika tidak ada, garis tiga putus-putus dapat digunakan.

path adalah jalur di mana distribusi disimpan. ~ akan diperluas ke Anda
direktori rumah. Perhatikan bahwa jika distribusi disimpan dalam bentuk arsip,
nama jalur adalah salah satu arsip tanpa ekstensi akhir (yang mungkin
.cpio.Z or .tar.Z).

diarsipkan juga y or n tergantung pada apakah distribusi diarsipkan atau tidak.

dikompresi
juga y or n tergantung pada apakah distribusi dikompresi atau tidak.
Ini bisa ditebak dari nama ekstensinya, tapi kita harus memikirkan file
sistem dengan nama pendek.

patch is y or n tergantung apakah distribusi tersebut dipertahankan atau tidak oleh Anda. Jika
kamu meletakkan p, ini berarti tambalan resmi tersedia, meskipun Anda tidak
menjaga distribusi. Akhirnya, sebuah o berarti ini adalah versi lama,
di mana hanya tambalan yang tersedia, tetapi maildist tidak akan berfungsi. Dalam hal itu,
dengan asumsi nomor versi adalah 1.0, tambalan lama diharapkan dalam a bug-1.0
direktori.

Anda dapat memasukkan komentar di kedua file: semua baris yang dimulai dengan # di depan akan menjadi
diabaikan.

pengujian Anda surat Agen
Sekarang saatnya untuk memastikan agen surat Anda berfungsi. Kirimkan sendiri email berikut:

Subjek: Perintah
@SH bantuan surat

Anda harus menerima kembali email dari diri Anda sendiri dengan subjek yang diatur ke: "Cara menggunakan my
mailagent". Jika tidak, periksa file ~/.bak (atau file apa pun yang Anda atur di
.maju). Jika kosong, lihat file log. Jika file log tidak kosong, maka
mungkin suratnya sudah antri. Periksalah kirim email antre. Pastikan juga bahwa Anda
menghapus komentar '#' di menyaring naskah. Pada beberapa sistem, mereka menyebabkan beberapa masalah.
Jika Anda menggunakan filter C, mungkin sendmail Anda rusak dan Anda perlu membuatnya sendiri
setuid copy (atau Perl mungkin mengeluh bahwa Anda memiliki bug kernel, dll...).

Jika Anda telah melakukan semuanya dengan benar tetapi masih tidak berfungsi dengan benar, tingkatkan level log
ke 20 dan kirim ulang surat perintah Anda. Kemudian periksa file log. Diagnosanya harus
lebih mudah.

Setelah ini berhasil, Anda harus memeriksa mendistribusikan dan pembuat program file dengan mengirimkan sendiri
surat berikut:

Subjek: Perintah
@SH daftar surat

Jika daftar yang Anda kembalikan salah, maka file distribusi Anda salah
tertulis. Jika Anda tidak mendapatkan daftarnya, berarti ada masalah dengan agen surat Anda
konfigurasi. Coba lagi dengan level log yang disetel ke 20 dan lihat pesan log yang dikeluarkan di
direktori Log Anda. Pastikan bahwa file yang terdaftar di tolong simpan masuknya kamu
~/.mailagent diperbarui dengan benar setelah a daftar surat telah dijalankan.

MENGGUNAKAN THE FILTER


agen surat juga dapat digunakan sebagai filter: email diuraikan dan beberapa tindakan diambil
berdasarkan sederhana lex-seperti aturan. Tindakan berkisar dari penyimpanan sederhana di folder, hingga
meneruskan ke orang lain, atau bahkan memunculkan perintah shell. Sebelum melangkah lebih jauh,
berikut adalah contoh kecil dari file aturan yang valid:

Dari: root { MAJU postmaster };
untuk: [email dilindungi] { POST mail.gue };
Subjek: /metaconfig/ { SAVE dist };
{ SIMPAN masuk };

Ada tiga aturan yang berbeda. Aturan diterapkan secara berurutan, sampai ada yang cocok (jadi
urutan itu penting). Setiap surat yang datang dari akar akan diteruskan ke pengguna kepala kantor pos. Sebuah
surat yang ditujukan kepada [email dilindungi] adalah surat yang berasal dari milis. Surat diposkan
di newsgroup lokal mail.gue. Email yang subjeknya berisi kata "metaconfig" akan menjadi
disimpan dalam folder dist untuk pembacaan yang tertunda dan tidak akan muncul di kotak surat utama. Jika tidak
aturan cocok, surat yang tersisa di folder masuk.

Aturan File Sintaksis
Berikut adalah deskripsi non-formal dari file aturan. Parsing file dilakukan secara leksikal,
maka pilihan token yang tidak ambigu seperti '{' atau ';' yang mudah diurai. Ini
memperkenalkan beberapa batasan yang diterapkan secara diam-diam: misalnya, tidak ada '{' yang dapat digunakan
sebagai bagian dari alamat.

Komentar diawali dengan '#' , yang harus berada di margin kiri. Tidak seperti cangkang
komentar, '#' yang tidak dibenarkan tidak akan dipahami sebagai komentar. Namun,
spasi atau tab diperbolehkan di depan '#'.

Semua pernyataan dalam file aturan harus diakhiri dengan ';'. Terutama ada empat bagian di
setiap baris. Daftar mode yang dipisahkan koma, antara '<' dan '>', yang memberikan himpunan
mode di mana aturan itu berlaku. Mode khusus ALL akan cocok dengan semuanya. Filternya
dimulai dalam mode AWAL. Menghilangkan mode default ke " ". Adalah mungkin untuk menjaga
aturan terhadap beberapa mode tertentu dengan meniadakannya, yang dilakukan dengan mengawali mode dengan
'!'. Mode yang dinegasikan lebih diutamakan daripada mode biasa lainnya, yang berarti " " tidak akan pernah
cocok, pernah, dan itu " " setara dengan " ".

Kemudian muncul daftar pemilih. Pemilih tersebut harus dipisahkan spasi dan diakhiri dengan ':'.
Mereka mewakili nama bidang header yang harus dilihat oleh yang akan datang
pola. Daftar pemilih kosong default ke "Subjek:". Selektor khusus "Semua:", "Tubuh:"
dan "Kepala:" berlaku untuk seluruh pesan, isi, atau tajuknya. Selektor yang umum digunakan
list adalah "Ke Cc:" yang menguji bidang penerima dari header. Jika nama pemilih adalah
didahului dengan tanda seru '!', maka nilai logika tes untuk pemilih tersebut
dinegasikan.

Daftar pemilih dapat diakhiri dengan spesifikasi rentang opsional, diberikan sebagai: <menit, maks>,
sebelum karakter ':' terakhir yang menandai akhir daftar pemilih. minimum atau
maksimum dapat diberikan sebagai '-', dalam hal ini diganti dengan minimal atau maksimal
nilai yang mungkin. Indeks untuk seleksi dimulai dari 1 (bukan 0), misalnya: <3, 7>. Jika tidak
pilihan rentang diberikan, maka default <1, -> digunakan. Rentang biasanya memilih garis
dalam buffer yang cocok, kecuali pemilih mengharapkan daftar dalam hal ini
beroperasi pada item daftar. Contohnya, Body <3, 5>: akan memilih baris #3 hingga #5
(termasuk) dari badan surat, sedangkan Untuk Cc <1,3>: akan fokus pada tiga yang pertama
alamat pada setiap baris header To: atau Cc:. Nilai negatif mengacu pada banyak garis atau
alamat kembali dari akhir, yaitu Cc <-2,->: memilih dua alamat terakhir di Cc:
garis. Sebuah nomor tunggal seperti <2> dipahami sebagai <2, 2>, yaitu hanya memilih satu item
dalam daftar, <-> berarti segalanya (dan karena itu berlebihan).

Pemilih kemudian diikuti oleh pola di dalam '/' atau dengan satu nama. Untuk
memudahkan penulisan aturan, semantik nama tunggal bervariasi tergantung pada
pemilih yang digunakan. Untuk pemilih khusus "Dari:", "Ke:", "Cc:", "Pengirim:", mereka
bidang "Kirim-" terkait, "Balas-Ke:", "Amplop:" dan "Tampaknya-Ke:", satu nama
dipahami sebagai kecocokan di masuk nama dari alamat. Perhatikan bahwa jika tidak ada bidang "Kepada:" adalah
hadir di header, satu akan dipalsukan dari "Tampaknya-Ke:" untuk tujuan
penyaringan saja (yaitu tidak ada modifikasi fisik pada header yang dilakukan). Jika nama login dari
alamatnya adalah nama lengkap dari formulir First. Last, hanya nama belakang yang disimpan, dan adalah
huruf kecil. Jika hanya satu nama yang diberikan, hanya karakter meta shell * dan ? adalah
diperbolehkan, serta interval [].

Jika polanya diawali dengan tanda seru tunggal '!', maka status kecocokannya adalah
dinegasikan (yaitu akan berhasil jika polanya tidak ditemukan). Jika satu kata digunakan untuk
pemilih non-khusus, aturan yang sama berlaku tetapi polanya berlabuh di awal
dan akhir untuk pencocokan tepat. Dengan pola yang dimulai dengan '/', ekspresi reguler apa pun
dipahami oleh perl dapat digunakan dan pola Anda tidak akan diubah dengan cara apa pun. Yang lain
pemilih khusus "Grup Berita:" berfungsi sebagai "Kepada:", kecuali bahwa nama grup berita diharapkan
dan kecocokan dicoba pada setiap item dalam daftar. Setiap pola cocok dengan satu nama
untuk bidang tipe alamat (yaitu "Grup Berita:" dikecualikan), dibuat tidak peka huruf besar-kecil
mode. Jika tidak, Anda dapat memaksakan kecocokan case-insensitive dengan menambahkan trailing i pilihan,
seperti dalam /pola/i.

Ada juga sedikit keajaiban yang terlibat saat mencocokkan bidang alamat. Yaitu, jika
pola bukan satu kata dan adalah berlabuh at itu awal, maka hanya bagian alamat
lapangan akan disimpan. Misalnya, jika kita memiliki bidang Dari: yang nilainya adalah Raphael
Manfredi <[email dilindungi]>, maka polanya /Rafael/ akan cocok, tapi tidak /^Rafael/.
Sebaliknya, /^ram@.*$/ akan cocok, tetapi ini lebih mudah dilakukan dengan satu pola kata
ram, untuk itu hanya berfokus pada nama login alamat dan juga akan cocok jika
alamat ditulis sebagai eiffel.com!ram. Satu alamat dalam bentuk Internet, seperti di
[email dilindungi] secara implisit cocok dengan bagian alamat bidang, dan Anda tidak boleh
melarikan diri dari '.' seperti yang Anda harus dalam ekspresi reguler.

Ini mungkin terdengar sedikit rumit, tetapi desain ini dimaksudkan untuk membuat segalanya lebih mudah bagi
pengguna. Berikut beberapa contoh lainnya:

# Cocok [email dilindungi] dan juga [email dilindungi].
Dari: ram

# Cocok [email dilindungi], ram tapi tidak [email dilindungi]
Dari: r[oa]*

# Cocok [email dilindungi] tapi tidak [email dilindungi]
Ke Cc: /^gue@eiffel\.fr/

# Ini akan cocok [email dilindungi] dan juga [email dilindungi]
Ke Cc: /gue@eiffel/

# Cocok comp.lang.perl tapi tidak comp.lang.perl.puisi (?)
Grup berita: comp.lang.perl

# Terima apa pun kecuali pesan yang datang dari akar
Dari: !root

Saat mencoba mencocokkan pada "Kepada:", "Cc:" atau "Tampaknya-Ke:", daftar alamat dipisahkan
dengan koma diharapkan, sedangkan hanya satu alamat yang diharapkan setelah "Dari:". Jika Anda menghilangkan
pola, itu akan dipahami sebagai * (ingat bahwa satu kata menggunakan shell meta-
karakter), yang akan cocok dengan apa pun.

Kemudian munculah tindakan yang harus dilakukan ketika terjadi kecocokan. Hanya ada satu set terbatas
tindakan yang valid yang akan segera dijelaskan secara rinci. Aksinya diapit oleh curl
kurung kurawal '{' dan '}' dan tindakan dipisahkan atau diakhiri (tergantung selera Anda) oleh a
';'. Nama tindakan dieja dalam huruf besar agar mudah dibaca, tetapi huruf besar/kecil tidak relevan. Jika
Anda ingin meletakkan ';' dalam aturan, itu harus diloloskan dengan mendahuluinya dengan a
garis miring terbalik. Garis miring terbalik ganda diterjemahkan menjadi satu, dan pelarian lainnya
urutan yang melibatkan karakter garis miring terbalik diabaikan (yaitu \n akan disimpan kata demi kata).

Perhatikan bahwa aturan harus diakhiri dengan satu ';' setelah '}' terakhir. Apakah mungkin untuk
hilangkan ';' terakhir ini, tetapi token tunggal itu adalah titik sinkronisasi ulang untuk kesalahan
pemulihan. Namun orang dapat berargumen bahwa seharusnya tidak ada kesalahan sintaks, dan dengan demikian ';'
harus dihilangkan dengan aman. Jika ragu, periksa file aturan Anda dengan -d .

Berikut adalah aturan prototipikal (menggunakan perl ekspresi reguler; silakan merujuk ke
ayat Reguler Ekspresi untuk informasi lebih lanjut):

Dari: /^\[email dilindungi]$/ { SIMPAN eiffel };

Aturan itu hanya akan diperhitungkan ketika filter dalam mode ROOT (ingat bahwa
pemrosesan dimulai dalam mode AWAL; gunakan BEGIN untuk mengubah mode, seperti pada lex). Jadi di
mode ROOT, apa pun yang berasal dari pengguna yang berlokasi di eiffel.com situs disimpan di
map eiffel untuk membaca tertunda. Surat tidak akan muncul di kotak surat.

Dimungkinkan untuk memiliki lebih dari satu pilihan untuk sebuah aturan. Selektor identik adalah
secara logis or'ed sementara yang berbeda adalah dan'ed. Pilihan dipisahkan koma. Untuk
contoh,

Dari: root, Kepada: ram, Dari: ram, Subjek: /\btest\b/ { DELETE };

akan menghapus email dari akar or ram jika dikirim ke ram dan memiliki kata uji dalam Surat
subjek. Dimungkinkan juga untuk menulis aturan sebelumnya sebagai:

Dari: root, ram, Kepada: ram, Subjek: /\btest\b/ { DELETE };

karena jika tidak ada pemilih yang diberikan, yang sebelumnya digunakan (dengan pemilih pertama adalah
"Subjek:" secara default).

Di mana saja dalam file aturan, dimungkinkan untuk mendefinisikan beberapa variabel. Daftar yang diakui
variabel diberikan kemudian. Untuk saat ini, katakanlah itu maildir adalah direktori folder default.
Variabel ini digunakan oleh perintah SAVE ketika argumen bukan jalur absolut.
Pengaturan

maildir = ~/surat;

akan mengarahkan filter untuk digunakan ~/surat sebagai direktori folder (defaultnya adalah ~/Surat). Perhatikan
~ substitusi dan akhir ';'. Tidak mungkin (saat ini) untuk mengubah lingkungan
dengan mengatur PATH misalnya.

Akhirnya, ada konstruksi khusus untuk memuat pola dari file. Sebuah pola terlampir dalam
tanda kutip ganda berarti pola yang akan diterapkan harus diambil dari yang ditentukan
mengajukan. File diharapkan berada di direktori filter surat jika itu bukan jalur absolut
(~ substitusi terjadi). Jika variabel tidak disetel maildir akan digunakan. Jika kebetulan (!)
maildir tidak disetel, direktori home digunakan. File harus berisi satu pola
per baris, komentar shell (#) diizinkan di awal setiap baris.

Suatu tindakan dapat diikuti oleh aturan lain. Karenanya yang berikut ini benar-benar valid:

Dari:
ram { HEMAT ram }
/plc/i { SIMPAN plc }
akar { SIMPAN ~/admin }
/xyz/ { HAPUS }
"pengguna" { TINGGALKAN }
;

Perhatikan penggunaan penyertaan file: semua pengguna yang terdaftar dalam file Pengguna akan memiliki mereka
surat yang tertinggal di kotak surat sistem. Aturan yang biasa berlaku untuk pola yang dimuat ini.

Pemilih Kombinasi
Aturan tunggal mungkin memiliki berbagai set pemilih. Misalnya, dalam aturan berikut:

Dari: ram, Ke Cc: root, !Subjek: /test/, Dari: raphael

kita memiliki set berikut { Dari, Ke Cc, !Subjek}. Dua penyeleksi pertama disebut
langsung pemilih, !Subjek: disebut a dinegasikan pemilih. To Cc: pemilih adalah a kelompok
pemilih terurai menjadi dua langsung pemilih, sedangkan Dari: adalah atom pemilih.
Akhirnya, Dari: juga merupakan pemilih dengan beberapa kejadian. Itu nilai dari pemilih adalah
nilai logika statusnya yang cocok.

membiarkan D menjadi set penyeleksi langsung dan N himpunan pemilih yang dinegasikan, yang membentuk a
partisi dari R, himpunan semua pemilih dalam aturan. Artinya, R adalah persatuan
of D dan N, dan D berpotongan dengan N adalah himpunan kosong (bukti sepele: pemilih adalah
langsung atau negatif). jika baik D or N kosong, maka itu bukan partisi tetapi dalam kasus itu
kita punya D = R atau N = R.

Mari kita tentukan nilai logika dari suatu himpunan S sebagai nilai logis filter akan
kembali jika aturan itu benar-benar ditulis. Maka nilai logika dari D adalah logis
nilai masing-masing item dengan operator logika AND yang didistribusikan di antara mereka, yaitu
nilai logika { a, b, c } adalah nilai dari (a DAN b DAN c). Mari kita tulis DAN(D). Itu
nilai logis dari masing-masing item adalah nilai logis dari pemilih itu sendiri jika
bukan kelipatan, atau itu adalah nilai logis dari semua kemunculan pemilih ganda
dalam aturan, dengan operasi OR logis didistribusikan di antara mereka. Artinya, dalam
contoh di atas, nilai Dari benar jika bidang Dari: berisi ram OR raphael.
Mari kita tulis OR[Dari] itu.

Agar sehat, kita harus menerapkan Hukum De Morgan pada N, maka aturan berikut: logika
nilai N adalah ATAU(N) dan diberi pemilih yang dinegasikan s, nilai logikanya adalah AND[s]. Dan
akhirnya, nilai logis dari R Apakah itu D DAN N, dengan konvensi memiliki logika
nilai himpunan kosong menjadi benar.

Bagi yang belum tahu Hukum De Morgan, ini dia: diberikan dua proposisi logis p
dan q, maka muncul identitas berikut:

BUKAN (p DAN q) <=> (BUKAN p) ATAU (BUKAN q)
BUKAN (p ATAU q) <=> (BUKAN p) DAN (BUKAN q)

Sementara kita berada dalam logika proposisi, perhatikan juga bahwa OR dan AND saling
distributif, yaitu, diberikan tiga proposisi logis p, q dan r, kita punya:

p DAN (q ATAU r) <=> (p DAN q) ATAU (p DAN r)
p ATAU (q DAN r) <=> (p ATAU q) DAN (p ATAU r)

Agar lengkap, OR dan AND adalah asosiatif dengan diri mereka sendiri dan komutatif. Dan B set
{ 0, 1 } dilengkapi dengan himpunan operasi (NOT, OR, AND) adalah aljabar (satu Boolean).
Saya akan memberi Anda definisi aljabar, yang sebenarnya tidak ada hubungannya dalam hal ini
halaman manual (yang untuk agen surat, jika Anda tidak ingat :-).

Pembaca yang penuh perhatian pasti akan mencatat bahwa saya belum menentukan nilai logisnya
dari pemilih grup. Nah, diberikan pemilih grup G, kita dekomposisi menjadi a DG dan NG
partisi, DG menjadi bagian dari penyeleksi langsung (atomik) dari G dan NG menjadi himpunan bagian
dari (atom) pemilih yang dinegasikan. Maka nilai logika dari DG adalah ATAU(DG) dan logika
nilai NG adalah DAN(NG); nilai logika global dari G menjadi itu DG OR NG. Dalam hal
antara DG or NG kosong, maka kami tidak memiliki partisi, tetapi dengan konvensi nilai
himpunan kosong adalah palsu, dan salah satu himpunan sama dengan G. Perhatikan bahwa dalam grup
pemilih, aturannya persis ganda dari aturan di dalamnya R.

Sekarang satu-satunya aturan yang tidak logis adalah apakah pemilih grup milik D or N. saya sudah
dipilih, untuk alasan analogi, untuk membuat pemilih grup milik D jika tidak dimulai
oleh '!' dan untuk N jika tidak. Artinya, !Untuk Cc: milik N sedangkan Cc !To: milik D.
Selain itu, urutan dalam pemilih grup tidak relevan: Ke Cc: setara dengan Cc
To:, sehingga perilaku dalam himpunan hasil bagi adalah suara.

Berikut adalah beberapa contoh:

# Cocokkan apa pun: (bukan dari ram ATAU bukan dari root) selalu benar.
Dari: !ram, !root

# Cocokkan apa pun kecuali tolak email yang berasal dari ram ATAU root
!Dari: ram, root

# Tolak email yang headernya cocok dengan /^Re.*/ berisi kata test
!^Re.*: /\btest\b/

# Simpan email yang subjeknya berisi uji DAN tuan rumah
!Subjek: !/test/, !/host/

# Cocok jika ram tercantum dalam Untuk ATAU Cc line
Ke Cc: ram

Minimal Header
Seperangkat pemilih minimal dijamin untuk disetel, terlepas dari header sebenarnya dari
pesan. Ini hanya untuk tujuan penyaringan, tidak ada perubahan fisik
dilakukan.

Amplop: Ini adalah alamat yang terdapat dalam amplop surat, yaitu alamat tempat surat
tampaknya berasal dari. Ini bisa berbeda dari Dari: bidang alamat jika
surat tersebut berasal dari Terpercaya pengguna, dalam terminologi sendmail. Jika tidak
tahu apa itu, abaikan saja.
Dari: Pengguna yang menulis surat. Jika baris ini tidak ada, gunakan alamat yang ditemukan di
pertama Dari baris.
Length: Panjang fisik tubuh, dalam byte, setelah pengkodean transfer konten (jika
apapun) telah dihapus.
Garis: Jumlah garis dalam tubuh (didekode, jika perlu).
untuk: Penerima utama pesan. Jika baris ini hilang tetapi satu set
Rupanya-Untuk: baris ditemukan, maka alamat tersebut digunakan sebagai gantinya. Jika tidak seperti itu
baris ada, lalu anggap email itu diarahkan ke pengguna (yang tampaknya
asumsi yang masuk akal :-).
Pengirim: Pengguna yang mengirim email. Ini mungkin berbeda dari Dari: garis. Jika tidak ada bidang seperti itu
ada, maka alamat di baris Dari pertama digunakan (amplop surat).
Disampaikan: Header yang dihitung ini adalah daftar yang dipisahkan koma dari semua host tempat:
pesan disampaikan, dalam urutan transmisi yang benar. Setiap item dalam daftar ini
bisa menjadi nama mesin seperti mail.hp.com atau alamat IP seperti
[15.125.38.12]. Daftar ini berasal dari diterima: garis yang ada di
pesan.
Membalas ke: Dimana setiap balasan harus dikirim. Jika tidak Membalas ke: lapangan hadir, maka
Jalur Kembali digunakan (dengan <> dilucuti), atau Dari: baris diuraikan menjadi
ekstrak alamat email penulis.

Variabel
Agen surat mendukung variabel yang ditentukan pengguna, yang bersifat global. Mereka diatur melalui
ASSIGN perintah dan dirujuk dengan makro %#. Dengan asumsi kita menetapkan variabel tuan rumah, kemudian
%#tuan rumah akan digantikan oleh nilai sebenarnya dari variabel. Ini memungkinkan beberapa variabel
propagasi di seluruh aturan.

Sebagai contoh, katakanlah pengguna menerima output cron dari berbagai mesin dan ingin
simpan pada basis per mesin, yang membedakan antara keluaran harian dan mingguan.
Ini solusinya:

Subjek: /output untuk host (\w+)/ { ASSIGN host '%1'; MENOLAK };
Subjek: /^Keluaran harian/ { SIMPAN %#host/harian.%D };
Subjek: /^Keluaran mingguan/ { SIMPAN %#host/mingguan.%m-%d };

Selain interpolasi variabel melalui pelarian %#, juga dimungkinkan untuk melakukan
substitusi dan terjemahan pada isi variabel (atau referensi balik, yaitu a
angka antara 1 dan 99). Kedua perintah SUBST dan TR masing-masing akan tampil di tempat
substitusi dan terjemahan. Namun dalam kasus itu, nama variabel harus
didahului oleh # tunggal. Ini membedakan referensi-balik 1 dari variabel #1,
meskipun 1 adalah nama yang lucu untuk sebuah variabel. Perlunya # juga mencegah kesalahan umum
menulis %#, karena agen surat akan mengeluh keras jika parameter pertama SUBST atau TR adalah
bukan angka antara 1 dan 99 atau tidak dimulai dengan #.

Berikut adalah beberapa tindakan untuk mengkanonikalisasi nama host menjadi huruf kecil dan menghapusnya
nama domain, jika ada:

{ TR #host /AZ/az/; SUBST #host /^([^.]*)\..*/$1/ };

Tindakan itu langsung diterjemahkan ke dalam perl setara, dan kesalahan apa pun dalam
spesifikasi ekspresi reguler akan dilaporkan.

Jika nama variabel diawali dengan titik dua ':', maka variabel tersebut dibuat persisten. Itu
adalah mengatakan itu akan mempertahankan nilainya di berbagai pemanggilan agen surat. variabelnya adalah
hanya disimpan (dengan awalan ':' dihapus) di database agen surat dan dengan demikian tunduk
terhadap kebijakan penuaan yang ditetapkan di ~/.mailagent.

Dalam perintah PERL atau mail hooks menggunakan perl (lihat bagian MAIL HOOKS), Anda dapat
memanipulasi mereka (yang disebut) variabel eksternal melalui serangkaian fungsi antarmuka yang terletak
dalam luar paket (yaitu Anda harus mengawali setiap nama fungsi dengan paketnya
nama, set menjadi set luar). Berikut tiga fungsi antarmuka yang disediakan:

val(nama) Mengembalikan nilai variabel nama (awalan ':' bukan bagian dari nama,
di salah satu dari tiga fungsi antarmuka ini).

set (nama, nilai)
Setel variabel eksternal nama untuk menahan nilai. Tidak ada interpretasi yang dilakukan oleh
berfungsi pada konten sebenarnya dari nilai Anda menyediakan.

usia(nama) Mengembalikan usia variabel, yaitu waktu yang telah berlalu dalam detik sejak terakhir
modifikasi yang dilakukan oleh set.

Saat ini tidak ada cara untuk menghapus variabel dari database. Tetapi jika Anda tidak menggunakan
variabel lagi, itu akan dihapus ketika usianya menjadi lebih besar dari maksimum
usia yang ditentukan oleh agemax variabel konfigurasi.

Reguler Ekspresi
Semua ekspresi reguler mengikuti sintaks V8, seperti pada perl, dengan segala perl
ekstensi. Jika konstruksi tanda kurung (...) digunakan di dalam aturan, maka %angka makro
cocok dengan angka's substring diadakan di dalam braket. Semua referensi belakang itu adalah
dihafal berdasarkan per-aturan, diberi nomor dari kiri ke kanan. Namun, perhatian besar harus
diambil saat menggunakan referensi-balik di pemilih saat ini berlipat ganda, karena semua kecocokan akan
dilakukan hingga pertandingan pertama, dan referensi balik dihitung dengan cepat saat
melakukan pencocokan pola.

Misalnya:

Kepada: /(.*)/, Subjek: /Output from (\w+)/ { ASSIGN to '%1'; SIMPAN %2 };

akan menyimpan kolom To: dalam variabel 'ke' dan menyimpan email dalam folder yang berasal dari
nama host yang ditentukan dalam subjek. Namun, jika kita mengatakan:

Subjek: /host (\w+)/, /from (\w+)/ { ASSIGN cocok '%1' };

maka hanya akan ada satu set referensi belakang, dan itu akan berasal dari pola pertama
cocok jika berhasil, atau dari yang kedua. Haruskah pola kedua atau pertama memiliki
tidak ada konstruksi tanda kurung dan masih cocok, maka referensi-balik tidak akan direkam di
semua, yang berarti yang berikut ini mungkin bukan yang Anda inginkan:

Subjek: /dari/, /host (\w+)/, Kepada: /(.*)/ { SIMPAN %1; MENOLAK };

seolah-olah pola /from/ cocok maka /host (\w+)/ tidak akan dicentang (identik
pemilih adalah or'ed dan itu dioptimalkan), maka %1 akan merujuk ke bidang Kepada: sedangkan
jika /host (\w+)/ cocok, maka %1 akan menjadi nama host.

Namun, perilaku ini dapat digunakan untuk secara selektif menyimpan artikel berita yang telah
dikirimkan kepada Anda dalam folder yang namanya adalah nama newsgroup dalam bentuk titik. Dengan asumsi kita ingin
untuk memprioritaskan comp.lang.perl, kita dapat mengatakan:

Grup berita:
/(komp.lang.perl)/,
/(komp.mail.mh)/,
/(komp.kompiler)/,
/([^,]*)/ { SIMPAN %1 };

Sebuah artikel yang diposting silang ke comp.lang.perl dan comp.mail.mh akan disimpan di a
comp.lang.perl, karena ini yang akan cocok terlebih dahulu. Aturan terakhir mengurus
artikel lain: folder yang digunakan adalah newsgroup apa pun yang muncul lebih dulu.

Ada juga makro khusus %&, yang mencantumkan (ini adalah daftar yang dipisahkan koma) semua
pemilih ditentukan melalui ekspresi reguler yang memang cocok. Misalnya:

Re.*: /york/ { TETAPKAN yang '%&' };

akan ditugaskan ke yang daftar semua bidang yang cocok dengan pola /Re.*/ yang
berisi 'york', baik itu bidang Received: atau Resent-From: (karena keduanya cocok dengan
spesifikasi pemilih). Dengan asumsi kedua bidang itu berisi kata York, nilai dari
%& akan menjadi 'Diterima, Dikirim Ulang-Dari;' (bidang diurutkan menurut abjad).

Jika Anda memiliki lebih dari satu pemilih yang ditentukan dalam satu aturan, maka itu mungkin
perlu diketahui bahwa semua set pemilih yang cocok dicatat dalam %&, setiap set
diakhiri dengan ';'. Jika pemilih yang dinegasikan digunakan, maka %& akan merekam semua bidang
yang tidak mengandung pola, dengan asumsi pemilihan berhasil (jika tidak, tidak ada
tercatat).

Tersedia tindakan
Tindakan berikut tersedia sebagai perintah pemfilteran. Kasus tidak relevan meskipun
gaya yang direkomendasikan adalah mengejanya dengan huruf besar. Seperti yang dijelaskan nanti, sebagian besar tindakan
merekam status keluar mereka dalam variabel khusus yang dapat diuji melalui -t dan -f
pilihan ABORT, REJECT dan RESTART. Untuk setiap perintah yang mengembalikan status keluar seperti itu,
kondisi kegagalan atau keberhasilan diberikan di akhir setiap deskripsi. Jika tidak ada
ditentukan, maka perintah tidak mengembalikan status yang berarti.

batalkan [-tf] [mode]
Batalkan penerapan aturan penyaringan segera. Lihat REJECT untuk arti dari
parameter opsional. (Tidak mengubah status yang ada)

SETELAH [-sanc] (waktu) tindakan
Merekam panggilan balik untuk setelah yang ditentukan waktu, Di mana tindakan akan dilakukan.
Secara default, tindakan pemfilteran agen surat diasumsikan (-a opsi), pada saat ini
pesan surat. Perintah shell (-c) dapat diberikan sebagai gantinya, menerima arus
pesan email sebagai input standar. Akhirnya, perintah shell biasa dapat dijalankan (dengan
tidak ada masukan) menggunakan -s pilihan. Pilihan -n dapat digunakan saat surat saat ini
pesan tidak perlu disimpan untuk input. Misalnya:

SETELAH -sebuah (1 hari) LAKUKAN ~/proses:proc'run(%u)

akan memanggil proc'run didefinisikan dalam ~/proses file dalam satu hari dari sekarang, tanpa
memberikan masukan apa pun (tindakan di sini tidak memerlukan apa pun).

Saat menjalankan perintah agen surat, mode kerja awal diatur ke _CALLOUT_.
Ini mungkin penting jika Anda menelepon APPLY misalnya. Jika waktu yang direkam kurang atau
sama dengan waktu sekarang (yaitu sekarang), panggilan balik akan terjadi ketika
mailagent selesai dengan pesan dalam antriannya, sebelum keluar. Ini memungkinkan
untuk trik lucu berikut, ditemukan oleh Randal Schwartz:

SETELAH (sekarang) # garpu salinan saya bisa mangle
STRIP Balas-Ke \; SINKRONKAN ULANG \;
ANOTATE -du Balas-Ke %2 \; SINKRONKAN ULANG \;
PEMBERITAHUAN pesan %r \; MENGHAPUS \;
;

Perhatikan bahwa perintah tidak dipanggil AT karena panggilan hanya akan dilakukan
pada pemanggilan agen surat berikutnya setelah waktu yang ditentukan telah berlalu. Tanggal adalah
ditentukan menggunakan format yang sama seperti pada SELECT. (Gagal jika tindakan tidak dapat
direkam dalam antrian callout).

ANOTASI [-dari] bidang nilai
Anotasi pesan dengan menambahkan bidang ke dalam tajuk surat, dengan yang disediakan nilai.
Ini seperti perintah MH tahun, tetapi anotasi dilakukan di akhir
header, sedangkan MH melakukannya di atas. Biasanya, tambahan bidang telah ditambahkan,
dengan tanggal saat ini sebagai nilai bidang.

Hal ini dapat ditekan dengan menggunakan -d pilihan. Jika nilai dihilangkan, hanya
bidang tanggal dihasilkan (karenanya merupakan kesalahan untuk menggunakan -d pilihan tanpa
memasok nilai). Seperti semua perintah yang mengubah header, RESYNC adalah
diperlukan untuk bagian filter untuk benar-benar melihat header baru.

-u opsi berarti "unik", dan mencegah ANNOTATE dijalankan jika
ditentukan bidang sudah ada di header. Jangan lupa untuk RESYNC antara
perintah ANNOTATE berturut-turut menggunakan opsi ini jika bidang mengacu pada sebelumnya
MENJELASKAN target. (Gagal ketika tidak ada anotasi yang terjadi)

BERLAKU file aturan
Dapatkan aturan yang dipegang file aturan dan menerapkannya ke pesan saat ini. Itu
filter akan dimulai dalam mode apa pun Anda saat menggunakan perintah ini, tetapi tidak ada umpan
kembali akan terjadi, yaitu perubahan mode apa pun akan hilang saat kembali dari
perintah.

Variabel (lihat makro %#) disebarkan bolak-balik melalui APPLY,
artinya Anda melihat variabel yang disetel oleh pemanggil, dan Anda dapat mengubah nilainya atau
buat variabel baru untuk digunakan pemanggil nanti.

Jika email disimpan selama penerapan aturan, maka yang sesuai
flag diatur di filter utama (yang memulai perintah APPLY). Kamu boleh
sarang mereka, tentu saja. (Gagal jika email tidak disimpan oleh aturan yang ada di
file aturan)

ASSIGN adalah nilai
Tetapkan nilai ke variabel yang ditentukan pengguna adalah, yang selanjutnya dapat diakses
as '%#var' untuk substitusi makro atau #var dalam perintah TR dan SUBST di tempat
dari nama variabel. Perhatikan bahwa tidak ada yang memimpin # di depan variabel
nama. Itu nilai yang Anda berikan pertama kali dijalankan perl untuk melihat apakah itu mengandung beberapa
operasi aritmatika. Jika evaluasi berhasil, nilai yang dihasilkan adalah
digunakan sebagai gantinya. Jika terjadi kesalahan dalam proses evaluasi ini, maka literal
nilai yang diberikan digunakan. Untuk menghindari evaluasi, Anda dapat melampirkan keseluruhan
nilai dalam kutipan sederhana. Itu akan dipangkas sebelum penugasan berlangsung.
Jika Anda benar-benar ingin kutipan sederhana di posisi pertama DAN terakhir, Anda harus
gandakan masing-masing. (Tidak mengubah status yang ada)

KEMBALI Command
Eksekusi Command dan ambil hasilnya sebagai tindakan baru yang akan dilakukan melalui pos
(karenanya melakukan sesuatu yang analog dengan `perintah` dalam cangkang). Jika tidak ada
keluaran, tidak ada yang dilakukan. Perintah BACK dapat disarangkan, meskipun ini dapat menyebabkan
kejutan halaman manual ini tidak akan mengungkapkan (tapi saya jamin itu akan lucu,
dengan asumsi kita memiliki selera humor yang sama... :-). Perhatikan bahwa kedua standar
output dan kesalahan standar dari perintah yang digunakan.

Jika perintah gagal, output dikirim kembali ke pengguna dan tidak ada tindakan
dilakukan. Selanjutnya, umpan balik normal tidak terjadi di sini: keluaran apa pun dari
perintah diambil sebagai tindakan filter, yang berarti semantik PASS, untuk
misalnya, diubah: kami tidak mengambil tubuh kembali tetapi perintah. (Eksekusi
statusnya adalah Command)

BIP [-l] menghitung
Perintah ini dapat digunakan untuk menyetel jumlah bunyi bip yang dikeluarkan saat melakukan biffing pada
terminal, untuk masing-masing %a ekspansi. Secara default, jumlah itu diatur ke 1. Menggunakan
-l opsi mengubah jumlah bip secara lokal untuk aturan. Jika tidak, default
jumlah diubah.

Perhatikan bahwa ini hanya memperluas %a ke jumlah karakter Ctrl-G yang sesuai.
Terminal Anda harus diizinkan untuk mengeluarkan lonceng berturut-turut agar ini berfungsi. Sangat
sering, terminal dikonfigurasi sehingga bel pertama yang diterima dinonaktifkan lebih lanjut
berbunyi bip selama beberapa waktu, untuk menghindari riam lonceng. Jika Anda menggunakan xterm untuk
misalnya, Anda harus menggunakan:

xterm -xrm "XTerm*BellSuppressTime: 0"

untuk mengaktifkan lonceng berurutan. Jika tidak, xterm akan menelan mereka selama 200 ms,
karenanya membuat perintah BEEP tidak efektif, rupanya. (Tidak mengubah
status yang ada)

MULAI [-kaki] negara
Masuk ke negara bagian baru. Sebuah REJECT eksplisit atau RESTART diperlukan untuk membatalkan
pemrosesan aturan saat ini. Pemrosesan dimulai dalam keadaan INITIAL. Jika
itu -f (hal. -t) flag ditentukan, maka perubahan status hanya terjadi jika
status perintah terakhir menunjukkan kegagalan (resp. a success). Nama negara bagian bisa
berisi karakter alfanumerik dan garis bawah. (Tidak mengubah yang sudah ada
status)

BIFF [-l] on|off|jalan
Izinkan atau larang biffing secara dinamis. Saat biffing diaktifkan melalui
file konfigurasi atau melalui perintah ini, sebuah pesan dicetak pada beberapa
terminal tempat pengguna masuk ketika email diterima, seperti yang dijelaskan di bawah
bagian MAIL BIFFING.

Dari pada on or lepas, Anda dapat menentukan nama file (~ substitusi diperbolehkan) menjadi
jalur baru yang akan digunakan untuk templat format biffing.

Jika Anda menggunakan -l opsi, perubahan dilakukan secara lokal, selama aturan
hanya. Jika Anda MENOLAK untuk pergi ke beberapa aturan lain, perubahan Anda akan hilang. Itu
nilai global dari parameter yang diubah diubah pada penggunaan lokal pertama dan
dipulihkan ketika aturan baru dimasukkan. (Tidak mengubah status eksekusi)

MELAMBUNG alamat)
Pantulkan pesan ke alamat yang ditentukan dan bertindak seolah-olah telah terjadi penyimpanan
selesai. Satu-satunya perbedaan dengan FORWARD adalah bahwa tidak ada baris seperti Kirim Ulang yang ditambahkan ke
header. Jika alamat ditentukan dalam tanda kutip ganda, itu diambil sebagai nama
dari file yang akan dimuat untuk mendapatkan alamat (satu alamat per baris, komentar shell
(#) diizinkan). Penyelesaian nama file sama dengan yang digunakan untuk pola
Memuat. (Gagal jika email tidak dapat dikirim ulang)

DO rutin [(argumen1, argumen2, ... , arg)]
Panggilan perl rutin, dengan argumen yang disediakan jika ada. Ini sangat rendah
kait tingkat ke dalam agen surat intern. Rutinitas dapat ditentukan dengan sendirinya
(nama paket, paket makhluk utama secara default), atau diidentifikasi oleh pemimpin label,
diikuti oleh ':', lalu nama rutin seperti sebelumnya. Itu label bisa menjadi jalan menuju
file di mana rutin didefinisikan, atau nama perintah (untuk perintah yang ditentukan pengguna
yang dimuat secara dinamis). Misalnya

LAKUKAN UNKIT:newcmd'unkit('benar')

akan mencari yang ditentukan pengguna UNKIT perintah, muat file di tempat yang ditentukan
(dalam cmd baru paket), lalu panggil rutin dengan 'benar' sebagai argumen. Itu
paket ditentukan menentukan di mana pemuatan dilakukan, jadi pastikan itu
konsisten dengan definisi dalam file di mana rutin didefinisikan. (Gagal
jika rutin tidak dapat ditemukan dan dieksekusi)

DELETE Menghapus pesan saat ini. Sebenarnya, ini tidak melakukan apa-apa, itu hanya menandai
email sebagai disimpan. Jika tidak ada tindakan lebih lanjut yang melibatkan penghematan dilakukan, maka surat
tidak akan pernah muncul di kotak surat. (Tidak pernah gagal)

MEMBERI MAKAN [-menjadi] program
Umpankan seluruh pesan ke program dan dapatkan hasilnya kembali sebagai pesan baru.
Oleh karena itu program muncul sebagai filter untuk seluruh pesan. Itu tidak menandai
pesan sebagai telah disimpan. RESYNC secara otomatis dilakukan setelah kembali.
(Mengembalikan status program)

PERINGATAN: Program Anda harus dapat mengurai pesan MIME dengan benar dan harus
berurusan dengan tubuh yang dikodekan transfer dengan sendirinya. Untuk membuat tugas program lebih sederhana,
Anda dapat menyediakan -b saklar yang akan membiarkan agen surat memecahkan kode seluruh tubuh untuk
Anda, menekan header Content-Transfer-Encoding (menyiratkan "biner"). Ini
adalah format pesan yang tidak valid untuk mengirim pesan, tetapi itu membuat pemrosesan
lebih mudah. Anda masih harus mengurai bagian MIME sendiri.

Menggunakan -b tidak mencegah program Anda mengeluarkan pesan yang valid kembali, satu
yang mungkin dapat dikirim melalui jaringan sehingga Anda memiliki dua opsi: apakah Anda melakukannya
tidak menyediakan Pengkodean-Transfer Konten apa pun di header, dan agen surat akan
recode tubuh untuk Anda menggunakan pengkodean transfer awal yang ada di
pesan (opsi yang relatif aman jika Anda hanya membuat perubahan pada isi
tempat yang ditentukan tanpa memperkenalkan karakter 8-bit), atau Anda dapat menyediakan Content-
Transfer-Encoding sendiri dan lakukan body encoding secara manual.

Agar benar-benar aman dan meminimalkan pekerjaan di program Anda, -e saklar akan
biarkan agen surat menganalisis isi pesan yang Anda kembalikan dan pilih yang tepat
mentransfer pengkodean secara otomatis. Karena ini akan menyebabkan seluruh tubuh menjadi
dianalisis, dan berpotensi besar, perilaku itu harus secara eksplisit
diminta. Jika Anda membutuhkan -e maka Anda mungkin ingin -b juga (Anda dapat menyediakan keduanya
dengan berkata -menjadi tentu saja).

Jika Anda tidak menyediakan sakelar apa pun, agen surat akan memberi Anda pesan apa adanya dan
akan menerima pesan Anda apa adanya tanpa sihir tambahan.

MENERUSKAN alamat)
Teruskan surat ke alamat yang ditentukan. Ini bertindak seolah-olah penyelamatan telah dilakukan,
untuk menghindari DELETE. Biasanya ketika Anda meneruskan email, Anda tidak menginginkannya
untuk menyimpannya. Perintah menambahkan baris seperti Kirim Ulang di header. Adapun BOUNCE,
penyertaan file dimungkinkan (yaitu menggunakan alamat "daftar_maju" untuk meneruskan email
untuk semua pengguna yang tercantum dalam file maju_daftar). (Gagal jika surat tidak dapat
membenci)

MEMBERIKAN program
Berikan isi pesan ke program yang ditentukan dengan memberi makan standarnya
memasukkan. Setiap keluaran dikirimkan ke pengguna yang menjalankan agen surat. Perhatikan bahwa
pesan tidak ditandai sebagai telah disimpan. (Mengembalikan status program)

CATATAN: Jika pesan memiliki isi yang dikodekan untuk transportasi (menggunakan salah satu dari
base64 atau pengkodean transfer yang dapat dicetak dikutip), agen surat akan transparan
memecahkan kode dan menyediakan versi yang dapat ditangani dengan benar. Dengan kata lain,
program tidak perlu peduli dengan isi pesan yang dikodekan,
karena akan mendapatkan yang polos. (Karena tidak ada header yang disediakan, ini adalah satu-satunya
kemungkinan pilihan).

Namun hati-hati untuk pesan MIME: Anda harus menggunakan PIPA agar mereka memberi kesempatan
ke program untuk menangani tubuh dengan benar, tetapi kemudian harus sepenuhnya MIME-
sadar.

TERUS header_fields_list
Hanya menyimpan baris yang sesuai di header surat. Misalnya,
"KEEP From To Cc Subject" hanya akan menyimpan bidang utama dari surat
pesan. Ini cocok untuk pengarsipan pesan milis. Anda dapat menambahkan
':' setelah setiap nama bidang tajuk jika Anda mau, tetapi itu tidak sepenuhnya
diperlukan. Header dapat ditentukan menggunakan ekspresi reguler gaya shell, dan
penyertaan file diizinkan untuk mendapatkan header dari file. (Tidak mengubah yang sudah ada
status)

TINGGALKAN Meninggalkan surat masuk di kotak surat sistem. Ini adalah tindakan default jika tidak ada aturan
cocok atau jika tidak ada penyimpanan yang terjadi. Ini tidak direkomendasikan pada sistem Debian.
(Gagal jika email tidak dapat disimpan)

MAKRO [-rdp] nama [= (nilai, mengetik)]
Memungkinkan Anda menentukan makro yang ditentukan pengguna, dalam bentuk %-(nama). Lihat paragraf di
makro yang ditentukan pengguna untuk penjelasan tentang jenis yang tersedia (SCALAR, EXPR,
CONST, FN, PROG, PROGC). Antarmuka Perl ke makro pengguna yang mendasarinya adalah
tersedia untuk perintah Perl Anda. Itu -r opsi digunakan untuk menggantikan yang sudah ada
makro (alih-alih mendorong instance baru di tumpukan), the -d adalah untuk menghapus semua
contoh makro bernama (dalam hal ini hanya membutuhkan argumen pertama),
dan -p memunculkan contoh terakhir makro dari tumpukan dan kembali ke
definisi sebelumnya, jika ada (jika tidak, itu bertindak sebagai -d). Jika Anda ingin mendefinisikan
makro SCALAR sederhana, Anda dapat menghilangkan = (nilai, Tipe) bagian dan lanjutkan saja
dengan nilai makro. (Tidak mengubah status yang ada)

PESAN fillet
Kirim pesan fillet kembali ke pengirim pesan (seperti yang berasal dari header
dari pesan). Teks pesan dijalankan melalui substitusi makro
mekanisme (dijelaskan nanti). (Gagal jika pesan tidak dapat dikirim)

TIDAK [-kaki] Tidak ada operasi. Jika ini tampak agak aneh, pikirkan dalam hal perintah ONCE.
(Tidak mengubah status yang ada kecuali -f or -t digunakan, dalam hal ini memaksa
a palsu --kegagalan-- atau benar status sukses)

MEMBERITAHU fillet alamat)
Kirim pesan pemberitahuan fillet ke daftar alamat yang diberikan. Teks dari
pesan dijalankan melalui mekanisme substitusi makro (dijelaskan nanti).
Seperti halnya FORWARD, penyertaan file untuk spesifikasi alamat dimungkinkan. (Gagal
jika pesan tidak dapat dikirim)

ON (hari Daftar) Command
Jalankan perintah filter yang ditentukan hanya pada daftar hari yang ditentukan. Daftar itu
adalah daftar hari yang dipisahkan spasi, ditentukan menggunakan nama bahasa Inggris. Hanya
tiga karakter pertama diperhitungkan, tidak peka huruf besar-kecil. Karena itu,
spesifikasi hari valid terpendek adalah Sen, sel, Menikahi, Kam, Jum, Sat dan matahari.

Perintah ini dapat digunakan bersama dengan SELECT untuk melakukan selektif berbasis waktu
memantulkan pesan ke, misalnya, alamat rumah Anda:

ON (Sen Sel Rab Kam) SELECT (18:30 .. 23:00) BOUNCE [email dilindungi];
ON (Jum) SELECT (18:30 .. 23:59) BOUNCE [email dilindungi];
ON (Sabtu) BOUNCE [email dilindungi];

Itu akan memantulkan pesan hanya pada akhir minggu dan selama seminggu, setelah 18:30,
dan sampai pukul 23:00 (dengan asumsi itu waktu tidur, pesan lain akan terlihat di tempat kerja
Keesokan harinya). Perhatikan bahwa pada hari Jumat, kami pergi sejauh 23:59. (Menyebarkan status
dari Command. Jika perintah tidak dijalankan, selalu kembali sukses)

SEKALI (nama, menandai, Titik) Command
Jalankan perintah filter yang ditentukan sekali per periode. itu nama dan label bidang
digunakan untuk merekam cap waktu dari perintah ONCE terakhir. Lebih lanjut tentang ini nanti.
(Menyebarkan status dari Command. Jika perintah tidak dijalankan, selalu kembali
kesuksesan)

LULUS program
Umpankan isi pesan ke program yang ditentukan dan dapatkan kembali isi baru
dari keluaran program. Perhatikan bahwa pesan tidak ditandai sebagai memiliki
telah disimpan. (Mengembalikan status program)

CATATAN: Jika pesan memiliki isi yang dikodekan untuk transportasi (menggunakan salah satu dari
base64 atau pengkodean transfer yang dapat dicetak dikutip), agen surat akan transparan
memecahkan kode dan menyediakan versi yang dapat ditangani dengan benar. Tubuh yang dihasilkan
oleh program kemudian akan secara otomatis dikodekan kembali menggunakan transfer yang sama
pengkodean.

Namun hati-hati untuk pesan MIME: Anda harus menggunakan FEED agar mereka memberi kesempatan
ke program untuk menangani tubuh dengan benar, tetapi kemudian harus sepenuhnya MIME-
sadar.

PERL naskah [argumen]
Melarikan diri ke perl naskah untuk melakukan beberapa tindakan pada pesan. Ini sepenuhnya
dijelaskan lebih lanjut di halaman manual, dan sangat berbeda dari a MENJALANKAN perl naskah
memerintah. (Mengembalikan kegagalan jika skrip tidak dikompilasi atau mengembalikan nilai bukan nol
status).

PIPA [-b] program
Pipa seluruh pesan ke program yang ditentukan, tetapi jangan dapatkan apa pun kembali.
Setiap keluaran dikirimkan ke pengguna yang menjalankan agen surat. Pesannya tidak
ditandai sebagai telah disimpan dalam hal apa pun, jadi Anda harus HAPUS secara eksplisit jika
perpipaan sudah cukup dan tidak gagal: "TOLAK -f" adalah teman Anda yang harus dihindari
penghapusan yang tidak diinginkan. (Mengembalikan status program)

PERINGATAN: Program Anda harus dapat mengurai pesan MIME dengan benar dan harus
berurusan dengan tubuh yang dikodekan transfer dengan sendirinya. Untuk membuat tugas program lebih sederhana,
Anda dapat menyediakan -b saklar yang akan membiarkan agen surat memecahkan kode seluruh tubuh untuk
Anda, menekan header Content-Transfer-Encoding (menyiratkan "biner"). Ini
adalah format pesan yang tidak valid untuk mengirim pesan, tetapi itu membuat pemrosesan
lebih mudah. Anda masih harus mengurai bagian MIME sendiri.

POS [-lb] grup berita
Posting pesan ke newsgroup yang ditentukan setelah membersihkan
header: bidang terkait surat seperti Diterima: atau Di-Balasan-Ke: dihapus, yang valid
Dari: baris dihasilkan, asli To: dan Cc: diganti namanya dengan awalan X,
Referensi: baris diperbarui/dibuat jika perlu berdasarkan In-
Reply-To, dan bidang khusus NNTP dihilangkan sehingga server dapat menambahkannya
sendiri.

Menjalankan POST berhasil bertindak sebagai penghematan.

Jika nama depannya adalah -l seperti pada "POST -l comp.mail.mh", lalu "Distribusi:
lokal" tajuk ditambahkan untuk memaksa pengiriman lokal. Jika tidak, default berita terbaru
distribusi akan digunakan (dunia, biasanya).

Ketika -b sakelar diberikan, POST yang berhasil akan menghasilkan biffing
diaktifkan (lihat bagian MAIL BIFFING) untuk artikel berita yang dihasilkan.

Jika lebih dari satu newsgroup ditentukan, mereka harus dipisahkan spasi. Dia
mungkin untuk mendapatkan daftar newsgroup melalui penyertaan file. (Gagal jika pesan tidak dapat
akan diposting)

PROCESS Jalankan pemrosesan agen surat yang mencari perintah @SH dan menjalankannya.
Ini telah dijelaskan sebelumnya di bagian yang berhubungan dengan aturan default. Tindakan
terkait secara default ke email yang memiliki [Cc]command sebagai subjeknya PROCESS.
(Selalu mengembalikan kesuksesan)

MELINDUNGI [-lu] mode
Menyetel mode perlindungan default yang harus disetel pada folder yang dibuat (atau
file yang dibuat saat menyimpan ke folder atau direktori MH). Secara default,
izin diatur oleh perintah UMASK, tetapi ini memungkinkan Anda menimpa
bawaan. yang ditentukan mode harus didahului dengan 0 seperti dalam 0644 untuk memberikan
izin oktal yang sudah dikenal. Jika tidak, itu ditafsirkan sebagai angka desimal, jadi
awas!

-l option dapat digunakan untuk menentukan mode secara lokal untuk satu aturan. Jika tidak,
mode perlindungan diatur secara global. Itu -u opsi membatalkan pengaturan global (atau lokal
bila dikombinasikan dengan -l) mode, kembali ke perilaku default di mana hanya
umask diperhitungkan oleh sistem.

Perhatikan bahwa saat menyimpan ke folder MH, perintah PROTECT diutamakan
atas Pesan-Melindungi bidang dari Anda ~/.mh_profile mengajukan. (Tidak mengubah
status eksekusi)

MEMURNIKAN program
Masukkan header ke dalam program dan dapatkan kembali header baru. RESYNC selesai
secara otomatis setelah kembali. Ini mungkin digunakan untuk memurnikan header dengan
menghapus semua hal verbose yang ditambahkan oleh begitu banyak agen transportasi surat (X-400
seperti garis misalnya). Jelas, ini tidak menandai pesan sebagai memiliki
telah disimpan. (Mengembalikan status program)

Jika program Anda menghapus header Content-Transfer-Encoding dalam pesan MIME,
mailagent akan mengubah pesan dengan benar menjadi badan yang tidak disandikan. Jika
Anda mengubah nilai header Content-Transfer-Encoding, agen surat akan
juga mengkode ulang tubuh dengan benar untuk Anda. Satu-satunya pengkodean yang didukung adalah base64
dan dikutip-printable.

ANTRIAN Antrean surat lagi. Antrian yang berhasil dihitung seolah-olah email telah disimpan. Surat
antri seperti itu tidak akan diproses selama 30 menit berikutnya. Perhatikan bahwa
kecuali agen surat dipanggil secara teratur oleh cron, surat akan tetap di
antrian sampai surat lain tiba. (Gagal ketika email tidak dapat diantrekan)

CATATAN [-akr] [negara] [(daftar tag)]
Rekam pesan dalam riwayat dan masukkan status _SEEN_ jika pesan sudah ada
hadir di sana. Jika pesan direkam untuk pertama kalinya, pemrosesan
berlanjut secara normal. Jika tidak, REJECT dilakukan. Perilaku ini mungkin
agak dimodifikasi dengan menggunakan beberapa opsi. Lihat UNIK untuk deskripsi lengkap
dari opsi dan argumen. Secara alami, ketika negara ditentukan, bahwa
menimpa _SEEN_ default. Nama negara bagian dapat berisi karakter alfanumerik
dan menggarisbawahi.

Ketika sebuah daftar tag (daftar nama yang dipisahkan koma) ditentukan, pesannya adalah
hanya direkam dan diperiksa terhadap semua tag itu, tetapi hanya mereka. Tidak menentukan
daftar tag apa pun berarti kejadian apa pun, apakah itu ditandai atau tidak. Lihat paragraf
Menggunakan Tags in Rekam dan Khas Papua untuk informasi lebih lanjut. (Mengembalikan status gagal
jika surat sudah direkam)

MENOLAK [-tf] [negara]
Batalkan eksekusi tindakan saat ini, dan lanjutkan pencocokan. Jika -t ditentukan,
penolakan akan terjadi hanya jika tindakan sebelumnya berhasil diselesaikan
(mengembalikan status true), sementara -f akan menyebabkan penolakan hanya ketika gagal
muncul. Jika sebuah negara ditentukan, kita memasuki keadaan itu sebelum penolakan. MENOLAK
mengatur ulang bendera yang cocok, yang berarti bahwa jika tidak ada kecocokan lebih lanjut,
tindakan default akan diterapkan. Nama negara bagian dapat berisi karakter alfanumerik dan
menggarisbawahi. (Tidak mengubah status eksekusi)

MEMERLUKAN fillet [paket]
Berperilaku seperti perl membutuhkan operator dengan memuat file perl ke dalam memori. Oleh
default, file dibaca di cmd baru paket, tetapi Anda dapat menentukan apa pun
paket Anda ingin memuatnya. Perintah ini hanya akan melakukan pemuatan sekali
per (file, paket) tupel. Tidak seperti padanan perlnya, file "nilai" tidak
penting, yaitu tidak harus diakhiri dengan pernyataan yang mengembalikan nilai sebenarnya.
(Gagal jika file tidak dapat dimuat)

MENGULANG KEMBALI [-tf] [negara]
Batalkan eksekusi tindakan saat ini dan mulai ulang proses pencocokan dari
awal. Untuk menghindari pengulangan, setiap aturan dapat dilalui sekali dalam waktu tertentu
negara. Lihat REJECT untuk mengetahui arti dari parameter opsional. RESTART menyetel ulang
bendera yang cocok, yang berarti bahwa tindakan default akan diterapkan, seharusnya tidak lebih
pertandingan terjadi. (Tidak mengubah status eksekusi)

RESYNC Re-synchronize header digunakan untuk mencocokan dengan header mail. Ini
mungkin hanya berguna ketika perintah SUBST atau ANNOTATE dijalankan. (Tidak mengubah
status eksekusi)

CATATAN: Pada waktu RESYNC, agen surat akan memeriksa apakah Content-Transfer-Encoding
header diubah dan akan secara transparan mengkode ulang body jika diperlukan, sehingga
seluruh pesan tetap valid meskipun header mangling. Itu juga akan berhati-hati
memperbarui Konten-Panjang jika diperlukan. Setiap kali Anda mengubah ini penting
header melalui SUBST atau ANNOTATE, pastikan untuk memanggil RESYNC sebelum membuang
pesan atau Anda berisiko menyimpan versi rusak yang tidak akan
dipahami dengan benar oleh agen pengguna email Anda.

MENJALANKAN program
Jalankan program yang ditentukan dan kirimkan output apa pun ke pengguna yang menjalankan agen surat.
Tindakan ini tidak menandai pesan sebagai telah disimpan. (Mengembalikan status
of program)

MENYIMPAN map
Simpan pesan di folder yang ditentukan. Jika nama folder dimulai dengan '+', itu adalah
ditangani sebagai folder gaya MH dan toko rcv ditiru untuk menyampaikan pesan
ke dalam folder itu. Jika folder adalah direktori, pesan dikirim dalam satu
file dalam direktori itu. Lihat FOLDER bagian. (Gagal jika pesan tidak dapat
diselamatkan)

PILIH (awal .. akhir) Command
Jalankan Command hanya dalam jangka waktu pemilihan waktu yang ditentukan. Tanggal bisa
ditentukan dalam berbagai format. Keluaran dari tanggal(1) perintah adalah
contoh spesifikasi yang valid. Jika tanggal, tahun atau bulan tidak ada,
maka yang saat ini diganti di tempat itu. Tanggal-tanggal berikut adalah
spesifikasi yang valid: '10:04:25', 'sekarang' ,'1 April 1992', '25 Des', '14 Juli
1789, 07:40' (err... valid menurut tata bahasa, tapi sebelum
Epoch jadi tidak berarti apa-apa). Tanggal mewah lainnya seperti 'bulan lalu - 5
menit' atau '3 minggu lalu' juga diaktifkan. (Bukankah itu bagus untuk memiliki nyata
pengurai? Aturan penyaringan bisa lebih rumit jika saja saya tahu
tentang Berkeley ini yacc memproduksi a perl pengurai...). (Mengembalikan status
Command, jika dijalankan, jika tidak mengembalikan true).

SERVER [-t] [-d cacat perintah]
Aktifkan pemrosesan server. Tubuh pesan ditafsirkan sebagai daftar
perintah untuk dieksekusi. Lihat bagian UMUM MAIL SERVER untuk informasi lebih lanjut tentang
server itu sendiri. Itu -t opsi mengubah server menjadi Terpercaya mode, Di mana
kekuatan mungkin diperoleh. Itu -d opsi harus diikuti oleh daftar yang dinonaktifkan
perintah, dipisahkan dengan koma tanpa spasi di antaranya.

MEMBELAH [-adeiw] map
Pisahkan email dalam format intisari ke dalam folder yang ditentukan (konvensi penamaan yang sama
seperti pada SIMPAN). Jika tidak ada folder yang ditentukan, setiap item intisari akan diantrekan dan akan
dianalisis sebagai satu surat dengan sendirinya. Itu -d opsi menghapus header intisari.
-i opsi berarti pemisahan dilakukan di tempat dan surat asli dibuang.
Semua pilihan dapat digunakan secara bersamaan asalkan mereka terjebak bersama-sama di
awal (penguraian opsi menjadi sangat sederhana).

Jika email tidak dalam format intisari dan folder ditentukan, maka itu disimpan
dalam folder itu. Jika tidak, tindakan SPLIT gagal dan tidak ada yang terjadi (filter
melanjutkan pemrosesannya). Perintah SPLIT akan meledak dengan benar RFC-934
mencerna pesan dan akan mencoba melakukan yang terbaik. Jika intisarinya tidak
Sesuai dengan RFC-934 dan ada kemungkinan SPLIT telah menghasilkan sesuatu
salah, maka pesan asli juga disimpan jika -i, jika tidak, tidak
ditandai sebagai disimpan (sehingga perintah LEAVE default dapat diterapkan). Itu -w (jam tangan)
meminta perhatian khusus dan akan mendeteksi setiap intisari non RFC-934, bahkan ketika
ketidakpatuhan sebaliknya tidak berbahaya; lebih jauh lagi, sampah yang tertinggal lebih lama
bahwa 100 byte akan disimpan sebagai item intisari dengan sendirinya.

-a opsi membubuhi keterangan setiap item intisari dengan baris header X-Digest-To:,
yang merupakan gabungan dari bidang To: dan Cc: dari intisari asli
pesan. Ini dapat digunakan misalnya untuk memasukkan intisari ke dalam antrian dan
kemudian memproses ulang setiap itemnya sesuai dengan bidang yang ditambahkan ini. Akhirnya,
-e opsi akan membuang header intisari hanya jika isinya kosong (mis
moderator tidak menyertakan komentar terkemuka). (Mengembalikan sukses jika email masuk
mencerna format dan membagi dengan benar tanpa kesalahan)

PENJUAL map
Simpan pesan di folder yang ditentukan dan tinggalkan salinan di kotak surat sistem.
map parameter mengikuti konvensi penamaan yang sama seperti pada SAVE. Lagi,
karena masalah penguncian, meninggalkan surat di kotak surat tidak disarankan di
mesin Debian. (Gagal jika pesan tidak dapat disimpan baik di map atau di
kotak surat)

MENGUPAS header_fields_list
Hapus baris yang sesuai di header surat. Misalnya, "STRIP
Newsgroups Rupanya-Untuk" akan menghapus baris yang sesuai untuk menghapus semua
Newsgroup: atau Rupanya-Ke: header. Anda dapat menambahkan ':' setelah setiap bidang tajuk
nama jika Anda mau, tetapi itu tidak sepenuhnya diperlukan. Header dapat ditentukan
melalui ekspresi reguler gaya shell atau melalui penyertaan "file". (Tidak mengubah
status eksekusi)

SUBST var/tajuk ekspresi
Mengganti ekspresi pada variabel yang ditentukan pengguna yang ditentukan (nama awal
dengan #) atau referensi belakang (digit), atau bidang header (opsional diakhiri dengan
':'). Misalnya

SUBST #foo /w/y/g

akan menggantikan variabel yang ditentukan pengguna foo semua w by y. Lihat juga ASSIGN
dan TR.

Untuk substitusi pada bidang header, seperti:

Subjek SUBST: /\[foo\]\s+//;

baris header yang cocok akan diformat ulang ketika substitusi berhasil,
yang kemungkinan berarti kelanjutan asli tidak akan dipertahankan. Target dari
substitusi adalah seluruh tajuk, dengan kelanjutan dinormalisasi menjadi satu
ruang angkasa. Karena itu Anda dijamin independen dari header yang sebenarnya
memformat dalam aslinya.

Jangan lupa untuk mengeluarkan RESYNC setelah bidang header SUBST, karena beberapa rutinitas
(seperti POST) menyelidiki ke dalam tabel hash header yang diurai untuk menghasilkan yang disimpan
pesan.

(Gagal jika kesalahan dalam ekspresi)

TR var/tajuk terjemahan
Lakukan terjemahan pada variabel tertentu, referensi balik atau header
bidang. Misalnya

TR 1 /AZ/az/

akan mengkanonikalisasi konten referensi 1 menjadi huruf kecil. Berhasil
header transliterasi diformat ulang, bahkan ketika ukuran keseluruhannya tidak
berubah. Lihat juga ASSIGN dan SUBST. (Gagal jika kesalahan dalam terjemahan)

UMASK [-l] mode
Mengubah umask proses ke yang ditentukan mode, yang dapat berupa desimal, oktal
(jika didahului dengan '0') atau heksadesimal (dimulai dengan '0x'). Notasi oktalnya adalah
cara paling jelas untuk menentukan umask. Bukankah rumor mengatakan bahwa oktal
diciptakan untuk tujuan itu saja? ;-) Menggunakan -l opsi untuk mengubah umask
untuk durasi aturan tindakan saat ini saja. Perhatikan bahwa umask default
ditentukan dalam file konfigurasi Anda digunakan untuk mengatur ulang agen suratumask di awal
setiap pemrosesan surat. (Tidak mengubah status eksekusi)

UNIK [-akr] [negara] [(daftar tag)]
Rekam pesan dalam riwayat dan tandai pesan sebagai disimpan jika sudah ada
di sana. Jika pesan direkam untuk pertama kalinya, pemrosesan berlanjut
biasanya. Jika tidak, REJECT dilakukan. Jika -r digunakan, RESTART digunakan
sebagai gantinya sementara -a akan menjalankan ABORT. Misalnya, untuk menghapus duplikat
pesan dari milis, jalankan UNIK -a sebelum menyimpan surat. Itu -c
opsi dapat digunakan sendiri untuk benar-benar mencegah perintah mengganggu
alur eksekusi, dan untuk kemudian menggunakan status pengembalian untuk melihat apa yang terjadi: UNIK
mengembalikan status kegagalan jika pesan sudah direkam. Jika opsional
negara argumen diberikan, maka otomat akan memasuki keadaan itu jika surat
sebelumnya ada di database. Lihat juga REKAM, dan paragraf berjudul
Menggunakan Tags in Rekam dan Khas Papua untuk informasi lebih lanjut tentang daftar tag. (Gagal
jika surat sudah direkam)

LIBURAN [-l] on|off|jalan [periode]
Izinkan atau larang pesan liburan. Saat mode liburan diaktifkan melalui
file konfigurasi, pesan dikirim setiap kali pengguna menerima rapat surat
beberapa persyaratan, seperti yang dijelaskan di bawah bagian LIBURAN MODE. Salah satunya
syaratnya adalah bahwa bendera liburan yang dimodifikasi oleh perintah ini benar. Ini
memudahkan untuk melarang pesan liburan, selamanya, kepada sekelompok orang untuk
contoh.

Dari pada on or lepas, Anda dapat menentukan nama file (~ substitusi diperbolehkan) menjadi
jalur baru yang akan digunakan untuk menemukan file liburan. Secara opsional, Anda dapat
tentukan parameter terakhir, yang akan diambil sebagai periode untuk diterapkan ketika
mengirim pesan liburan. Perubahan pada pesan liburan path adalah
dilarang ketika variabel konfigurasi divaksinasi disetel ke ON.

Jika Anda menggunakan -l opsi, perubahan dilakukan secara lokal, selama aturan
hanya. Jika Anda MENOLAK untuk pergi ke beberapa aturan lain, perubahan Anda akan hilang. Itu
nilai global dari parameter yang diubah diubah pada penggunaan lokal pertama dan
dipulihkan ketika aturan baru dimasukkan. (Tidak mengubah status eksekusi)

MENULIS map
Tulis pesan di folder yang ditentukan, hapus folder yang sudah ada sebelumnya dengan
nama yang sama. Oleh karena itu, perintah MENULIS yang berurutan akan menimpa yang sebelumnya.
Ini berguna untuk menyimpan output dari perintah sistem yang dijalankan cron. Jangan coba-coba menggunakan
dengan folder MH atau folder direktori atau akan berperilaku seperti SAVE. (Gagal
jika pesan tidak dapat ditulis)

Execution Status
Hampir semua tindakan memodifikasi variabel yang melacak status eksekusi
(analog dengan variabel $? di shell). Variabel ini dapat diuji melalui -t or -f
pilihan perintah REJECT misalnya. Untuk memberikan satu contoh saja, tindakan SAVE
akan kembali gagal jika tidak dapat menyimpan email di folder yang ditentukan. Jika itu HEMAT
perintah diikuti oleh "REJECT -f FAILED", maka eksekusi aturan saat ini akan
berhenti dan robot akan terus menganalisis email dalam status GAGAL.

Namun beberapa tindakan tidak mengubah status eksekusi terakhir ini. Biasanya, itu adalah
tindakan yang membuat keputusan berdasarkan status itu, atau hanya tindakan yang mungkin tidak pernah gagal.
Tindakan khusus tersebut adalah: ABORT, ASSIGN, BEGIN, KEEP, MACRO, NOP, REJECT, RESTART,
RESYNC, STRIP dan LIBURAN.

Sangat disayangkan bahwa perintah ONCE atau SELECT tidak dapat membuat perbedaan antara perintah non-
eksekusi dan eksekusi yang sukses dari perintah yang ditentukan. Mungkin ada perubahan
cara kerja skema ini, tetapi harus tetap kompatibel ke belakang.

Perl Melarikan diri
Dengan menggunakan perintah PERL, Anda memiliki kemampuan untuk melakukan penyaringan dan lainnya
tindakan canggih langsung di perl. Ini benar-benar berbeda dari apa yang bisa kamu lakukan dengan
memberi makan email Anda ke skrip Perl. Pertama-tama, tidak ada proses tambahan yang dibuat: skrip
dimuat langsung ke agen surat dan dikompilasi dalam paket khusus yang disebut pengait surat.
Kedua, Anda memiliki antarmuka Perl untuk semua perintah pemfilteran: setiap tindakan pemfilteran
dikaitkan dengan fungsi Perl (ejaan huruf kecil). Akhirnya, beberapa yang telah ditentukan sebelumnya
variabel ditetapkan untuk Anda oleh agen surat.

Sebelum kita melangkah lebih jauh, harap perhatikan bahwa karena tidak ada proses tambahan yang dibuat, Anda harus
tidak panggil perl keluar fungsi. Menggunakan &keluar sebagai gantinya, sehingga pintu keluar mungkin terjebak. &keluar
mengambil satu argumen, kode keluar. Jika Anda menggunakan 0, ini dianggap sukses, apa pun
nilai lain yang berarti kegagalan (yaitu perintah PERL akan mengembalikan status kegagalan). Menggunakan
perl keluar fungsi secara langsung akan membunuh agen surat dan mungkin akan dikenakan beberapa surat
kerugian.

Script yang digunakan harus tetap sederhana. Secara khusus, Anda harus menghindari penggunaan
paket direktif atau mendefinisikan fungsi dengan nama paket selain pengait surat (yaitu
paket tempat skrip Anda dimuat). Kegagalan untuk melakukannya dapat menimbulkan beberapa bentrokan nama dengan
agen suratrutinitasnya sendiri. Secara khusus, hindari utama kemasan. Perhatikan bahwa sejak
lingkungan kompilasi diatur ke pengait surat, tidak menentukan nama paket di . Anda
variabel dan subrutin baik-baik saja (sebenarnya, itu dimaksudkan untuk bekerja seperti itu).

Skrip Anda bebas melakukan apa pun yang diinginkannya terhadap surat. Namun sebagian besar waktu, Anda berakhir
menggunakan agen surat primitif untuk menyimpan surat atau meneruskannya (tetapi Anda bebas untuk
mendesain ulang Anda sendiri dan memanggil mereka sebagai gantinya, tentu saja). Antarmukanya sederhana: masing-masing
fungsi hanya mengambil satu argumen, string, yang merupakan argumen untuk perintah, jika ada.
Misalnya, dalam skrip pelarian Perl, Anda akan mengungkapkan:

{ SIMPAN daftar; MAJU "pengguna"; MEMBERI MAKAN ~/bin/mail baru -ti; MENOLAK }

dengan:

&save('daftar');
&forward('"pengguna"');
&memberi makan('~/bin/mail baru -tty');
&menolak;

Aturannya sederhana: setiap perintah diganti dengan panggilan fungsi, dengan sisanya
parameter terlampir dalam string, jika ada. Atau, Anda dapat menentukan parameter sebagai
list: semua argumen yang Anda berikan digabungkan menjadi string bahagia yang besar, menggunakan spasi
karakter sebagai pemisah. Mekanisme substitusi makro kemudian dijalankan pada hasil ini
string argumen.

Setiap fungsi mengembalikan status sukses boolean dari perintah (yaitu 1 berarti sukses). Untuk
fungsi-fungsi yang biasanya tidak mengubah variabel status eksekusi terakhir filter, a
kesuksesan selalu kembali. Ini memungkinkan untuk (secara intuitif) menulis:

&keluar(0) jika &save('uucp');
&bounce('root') || &save('darurat');

dan mendapatkan hasil yang diharapkan. Surat akan disimpan di folder darurat hanya jika
penyimpanan di folder uucp gagal dan email tidak dapat terpental ke root.

Penting untuk dipahami bahwa perintah ini memiliki persis efek yang sama pada
proses penyaringan ketika dijalankan dari skrip pelarian Perl atau dari dalam file aturan
sebagai tindakan biasa. SEBUAH &menolak panggilan hanya akan mengabaikan eksekusi perl . saat ini
skrip dan robot filter akan mendapatkan kembali kendali dan mencoba kecocokan baru. Tetapi perl
memberi Anda lebih banyak kekuatan, khususnya panggilan sistem, struktur kontrol seperti if dan
untuk, ekspresi reguler mentah, dll...

The special perl @INC array (yang mengontrol jalur pencarian untuk membutuhkan) sedikit
dimodifikasi dengan menambahkan jalur perpustakaan pribadi agen surat. Ini membuat pintu terbuka untuk
skrip perl perpustakaan agen surat masa depan yang mungkin diperlukan oleh skrip perl.
Selanjutnya, variabel khusus berikut diatur oleh Perl sebelum menjalankan
naskah:

@ARGV Argumen skrip, yang diberikan oleh perintah PERL. Ini
array diatur dengan cara yang sama persis seperti yang Anda harapkan akan diatur jika Anda
menjalankan perintah langsung dari shell, kecuali bahwa @ARGV[0] adalah
nama skrip (karena Anda tidak dapat menggunakan perl's $0 untuk mendapatkannya; itu akan
memberi Anda nama agen surat).
$alamat Bagian alamat dari From: line.
$cc Konten mentah dari baris Cc:.
@cc Daftar alamat pada baris Cc:, dengan komentar yang disembunyikan.
$amplop Amplop surat, seperti yang dihitung menggunakan baris Dari pertama dari pesan.
$ramah Bagian komentar dari baris From:, jika ada.
$dari Isi baris Dari:, dengan alamat dan bagian komentar.
%tajuk Tabel ini, diindeks oleh nama bidang, mengembalikan konten mentah pada
baris header yang sesuai. Lihat di bawah.
$msgpath Nama path lengkap folder (atau pesan di dalam folder MH) tempat
operasi penyimpanan terakhir telah terjadi. Ini dimaksudkan untuk digunakan jika Anda mau
untuk membuat pemberitahuan penerimaan email Anda sendiri.
$panjang Panjang pesan, dalam byte.
$baris Jumlah baris dalam pesan.
$masuk Nama login alamat pada baris Dari:.
$keutamaan Isi Precedence: baris, jika ada.
@relay Daftar nama host (mungkin alamat IP mentah jika tidak ada pemetaan DNS) terdaftar
di (dihitung) Relay: baris header.
$balas_kepada Alamat email tempat balasan harus dikirim, dengan komentar
tertindas.
$pengirim Pengirim pesan (mungkin memiliki komentar), diturunkan dengan cara yang sama:
Pengirim: baris dihitung oleh agen surat.
$subjek Subjek pesan.
$ke Konten mentah dari To: line.
@ke Daftar alamat pada baris To:, dengan komentar yang disembunyikan.

Array asosiatif %tajuk memberi Anda akses ke semua bidang di tajuk
pesan. Contohnya, $ke benar-benar nilai $header{'Ke'}. Kuncinya ditentukan
menggunakan kasus yang dinormalisasi, yaitu huruf pertama dari setiap kata dikapitalisasi, sisanya
menjadi huruf kecil. Ini tidak tergantung pada representasi fisik aktual di
pesan itu sendiri.

Kunci semu kepala, Body dan Semua masing-masing memberi Anda akses ke header mentah dari
pesan, isi dan keseluruhan pesan. Itu %tajuk array benar-benar referensi ke
agen suratstruktur data internal, jadi memodifikasi nilai akan memengaruhi pemfilteran
proses. Misalnya, perintah SAVE menulis: kepala, yang Filter-X: garis, akhir dari
header (satu baris baru) dan kemudian Body (ini hanya contoh, bukan dokumentasi
fitur :-). Itu =Tubuh= kuncinya khusus: ini adalah referensi Perl ke skalar yang berisi
body dengan pengkodean transfer konten apa pun yang dihapus.

Perhatikan bahwa $msgpath variabel hanya menyimpan snapshot dari jalur folder pada saat
pelarian PERL dipanggil. Jika Anda melakukan penghematan Anda sendiri di Perl, maka Anda perlu melihat
di $main'folder_saved sebagai gantinya untuk mendapatkan nilai jalur folder terbaru.

Sebagai catatan terakhir, tahan godaan untuk membaca bagian dalam agen surat dan
langsung memanggil rutinitas yang Anda butuhkan. Jika tidak didokumentasikan di halaman manual, mungkin:
dapat diubah tanpa pemberitahuan oleh patch lebih lanjut. (Dan ini tidak mengatakan bahwa didokumentasikan
fitur mungkin tidak berubah juga... Hanya saja lebih tidak mungkin, dan tambalan akan dengan jelas menyatakan
itu, tentu saja.)

program Lingkungan Hidup
Semua program yang dimulai oleh agen surat melalui RUN dan teman-teman mewarisi yang berikut:
variabel lingkungan: HOME, USER dan NAME, masing-masing diatur dari konfigurasi
parameter rumah, pemakai dan nama. Jika agen surat dipanggil oleh menyaring, maka PATH
juga diatur sesuai dengan file konfigurasi (jika Anda menggunakan filter C) atau ke
apa pun yang Anda atur PATH (jika Anda menggunakan filter Shell).

Semua program dijalankan dari dalam rumah direktori. Ini termasuk skrip
dimulai melalui perintah PERL dan kait surat. Yang terakhir akan dijelaskan secara rinci
lebih kebawah lagi.

File penyertaan
Beberapa perintah seperti FORWARD atau KEEP memungkinkan Anda untuk menentukan nama file di antara tanda kutip ganda
untuk benar-benar memuat parameter dari file ini. Kecuali jalur lengkap diberikan, berikut ini
metode yang digunakan untuk mencari file: pertama di lokasi yang ditunjuk oleh filter surat
variabel jika diatur, jika tidak di maildir dan akhirnya di direktori home. Perhatikan bahwa ini adalah
bukan jalur pencarian dalam arti jika filter surat didefinisikan dan file tidak ada, dan
kesalahan akan dilaporkan.

File harus mencantumkan setiap parameter (baik itu alamat, header, atau pola) pada baris dengan
diri. Komentar gaya shell (#) diperbolehkan di dalam file itu dan spasi putih di depan adalah
dipangkas (tetapi bukan spasi tambahan).

Macro substitusi
Semua perintah melalui mekanisme substitusi makro sebelum dieksekusi. Itu
makro berikut tersedia:

%% Tanda persen nyata
%A Alamat internet diekstraksi dari Dari: bidang (abc in [email dilindungi]),
diubah menjadi huruf kecil.
%C Nama CPU yang menjalankan agen surat. Itu adalah nama host yang sepenuhnya memenuhi syarat dengan
nama domain, misalnya lyon.eiffel.com.
%D Hari dalam seminggu (0-6)
%H Nama host (nama mesin tempat agen surat berjalan), tanpa domain apa pun
nama. Selalu dalam huruf kecil, apa pun nama mesinnya.
%I Nama domain internet diekstraksi dari Dari: bidang (bc in [email dilindungi]),
diubah menjadi huruf kecil.
%L Panjang bagian tubuh, dalam byte, dengan pengkodean transfer konten dihapus.
%N Nama lengkap pengirim (nama login jika tidak ada)
%O Nama organisasi diekstraksi dari Dari: bidang (b in [email dilindungi]), dikonversi
untuk huruf kecil.
%R Subjek dari pesan asli dengan awalan Re: Supressed
%S Re: subjek pesan asli
%T Waktu modifikasi terakhir pada file yang dikirim (perintah MESSAGE dan NOTIFY)
%U Nama lengkap pengguna
%Y Setahun penuh, dengan empat digit (disebut yyyy format)
%_ Sebuah spasi putih (berguna untuk menempatkan spasi putih dalam pola tunggal)
%& Daftar penyeleksi yang menghasilkan kecocokan (di antara yang ditentukan melalui reguler
ekspresi seperti 'X-*: /foo/i'. Jika kita menemukan foo substring di X-Mailer:
baris header, maka %& akan disetel ke nilai ini). Nilai dalam daftar adalah koma
terpisah.
%~ Karakter null, dihapus dari string yang dihasilkan.
%angka Nilai referensi balik yang sesuai dari pertandingan terakhir.
%#adalah Nilai variabel yang ditentukan pengguna adalah
%=adalah Nilai variabel konfigurasi agen surat adalah sebagaimana ditentukan dalam
~/.mailagent file.
%d Hari dalam sebulan (01-31)
%e Alamat email pengguna (milik Anda!).
%f Isi baris "Dari:", seperti %N <%r> atau %r (%N) tergantung pada caranya
mailer dikonfigurasi.
%h Jam dalam sehari (00-23)
%i ID Pesan, jika tersedia (jika tidak, ini adalah string nol)
%l Jumlah baris dalam pesan, setelah pengkodean transfer konten dihapus
%m Bulan dalam setahun (01-12)
%n Nama login dengan huruf kecil dari pengirim
%o Organisasi (di mana agen surat berjalan)
%r Alamat pengirim pesan
%s Subjek pesan asli
%t Jam dan menit saat ini (dalam format JJ:MM)
%u Nama login pengguna
%y Tahun (dua digit terakhir)
%[Kepada] Nilai bidang tajuk (di sini Ke :)

Ditetapkan pengguna Macro
Agen surat memungkinkan Anda menentukan makro Anda sendiri dengan dua cara: pada tingkat filter melalui
Perintah MAKRO, atau pada tingkat perl dalam perintah atau tindakan perl Anda sendiri.

Setelah ditentukan, makro pengguna (katakanlah foo) dapat diganti dengan menggunakan %-(foo). Dalam hal a
makro satu huruf, yang dapat dioptimalkan menjadi %-F misalnya, yaitu kurung bisa
dihilangkan.

Ada enam jenis makro:

SCALAR Nilai skalar diberikan, misalnya: merah. Nilai makro adalah skalar literal
nilai, tidak ada interpretasi lebih lanjut yang dilakukan pada data.

EXPR Ekspresi perl akan menjadi evaluasied untuk mendapatkan nilai, mis: $merah. Perhatikan bahwa
evaluasi akan dilakukan dalam usrmac paket, jadi jika Anda merujuk
ke variabel dalam paket lain, akan lebih bijaksana untuk menentukannya, seperti pada
$foo'bar.

CONST Ini benar-benar sama dengan EXPR, tetapi nilainya diketahui sebagai konstanta. Sehingga
pertama kali substitusi dibuat, ekspresi akan dievaluasi, dan kemudian
hasilnya di-cache.

FN Nama fungsi perl (tanpa awalan &), seperti main'do_this. itu
fungsi akan dipanggil dengan satu parameter: nama makro itu sendiri.
Itu membuat pintu terbuka untuk konvensi yang ditentukan pengguna lebih lanjut dengan memaksa
evaluasi melalui satu fungsi Perl tunggal.

PROG Program yang dijalankan untuk mendapatkan nilai sebenarnya. Hanya baris baru yang tertinggal yang dipotong,
lainnya dipertahankan. Program ini bercabang setiap kali. Dalam daftar argumen
diberikan ke program, %n diperluas sebagai nama makro yang kami coba
evaluasi. Jika Anda menentukan itu dalam aturan pemfilteran, jangan lupa untuk menghindari
pertama %.

PROGC Sama seperti PROG, tetapi programnya hanya bercabang sekali dan nilainya di-cache
untuk teliti nanti.

Pada tingkat perl, empat fungsi memungkinkan Anda memanipulasi dan menentukan makro Anda (semua bagian dari
itu usrmac kemasan):

nama baru, nilai, Tipe)
Ganti atau buat makro %-(nama). Contohnya:

new('foo', "$mailhook'header{'X-Foo'}", 'EXPR');

akan membuat makro baru foo yang akan berkembang menjadi nilai hipotetis
X-Foo tajuk.

hapus (nama)
Hapus semua nilai yang direkam untuk makro.

dorong (nama, nilai, Tipe)
Tumpuk makro baru, buat jika perlu.

pop(nama) Hapus definisi makro terakhir di tumpukan.

Satu tumpukan makro dialokasikan untuk setiap makro, sehingga semacam pelingkupan dinamis mentah
mungkin diimplementasikan. Membuat makro melalui mendorong seperti mengambil variabel lokal di Perl,
sambil membuat satu demi yang baru hanya menugaskan ke variabel. Mungkin, pop seperti keluar dari
blok dengan definisi variabel lokal dan hapus membebaskan semua makro yang menyandang nama itu,
yaitu menghapus seluruh tumpukan.

Pada level filter, perintah MAKRO memiliki tiga opsi. Secara default, perintah mendefinisikan
makro baru dengan menggunakan mendorong, dan masing-masing opsi lainnya memungkinkan Anda mengakses satu sama lain
fungsi antarmuka. Perhatikan bahwa definisi makro tetap ada di seluruh perintah APPLY.

Ditetapkan pengguna Logging
Sebagian besar waktu ketika menulis perintah pemfilteran agen surat baru atau pengait perl, Anda akan
memiliki kebutuhan untuk pencatatan khusus, baik untuk melaporkan masalah atau untuk melacak apa yang Anda
sedang tampil.

Biasanya, log ditambahkan ke dalam agenlog file dengan menelepon &main'add_log(string) (Lihat
ayat Umum Tujuan Rutinitas). Untuk tindakan agen surat biasa, ini tidak masalah.

Tetapi agen surat memungkinkan Anda menentukan file logging alternatif, yang dirujuk berdasarkan nama. generik ini
antarmuka logging didefinisikan dalam usrlog paket:

nama baru, file, bendera)
Merekam file log baru yang dikenal sebagai nama dan selesai di fillet. Jika nama path diberikan untuk
file ini tidak mutlak, itu di-root di bawah logdir direktori. Jika bendera is
disetel ke true, setiap pencatatan yang dilakukan ke file ini juga akan disalin ke default
file log seluruh sistem. Tidak ada yang dilakukan jika file log dengan nama yang sama sudah
telah didefinisikan.

hapus (nama)
Menghapus file log yang dikenal sebagai nama. Pencatatan lebih lanjut yang dilakukan ke file itu adalah
diarahkan ke file log default.

main'usr_log(nama, rangkaian)
Menambahkan entri ke file log nama. File log default dikenal sebagai kegagalan dan
tidak dapat didefinisikan ulang atau dihapus. Perhatikan bahwa fungsi ini tersedia dari
utama kemasan. Menyebutnya dengan nama atur ke string 'bawaan' sebagian besar
setara dengan menelepon langsung main'add_log dengan pengecualian bahwa
-i opsi agen surat tidak akan dihormati dalam kasus itu. Ini mungkin atau mungkin tidak
berguna untuk Anda.

Jika Anda menelepon &main'usr_log dengan nama file log yang tidak ada, logging dialihkan ke
file log seluruh sistem default yang ditentukan di . Anda ~/.mailagent.

Secara dinamis pemuatan New Kode
Dalam rutinitas Perl Anda (perintah yang ditentukan pengguna, kait perl, dll...), Anda mungkin merasa perlu untuk
memuat beberapa kode baru secara dinamis ke agen surat. Anda memiliki akses langsung ke internal
rutin yang digunakan oleh agen surat untuk mengimplementasikan perintah REQUIRE atau memuat pemfilteran baru Anda
perintah misalnya.

Menggunakan apa yang disebut dynload antarmuka membelikan Anda beberapa fitur tambahan:

· Jalur perpustakaan umum agen surat secara otomatis ditambahkan ke larik @INC, yang
memungkinkan Anda menentukan file perpustakaan perl seluruh sistem atau pribadi Anda sendiri (private
jalur perpustakaan ditentukan oleh perlib variabel konfigurasi, jalur perpustakaan umum
ditentukan pada waktu instalasi).

· Suka perl's membutuhkan, agen surat melacak file mana yang dimuat ke dalamnya
paket dan tidak akan memuat ulang file yang sama dalam paket yang sama dua kali.

· Dimungkinkan untuk memastikan bahwa fungsi tertentu ditentukan dalam file yang dimuat,
dengan kesalahan yang dilaporkan jika hal ini tidak terjadi.

· Anda mendapat manfaat dari pencatatan default yang dilakukan oleh dynload ketika beberapa kesalahan terjadi.

Untuk melakukan semua ini, Anda menelepon:

&dynload'load(paket, file, fungsi)

menentukan paket ke mana Anda ingin memuat file, dan secara opsional nama a
fungsi yang harus ditentukan setelah file dimuat (biarkan bidang ini ke tidak pasti if
Anda tidak memiliki batasan seperti itu). Rutinitas kembali tidak pasti jika file tidak bisa
dimuat (file tidak ada, kemungkinan besar), 0 jika file dimuat tetapi berisi sintaks
kesalahan atau tidak mendefinisikan fungsi yang ditentukan, dan 1 untuk sukses.

Menggunakan Sekali Perintah
Konstruksi ONCE memungkinkan Anda menentukan perintah yang diberikan untuk dijalankan sekali setiap periode (hari,
pekan...). Perintah tersebut diidentifikasi oleh a nama dan label, kombinasi keduanya
unik. Mengapa tidak hanya satu pengidentifikasi? Yah, itu akan baik-baik saja, tetapi anggaplah kamu mau
mengirim pesan sebagai balasan kepada seseorang sekali setiap minggu. Anda bisa menggunakan alamat email dari
orang sebagai pengenal perintah. Tetapi bagaimana jika Anda juga ingin mengirim pesan lain ke
alamat yang sama, kali ini sebulan sekali?

Berikut adalah penggunaan prototipikal ONCE, yang bertindak seperti program liburan, kecuali
bahwa ia mengirim balasan hanya sekali sehari untuk alamat yang diberikan:

{ SEKALI (%r, pesan, 1d) PESAN ~/.pesan };

Ini bergantung pada mekanisme substitusi makro untuk mengirim hanya sekali sehari pesan yang ditahan
in ~/.pesan. Jangan gunakan tag liburan, kecuali Anda tahu apa yang Anda lakukan: ini adalah
tag yang digunakan secara internal oleh agen surat dalam mode liburan. Ingatlah bahwa tidak ada pemilih atau pola
dipahami sebagai "Subjek: *", maka aturan selalu dijalankan karena pola itu
selalu cocok.

Stempel waktu yang terkait dengan setiap perintah disimpan dalam file di bawah direktori Hash.
Nama digunakan sebagai kunci hashing untuk menghitung nama file (dua huruf pertama
digunakan). Di dalam file, stempel waktu diurutkan berdasarkan nama, lalu menurut tag. Tentu saja kamu
bisa mengatakan (membalikkan tag dan nama):

{ SEKALI (pesan, %r, 1d) PESAN ~/.pesan };

tapi itu kemungkinan akan kurang efisien, karena hashing pertama akan dilakukan pada
kata tetap, maka semua cap waktu akan ditempatkan di file Hash/m/e (dimana Hash is
nama direktori hashing Anda, yang merupakan hash parameter dalam konfigurasi
file).

Menggunakan Tags in Rekam dan Khas Papua
Baik perintah RECORD dan UNIQUE memungkinkan Anda menentukan daftar tag yang dipisahkan koma antara '('
dan ')'. Untuk setiap tag yang ada dalam daftar, ada entri terpisah di database
terkait dengan ID pesan. Ketika pesan direkam untuk setidaknya satu tag,
perintah "gagal". Tidak menentukan tag apa pun berarti mencari kejadian itu
ID pesan, apakah itu ditandai atau tidak.

Ini sangat berguna saat menerima email yang dikirim silang ke milis yang berbeda dan Anda
ingin menyimpan satu contoh pesan di setiap folder, tetapi tetap waspada
duplikat. Anda mungkin mengatakan:

Ke Cc: unix-wizards {
UNIK (penyihir);
SIMPAN penyihir;
MENOLAK;
};
Kepada Cc: majordomo-users {
UNIK (mayordomo);
SIMPAN majordomo;
MENOLAK;
};

dan hanya satu pesan yang akan berakhir di setiap folder. Ketika Anda memiliki folder
dengan kepentingan yang bertentangan, Anda dapat menggunakan daftar tag, bukan satu tag. Untuk
misalnya, dengan asumsi Anda ingin menyimpan satu salinan untuk pesan yang diposting silang ke keduanya daerah-
Pengguna dan agen-pengguna, tetapi memiliki salinan terpisah jika juga diposting silang ke majordomo-pengguna,
lalu berkata:

Kepada Cc: majordomo-users {
UNIK (mayordomo);
SIMPAN majordomo;
MENOLAK;
};
Kepada Cc: dist-pengguna {
UNIK (distrik, agen);
SIMPAN pengguna dist;
MENOLAK;
};
Kepada Cc: agen-pengguna {
UNIK (distrik, agen);
SIMPAN pengguna dist;
MENOLAK;
};

Jika Anda memiliki beberapa aturan menggunakan UNIK tanpa tag apa pun, itu akan cocok ketika setidaknya satu
contoh pesan telah direkam, tidak peduli tag apa (jika ada) yang digunakan dalam
posisi pertama.

Menentukan A Periode
Parameter periode dari perintah ONCE atau masa kosong parameter konfigurasi Anda
file memiliki format berikut: angka diikuti oleh pengubah. Pengubahnya adalah atom
periode seperti hari atau minggu, nomor adalah jumlah periode atom periode akhir
harus sama dengan. Modifier yang tersedia adalah:

m menit
jam jam (60 menit)
hari H (24 jam)
minggu w (7 hari)
M bulan (30 hari)
y tahun (365 hari)

Semua periode dikonversi secara internal dalam hitungan detik, meskipun Anda tidak terlalu peduli ...
Contoh periode valid berkisar dari "1m" hingga "136y" pada mesin 32 bit (mengapa?).

Batas waktu
Untuk menghindari agen surat menunggu perintah selamanya, eksekusi maksimal
waktu satu jam diperbolehkan secara default. Melewati jumlah waktu itu, anak itu dikirim sebagai
sinyal SIGTERM. Jika tidak mati dalam 30 detik berikutnya, SIGKILL dikirim. Keluaran
dari program, jika ada sejauh ini, dikirimkan kembali ke pengguna. Perilaku default ini mungkin
diubah dengan mengatur yang tepat runmax variabel dalam file konfigurasi Anda untuk memungkinkan lebih banyak
waktu untuk menyelesaikan perintah.

Ada juga menyaring batas waktu antrian. Untuk memoderasi beban sistem, C menyaring
program menunggu 60 detik secara default (atau apa pun antriantunggu diatur ke dalam file konfigurasi)
sebelum diluncurkan agen surat. Untuk menghindari konflik, pesan diantrekan oleh filter pertama (yang
kemudian akan tidur untuk antriantunggu detik) tidak diproses oleh agen surat's -q pilihan sampai
mereka setidaknya antrian detik. Parameter terkait antrian lainnya adalah hilang antrian, itu
jumlah detik setelah itu agen surat akan menandai pesan sebagai "hilang" saat mencantumkan
antre.

Terakhir, kebijakan batas waktu penguncian juga dapat dikonfigurasi. Secara default, kunci rusak
ketika berumur satu jam (dikonfigurasi oleh kunci variabel) dan agen surat hanya akan membuat
lockmax percobaan, spasi oleh penundaan penguncian detik untuk mendapatkan kunci. Kemudian akan dilanjutkan
apakah itu mendapat kunci itu atau tidak. Jika Anda menginginkan kebijakan penguncian yang aman, pastikan lockmax
kali penundaan penguncian lebih besar dari kunci, parameter itu cukup "besar".

Menghindari loops
agen surat meninggalkan tajuk "X-Filter:" pada setiap pesan yang difilter, yang pada gilirannya digunakan
untuk mendeteksi loop. Jika pesan yang sudah difilter akan diproses, agen surat memasuki a
status khusus _SEEN_. Status ini istimewa dalam artian bawaan, tidak cocok
oleh ALL, dan beberapa tindakan tidak tersedia, yaitu: BACK, BOUNCE, FEED, FORWARD,
GIVE, NOTIFY, PASS, PIPE, POST, PURIFY, QUEUE and RUN. Perhatikan juga bahwa meskipun ONCE
dan konstruksi SELECT diaktifkan, mereka tidak akan membiarkan Anda menjalankan perintah yang tidak diizinkan.
Jika tidak, status _SEEN_ berperilaku seperti status lain yang dapat Anda pilih atau batalkan, jadi a
penjaga tidak akan memilih aturan ketika kita dalam keadaan _SEEN_.

Status _SEEN_ memudahkan untuk menangani email yang loop karena alias loop Anda
tidak memiliki kendali. Jika tidak ada tindakan yang ditemukan dalam status _SEEN_, email akan ditinggalkan di
kotak surat, seperti biasa. Selain itu, jika tidak ada penyimpanan yang dilakukan, TINGGAL dijalankan. Ini normalnya
tingkah laku.

Header "X-Filter:" hanya ditambahkan saat pesan disimpan. Tindakan seperti PIPA atau
MEMBERI tidak menandai pesan sebagai disimpan dan karena itu mereka melakukannya tidak tambahkan tajuk itu
garis. Anda dapat menambahkannya melalui ANNOTATE jika Anda ingin mencegah pengulangan, jika programnya
yang Anda beri makan pesan mungkin mengembalikannya kepada Anda dengan cara yang aneh.

Pesan File
Teks pesan yang akan dikirim kembali (untuk PESAN atau PEMBERITAHUAN) dibaca dari file dan
melewati mekanisme substitusi makro. makro khusus %T diatur ke tanggal
modifikasi terakhir yang dibuat pada file itu. Formatnya adalah bulan hari, dan tahun ditambahkan
sebelum bulan hanya jika berbeda dari tahun berjalan.

Di kepala pesan, Anda dapat meletakkan baris header. Baris-baris itu akan menimpa
baris yang disediakan default. Itu mungkin berguna untuk mengubah subjek default atau menambahkan beberapa
bidang tambahan seperti nama organisasi Anda. Akhir tajuk Anda diberikan oleh
baris kosong pertama yang ditemui. Jika bagian atas pesan yang ingin Anda kirim terlihat seperti
header email, Anda dapat melindunginya dengan menambahkan baris kosong di bagian paling atas file. Ini
baris dummy akan dihapus dari pesan dan seluruh file akan dikirim sebagai badan
bagian.

Berikut adalah contoh file liburan. Kami menambahkan salinan karbon serta nama kami
organisasi di tajuk:

Cc: ram
Organisasi: %o
Prioritas: massal

[Revisi terakhir dibuat pada %T]

%N yang terhormat:

Saya telah menerima email Anda tentang "%R".
Ini akan dibaca segera setelah saya kembali dari liburan.

Hormat kami,
--
%U <%u@%C>

LIBURAN MODE


Ketika saatnya untuk berlibur, dimungkinkan untuk mengatur agen surat dalam mode liburan.
Setiap masa kosong, pesan file vaksin akan dikirim kembali ke pengguna (dengan makro
substitusi) jika pengguna secara eksplisit tercantum dalam Untuk or Cc lapangan dan jika pengirimnya adalah
bukan pengguna khusus (akar, uucp, berita, daemon, kepala kantor pos, pembawa berita, usenet, Pengirim-
daemon, Mailer-Agen or tak seorangpun). Pertandingan dilakukan dengan cara yang tidak peka huruf besar-kecil, jadi
MAILER-DAEMON juga akan dikenali sebagai pengguna khusus. Selanjutnya, pesan apa pun yang ditandai
dengan Hak lebih tinggi: bidang diatur ke jumlah besar, daftar or rongsokan tidak akan memicu pesan liburan.
Perilaku bawaan ini tentu saja dapat dibebani oleh aturan yang sesuai (dengan menguji dan
mengeluarkan pesan liburan sendiri melalui MESSAGE).

Secara internal, agen surat menggunakan perintah ONCE yang ditandai (%R, liburan, $periode kosong). Ini menyiratkan
Anda tidak harus menggunakan liburan tandai perintah ONCE Anda sendiri, kecuali Anda tahu siapa Anda
perbuatan.

Selain itu, pesan liburan dikirim hanya jika tidak ada perintah "VACATION off" yang dikeluarkan, atau
jika "LIBUR aktif" yang lain menimpa yang sebelumnya. Perhatikan apakah aturan cocok atau
not tidak relevan dengan algoritma. Secara default, tentu saja, pesan liburan diperbolehkan
ketika liburan parameter konfigurasi diatur ke on.

Jika Anda tidak senang dengan kenyataan bahwa pesan liburan dikirim ke orang yang dituju
Anda hanya salinan karbon, maka Anda dapat menulis di bagian atas file aturan Anda:

Cc: ram { LIBUR libur; MENOLAK };

Tentu saja, Anda harus mengganti nama login Anda sendiri sebagai ganti ram. Anda tidak dapat menggunakan
skema yang sama untuk mengizinkan pesan liburan ke pengguna khusus seperti akar, karena ujian untuk
"kekhususan" terjadi setelah bendera mode liburan. Ini ditafsirkan sebagai fitur seperti itu
mencegah kesalahan bodoh, seperti menggunakan r* alih-alih ram dalam aturan sebelumnya.

Anda mungkin juga ingin menyiapkan pesan liburan yang berbeda, yang dimaksudkan hanya untuk orang-orang di . Anda
organisasi mengingat sifat sensitif dari informasi yang diungkapkan ;-). Cara sederhana
melakukan itu adalah:

Dari: /^\w+$/, /^\w+@\w+$/, /^[\w.-]+@.*\.hp\.com$/i
{ LIBURAN ~/.hp_vacation 1w; TOLAK HP };

Dengan asumsi domain organisasi saya adalah .hp.com dan pesan itu tidak mengandung domain apa pun
adalah pesan lokal, aturan di atas mengatur file ~/.hp_vacation, dikirim seminggu sekali, untuk
seluruh karyawan HP.

Perintah VACATION tidak akan membiarkan Anda mengubah jalur pesan (tetapi akan mengizinkan frekuensi
tetap berubah) ketika divaksinasi variabel konfigurasi diatur ke ON. Ini dimaksudkan untuk menjadi
digunakan dalam situasi darurat, ketika hanya satu pesan liburan yang muat. Misalnya, ketika
Anda sedang cuti sakit, pesan pemicu sederhana ke agen surat Anda dari rumah bisa berubah
Tujuan ~/.mailagent konfigurasi untuk memaksa ~/.i_am_sakit pesan, terlepas dari apa yang
berbagai aturan katakan. Sebenarnya, inilah tepatnya mengapa fitur ini ditambahkan,
luar biasa... :-)

VARIABEL


Variabel berikut diperhatikan: mereka mungkin berasal dari lingkungan atau menjadi
diatur dalam file aturan:

filter surat
menunjukkan di mana pola yang dimuat harus dicari, jika nama filenya adalah
tidak sepenuhnya memenuhi syarat. Jika tidak diatur, maildir akan digunakan sebagai gantinya. Jika maildir
tidak disetel, direktori home digunakan.

maildir adalah lokasi folder email Anda. Setiap jalur relatif dipahami sebagai
mulai dari maildir. Jika tidak diatur, ~/Surat digunakan.

Variabel-variabel tersebut tetap aktif saat berada dalam cakupan file aturan. Haruskah alternatif?
file aturan digunakan (melalui kait aturan atau perintah BERLAKU), nilai saat ini disebarkan
ke set aturan baru kecuali diganti dalam file aturan alternatif. Bagaimanapun,
nilai sebelumnya dikembalikan ketika kontrol ditransfer kembali ke set aturan sebelumnya.
Artinya, variabel-variabel itu secara dinamis dicakup, bukan statis.

OTOMATIS UCAPAN TERIMA KASIH


Di mana saja dalam surat, mungkin ada garis lurus kiri @RR yang akan mengirim kembali
pengakuan kepada pengirim surat. @RR secara opsional dapat diikuti oleh
alamat, dalam hal ini pengakuan akan dikirim ke alamat itu sebagai gantinya. Faktanya
(tapi mari kita rahasiakan itu), ini adalah cara bagi saya untuk dapat melihat siapa yang menjalankan saya
program agen surat dan siapa yang tidak...

kirim email program biasanya mengimplementasikan fitur seperti itu melalui Return-Receipt-To: header
baris, yang mengirimkan kembali seluruh tajuk setelah pengiriman berhasil. Namun, ini bukan
diimplementasikan pada semua agen pengiriman surat, dan @RR adalah alternatif yang baik :-).

CATATAN BENAR


Sepanjang halaman manual ini, saya selalu menulis bidang header dengan huruf pertama dari
setiap kata menggunakan huruf kapital, seperti pada Kembali-Penerimaan-Ke. Tapi RFC-822 tidak memaksakan ejaan ini
konvensi, dan pengirim surat dapat secara legal menulis ulang bidang sebelumnya sebagai kembali-terima-ke
(dan sebenarnya begitu juga kirim email dalam file antrian surat pribadinya sendiri).

Namun, Anda harus selalu menentukan header dalam apa yang bisa disebut sebagai dinormalisasi kasus
(untuk header pula). Agen surat akan mengenali dengan benar cc:, CC: or Cc: dalam sebuah surat
pesan dan akan memungkinkan Anda untuk memilih bidang tersebut melalui yang dinormalisasi Cc: pemilih. Di dalam
sebenarnya, ini mengoperasikan normalisasi untuk Anda, dan a cc: pemilih tidak akan dikenali sebagai
seperti. Tentu saja, tidak ada perubahan fisik yang dilakukan pada header itu sendiri.

Hal ini juga berlaku untuk header yang ditentukan dalam perintah STRIP atau KEEP. Jika Anda menulis MENGUPAS
Cc, itu akan menghapus semua dengan benar cc: garis. Demikian juga, jika Anda menggunakan ekspresi reguler untuk
tentukan pemilih, Ulang.*: akan cocok dengan keduanya yang asli diterima: dan jalur kembali: ladang,
diketahui secara internal melalui representasi yang dinormalisasi.

MAIL KAIT


Kait surat memungkinkan agen surat untuk secara transparan menjalankan beberapa skrip atau melakukan lebih lanjut
pemrosesan pada pesan. Kait tersebut diaktifkan melalui SAVE, STORE, atau TINGGALKAN
perintah. Yaitu, menyimpan di folder yang bit executable-nya diatur akan menaikkan spesial
pengolahan. Secara default, folder diambil sebagai program tempat surat harus disalurkan
ke. Jika program "folder" mengembalikan status nol, maka pesan tersebut dianggap disimpan by
agen surat. Jika tidak, semua pemrosesan yang dilampirkan pada perintah penyimpanan yang gagal akan dimulai
(termasuk upaya penyelamatan darurat). Folder yang dapat dieksekusi menyediakan cara transparan (dari
sudut pandang file aturan) untuk menangani jenis pesan khusus.

Bahkan, tersedia lima jenis pengait yang berbeda. Yang pertama adalah dataran
folder yang dapat dieksekusi yang baru saja kita bicarakan. Tapi nyatanya, inilah yang sebenarnya terjadi ketika
perintah penyimpanan mendeteksi folder yang dapat dieksekusi: agen surat memindai baris pertama dari
folder (sebenarnya, 128 byte pertama) dan mencari sesuatu yang dimulai dengan #: dan
diikuti oleh satu kata, yang menggambarkan jenis kail khusus. Ini mirip caranya
kernel berhubungan dengan #! kaitkan dalam program yang dapat dieksekusi. Jika tidak ada #: ditemukan atau #: adalah
diikuti oleh beberapa sampah, lalu agen surat memutuskan itu adalah program sederhana dan memberi makan surat
pesan untuk program ini. Akhir cerita.

Tetapi jika token #: diikuti (spasi diperbolehkan, huruf besar/kecil tidak relevan) oleh salah satu dari
kata-kata berikut, maka dilakukan tindakan khusus:

aturan File tersebut menyimpan seperangkat aturan agen surat yang akan diterapkan. Agen surat baru
proses dibuat untuk benar-benar menanganinya dan status keluar disebarkan
kembali ke agen surat asli.

Audit Ini mirip dengan apa yang dilakukan oleh paket audit.pl Martin Streicher,
maka nama kail ini. Variabel khusus yang diatur oleh PERL
perintah filter diinisialisasi dan skrip dimuat di khusus pengait surat
ruang nama paket, yang juga memberi Anda antarmuka ke milik agen surat
rutinitas. Anda dapat dengan aman menggunakan keluar berfungsi di sini, karena tambahan garpu is
selesai. Ini adalah satu-satunya perbedaan antara Audit dan perl menghubungkan.

menyampaikan Hal yang sama untuk Audit kait, tetapi output standar skrip Anda adalah
dipantau oleh agen surat dan dipahami sebagai perintah pemfilteran agen surat. Pada
pengembalian yang berhasil, proses agen surat akan dipanggil untuk benar-benar menjalankannya
perintah pada pesan. Sekali lagi, ini mirip dengan semangat Chip Salzenberg
menyampaikan paket dan memberi nama kail ini.

perl Kait ini sama dengan Audit tetapi dieksekusi tanpa forking yang baru
mailagent, dan Anda memiliki antarmuka perl ke perintah pemfilteran agen surat.
Tidak ada perbedaan dengan perintah PERL, karena yang diimplementasikan adalah
cara, dengan memanggil agen surat dan memaksa perintah PERL untuk dieksekusi. Ini
mirip dengan semangat Larry Wall yang terkenal perl bahasa dan bertanggung jawab untuk
nama kail ini :-).

Seperti yang disebutkan sebelumnya di halaman manual ini, hook dipanggil dari dengan rumah direktori
ditentukan dalam Anda ~/.mailagent (yang mungkin berbeda dari direktori home Anda yang sebenarnya, sejauh
agen surat or pengait surat prihatin).

Untuk pengait yang akhirnya dijalankan oleh Perl, larik @INC khusus memiliki milik agen surat
jalur perpustakaan pribadi ditambahkan sebelumnya, jadi membutuhkan pertama kali terlihat di tempat ini.

FOLDER


Folder adalah file atau direktori yang dapat menjadi target pengiriman oleh agen surat,
yaitu argumen perintah seperti SAVE.

Map dibentuk
Secara default, surat ditulis ke dalam folder sesuai dengan kotak surat gaya UNIX standar
format: setiap email dimulai dengan awalan Mulai dari baris yang memuat alamat pengirim dan
tanggal. Namun, dengan mengatur mmdf parameter dari ~/.mailagent ke ON, agen surat
akan dapat menyimpan pesan dalam format MMDF: setiap pesan diapit di antara dua baris
dari empat karakter Ctrl-A (kode ASCII 1) dan yang utama Mulai dari garis dihapus.

Saat mode MMDF diaktifkan, setiap folder akan dipindai untuk melihat apakah itu bergaya UNIX atau
Kotak surat bergaya MMDF dan pesan akan disimpan sesuai dengan itu. Saat menyimpan ke yang baru
folder, defaultnya adalah membuat kotak surat bergaya UNIX, kecuali kotak mmdf konfigurasi
variabel diatur ke ON, dalam hal ini format MMDF berlaku.

Perhatikan bahwa format MMDF juga merupakan standar untuk folder paket MH, jadi dengan mengaktifkan
Mode MMDF, Anda benar-benar dapat mengirim langsung ke folder yang dikemas itu. Perintah MH inc
tetap dapat memasukkan surat dari kedua formulir, yaitu tidak masalah apakah
folder dalam format UNIX (juga disebut gaya UUCP) atau dalam format MMDF.

Folder bergaya MH juga didukung. Ini terutama direktori tempat pesan disimpan
dalam file individu. Untuk menyimpan langsung ke folder MH, cukup awali nama folder
dengan '+', seperti yang Anda lakukan dengan perintah MH. Urutan tak terlihat yang ditentukan dalam Anda
Profil MH ( profil parameter di Anda ~/.mailagent, defaultnya adalah ~/.mh_profile) Akan
diperbarui dengan benar, sebagai toko rcv akan.

Ketika folder target adalah direktori, agen surat mencoba pengiriman dalam individu
berkas bernomor. Jika ada file awalan (parameter konfigurasi msgprefix, defaultnya adalah
.msg_prefix), baris pertama digunakan untuk menentukan nama dasar pesan, lalu a
nomor ditambahkan untuk memberikan nama file pesan yang akan digunakan. Artinya, jika tidak ada
file tersebut, folder akan terlihat seperti MH, tanpa file urutan MH sekalipun.

Map Kompresi
Jika Anda memiliki satu atau lebih utilitas kompresi file yang tersedia secara luas seperti:
kompres or gzip di PATH Anda (seperti yang diatur oleh ~/.mailagent), maka Anda mungkin ingin menggunakan folder
kompresi untuk menghemat ruang disk, terutama ketika Anda pergi untuk beberapa waktu dan tidak
ingin melihat email Anda mengisi sistem file.

Untuk mencapai kompresi folder, Anda harus menyiapkan file, yang dirujuk oleh kompres
variabel konfigurasi. File ini harus mencantumkan nama folder, satu per baris, dengan baris kosong
diabaikan dan komentar gaya shell (#) diizinkan. Anda dapat menggunakan pola gaya shell untuk menentukan
folder, dan kecocokan akan dicoba pada nama path lengkap folder (~
terjadi substitusi). Jika Anda tidak menentukan pola yang dimulai dengan awalan '/'
karakter, maka pertandingan akan dicoba pada nama dasar folder (yaitu yang terakhir
komponen jalur folder). Jika Anda ingin mengompres semua folder Anda, cukup masukkan a
tunggal '*' di dalam file ini.

Mailagent menggunakan ekstensi nama file untuk menentukan skema kompresi apa yang digunakan untuk
folder tertentu. File yang dirujuk oleh spesifikasi variabel konfigurasi (default
is $spool/compressors) digunakan untuk mendefinisikan perintah yang akan digunakan agen surat untuk melakukan
operasi kompres, uncompress, dan cat untuk ekstensi tertentu.

kompresor file memegang baris dari bentuk berikut:

label perpanjangan kompresi_prog uncompress_prog cat_prog

di mana:

label adalah nama logis untuk skema kompresi. Ini biasanya sama dengan
nama program yang digunakan untuk memberikan kompresi, tetapi bisa berbeda
untuk beberapa alasan yang tidak terduga. Ini harus unik di semua catatan dalam file.

perpanjangan adalah ekstensi untuk dikenali sebagai milik tag yang ditentukan. Ini pasti
unik di semua catatan dalam file.

kompresi_prog
adalah nama perintah yang dijalankan untuk mengompresi folder. Program harus
ganti file yang tidak terkompresi dengan yang terkompresi dengan ekstensi
ditambahkan ke nama file (seperti kompres or gzip).

uncompression_prog
adalah nama perintah yang dijalankan untuk membuka kompres folder. Program harus
ganti file terkompresi dengan yang tidak terkompresi tanpa ekstensi
(seperti tidak terkompresi or gunzip).

cat_prog adalah nama perintah untuk menampilkan konten terkompresi yang tidak terkompresi
folder ke stdout (seperti zcat or gzcat).

Bidang dipisahkan oleh TAB untuk memungkinkan penggunaan karakter spasi dalam perintah
bidang.

Jika file dimaksud oleh spesifikasi variabel konfigurasi tidak dapat diakses untuk
alasan apa pun, entri default sudah terprogram ke agen surat (tahu tentang keduanya kompres
dan gzip program):

kompres .Z kompres tidak terkompresi zcat
gzip .gz gzip gunzip gunzip -c

Jika Anda ingin menambahkan lebih banyak kompresor, Anda dapat menyalin default kompresor file dari
direktori perpustakaan pribadi agen surat dan atur entri yang benar untuk alternatif Anda
kompresor. Ingatlah bahwa ekstensi tambahan harus unik di antara semua
program yang terdaftar, karena ekstensi itu digunakan untuk menentukan jenis kompresi
dilakukan pada folder.

Jika folder dibuat tanpa bentuk terkompresi yang ada, kompresor default
dipilih untuk Anda, seperti yang didefinisikan oleh comptag variabel konfigurasi. Itu mengacu pada
nama tag spesifikasi file, yaitu kata pertama pada baris (biasanya nama
program kompresi, tetapi tidak harus).

Saat mencoba pengiriman, agen surat akan memeriksa nama folder dengan daftar
pola dalam file kompres. Jika ada kecocokan, folder ditandai sebagai terkompresi.
Kemudian agen surat mencoba dekompresi jika sudah ada bentuk terkompresi (mis
memiliki ekstensi nama file yang dikenali) dan jika tidak ada formulir yang tidak dikompresi. Pengiriman adalah
kemudian dibuat ke folder yang tidak terkompresi. Namun, kompresi ulang tidak segera dilakukan,
karena masih mungkin untuk mendapatkan pesan ke folder itu dalam satu pengiriman batch.
Jika ruang disk menjadi sangat sempit sehingga dekompresi folder lain tidak mungkin,
mailagent akan mengompresi ulang folder yang sudah tidak dikompresi. Kalau tidak, itu menunggu
sampai saat terakhir.

Jika karena alasan tertentu ada folder terkompresi yang tidak dapat didekompresi, agen surat
akan mengirimkan surat ke folder biasa. Pengiriman lebih lanjut ke folder itu akan dihadapi
dengan folder versi terkompresi dan biasa, dan itu akan memberi Anda peringatan
dalam file log, tetapi pengiriman akan dilakukan secara otomatis ke file biasa.

Pada folder yang baru dibuat, comptag variabel konfigurasi direferensikan untuk menentukan
jenis kompresi yang akan digunakan untuk folder tersebut.

MAIL BIFFING


Jika Anda menerima dan memproses email di mesin Anda sendiri, maka Anda memiliki akses ke
biffing surat lokal di mana agen surat dapat memperingatkan Anda tentang pesan baru dan memberi tahu Anda tentang
di mana mereka telah disimpan, mencetak subset kecil dari header dan beberapa baris pertama
Dari tubuh.

Untuk menggunakan biffing, yang Anda butuhkan hanyalah pengaturan beberapa parameter biff di
~/.mailagent dan pastikan pukulan diatur ke ON. Sebenarnya, ini adalah satu-satunya parameter Anda
perlu diatur untuk mendapatkan perilaku biffing default minimal. Jangan lupa untuk menjalankan shell
memerintah "pukulan y" di terminal tempat Anda ingin mendapatkan notifikasi (Anda dapat melakukannya di
beberapa ttys, satu untuk setiap tampilan virtual misalnya).

Setelah menerima email dan menyimpan di folder atau memposting ke newsgroup, agen surat menempatkan
semua tty tempat Anda masuk, lalu pilih yang meminta biffing,
akhirnya memancarkan pesan dan mengeluarkan bunyi bip (jika terminal Anda mendukung ini dan
Anda menggunakan format standar--lihat di bawah).

Menyesuaikan Menggigit Keluaran
Jika format default tidak sesuai dengan kebutuhan Anda, Anda dapat menyesuaikan pesan biffing
dengan bebas, mengatur biffmsg parameter untuk menunjuk ke file tempat format disimpan.
Substitusi makro standar akan dilakukan pada pesan Anda, set makro berikut
menggantikan dan melengkapi set standar:

%-A Sama seperti menulis %-H, baris baru, %-B
%-B Bagian tubuh dari pesan biffing, dengan pengkodean transfer konten dihapus.
Jika pesannya adalah MIME multipart one, teks/bagian biasa akan ditampilkan. Jika hanya
teks/html tersedia, markup HTML dilucuti untuk biffing.
%-H Bagian header dari pesan biffing. Jika hanya menunjukkan Dari:, Kepada: Subjek: dan
Tanggal: tajuk, atau apa pun yang telah Anda atur buffhead variabel konfigurasi ke.
Semua header ditampilkan sebagai satu baris teks, terlepas dari panjang sebenarnya.
Akan ada tiga titik di akhir untuk menandakan bahwa pemotongan telah terjadi.
Untuk artikel berita (biffing setelah POST -b), kolom To: dan Cc: tidak pernah
ditampilkan, bahkan jika ditentukan dalam buffhead.
%-T Sama seperti %-B, tetapi pemangkasan diaktifkan. Tujuan pemangkasan adalah untuk menghilangkan
kutipan terkemuka dalam pesan, untuk mendapatkan hanya bagian yang paling berarti. Ini
mengasumsikan karakter kutipan adalah karakter non-alfanumerik tunggal. Itu
baris atribusi terkemuka yang mungkin memperkenalkan kutipan juga dapat dihapus,
dan panjang minimum untuk kutipan dapat diatur dalam file konfigurasi.
%B Jalur relatif di bawah %d folder pesan, jalur lengkap (%p) jika tidak disimpan
di bawah direktori itu. Nama newsgroup untuk artikel berita.
%D Direktori tempat pesan disimpan. Jika folder MH, ini foldernya
jalur penuh. Direktori home diganti dengan ~. Kosong untuk artikel berita.
%F Nama dasar (komponen jalur terakhir) dari pesan. Untuk pesan MH, ini adalah
nomor pesan. Kosong untuk artikel berita.
%P Jalur folder. Ini memiliki semantik yang benar untuk MH dan folder direktori, yaitu
itu menunjuk ke direktori folder itu sendiri. Jika tidak, sama dengan %p.
%a Karakter alarm (^G). Dapat berkembang menjadi lebih dari satu di bawah kendali
Perintah penyaringan BIP. Gunakan %b jika Anda hanya menginginkan satu lonceng.
%b Karakter bip (^G). Berbeda dengan %a, ini hanya berkembang untuk memberi satu lonceng.
%d Jalur lengkap tempat folder seperti yang disimpan disimpan jika tidak
memenuhi syarat (yaitu jalur MH Anda untuk folder MH, seperti ~/Surat untuk yang lain
folder). Kosong untuk artikel berita.
%f Folder tempat email disimpan, home diganti dengan ~ singkatnya. Grup berita ketika
artikel telah diposting untuk berita.
%m Tanda '+' jika folder adalah folder MH, kosongkan sebaliknya.
%p Nama path lengkap (sama dengan %f) dari pesan, tetapi tanpa ~ shortcut. Itu
nama newsgroup untuk artikel berita.
%t Jenis pesan: biasanya "mail", tetapi disetel ke "artikel" untuk biffing setelah a
perintah POSTING.

Anda bisa mendapatkan ekspansi makro standar dengan menggunakan %:F misalnya sejak %f makro adalah
digantikan. Itu %: form memungkinkan Anda mendapatkan definisi makro standar, tidak masalah
apa, jadi Anda tidak perlu mengingat apakah makro tertentu digantikan dalam konteks ini atau
bukan. Selain itu, lebih aman karena makro baru dapat ditambahkan di sini tanpa pemberitahuan. Perhatikan bahwa
makro yang terkait dengan konten pesan semuanya dimulai dengan %- dan karena itu tidak bertentangan
dengan yang standar.

Berikut adalah format yang perlu Anda gunakan untuk mendapatkan perilaku yang sama dengan bawaan bawaan
format:

%b
%t baru untuk %u telah tiba di %f:
----
%-SEBUAH
----%B

Perhatikan bahwa string ...lagi... muncul di ujung tubuh ketika belum
sepenuhnya dicetak di layar dan baris yang tersisa tidak kosong atau serupa.

hiasan Terkemuka Kutipan
Ini adalah praktik standar, saat membalas pesan, untuk menyertakan kutipan dari
kalimat yang dibalas, menggunakan karakter non-alfanumerik seperti '>' untuk awalan
garis yang dikutip. Sesuatu seperti:

Mengutip John Doe:
> Ini adalah bahan kutipan.
> Baris lain dari surat John.

Ini adalah bagian dari jawaban untuk John.

Baris "Mengutip ..." terkemuka, disebut the pertalian baris, adalah opsional dan mungkin
hilang atau mengambil bentuk bebas lainnya.

Namun, saat melakukan biffing, ini mungkin terlihat sebagai suara yang tidak berguna, terutama saat ini di mana orang
dengan bebas mengutip lebih banyak dan lebih banyak lagi dalam balasan mereka. Karena pesan biff hanya menunjukkan bagian atas
baris pesan, mungkin diinginkan untuk secara otomatis memangkas baris yang dikutip tersebut.

Melalui %-T makro dalam format biff yang disesuaikan, Anda dapat meminta pemangkasan yang terkemuka
bahan kutipan, menjaga garis atribusi atau tidak, dan bahkan mengganti bahan yang dipangkas
dengan pemberitahuan bahwa begitu banyak baris telah dihapus.

Semua penyesuaian ini dilakukan dari ~/.mailagent file konfigurasi, menggunakan
bifftrim, bifftrlen dan kutipan biff variabel.

Anda harus terlebih dahulu mengaktifkan pemangkasan dengan menggunakan format biff yang disesuaikan menggunakan %-T makro.
Dengan mengatur bifftrlen hingga 3, Anda dapat meminta agar kutipan paling sedikit 3 baris saja
dipangkas. Memutar bifftrim off akan menghapus pemberitahuan pemangkasan, sambil berputar
kutipan biff off juga akan menghapus garis atribusi, jika ada.

Misalnya, dengan asumsi pengaturan berikut:

bifftrim : AKTIF
bifftrlen: 2
kutipan biff: OFF

maka contoh di atas akan menghasilkan output biffing berikut (tajuk pesan
meskipun):

[memotong 3 baris yang dimulai dengan karakter '>' di depan & baris atribusi]
Ini adalah bagian dari jawaban untuk John.

karena baris kosong setelah materi yang dikutip dihitung sebagai bagian dari
kutipan. Pesan "[dipangkas ..]" dapat dimatikan dengan menyetel bifftrim ke OFF.

Algoritme pemangkasan mempertimbangkan baris pertama tubuh untuk melihat apakah itu dimulai dengan a
karakter non-alfanumerik. Jika ya, maka semua baris berikut dimulai dengan itu
karakter yang sama, atau baris kosong apa pun dihapus, hingga baris non-kosong pertama yang dimulai dengan
karakter lain. Secara opsional, baris pertama (dan hanya baris itu) dilewati jika
yang kedua dimulai dengan karakter non-alfanumerik, dan baris pertama dianggap sebagai
garis atribusi.

Menggunakan Padat gaya MH Menggigit
Yang disebut gaya MH biffing adalah cara menghadirkan tubuh yang dipadatkan di mana semua lini
digabungkan menjadi string bahagia besar dengan spasi berturut-turut berubah menjadi satu
karakter ruang. Untuk mengaktifkannya, Anda perlu mengatur biffmh variabel ke ON.

Karena pemadatan ini adalah keluaran verbatim pada tty, jeda baris akan terjadi secara acak dan
ini mungkin membuat membaca menjadi sulit. Anda dapat meminta pemformatan ulang otomatis dari
tubuh yang dipadatkan dengan memutar biffnice ke ON dan output biff akan cocok dengan baik di dalam
terminal.

Sayangnya, tidak mungkin untuk menyesuaikan jumlah kolom yang harus digunakan
untuk pemformatan: karena Anda dapat membuat biff ke tty mana pun yang Anda masuki, itu akan memaksa
agen surat untuk menyelidiki tty untuk ukuran kolomnya, untuk setiap kemungkinan tty ke mana output mungkin pergi,
dan tidak ada cara portabel yang dapat diandalkan untuk melakukan itu. Maaf.

MEMPERPANJANG PENYARINGAN PERINTAH


Setelah Anda mencapai ahli tingkat, dan asalkan Anda memiliki pengetahuan yang adil tentang perl, Anda
mungkin merasa perlu untuk perintah yang lebih maju yang bukan merupakan bagian dari set standar. Ini
bagian menjelaskan bagaimana Anda dapat mencapai ini secara dinamis, tanpa perlu menyelam lebih dalam
di dalam kode sumber.

Setelah Anda memperluas set perintah pemfilteran, Anda dapat menggunakan perintah tersebut di dalam
file aturan seolah-olah mereka built-in. Anda bahkan dapat memilih untuk mendefinisikan ulang perintah standar
jika mereka tidak cocok untuk Anda (namun, jika Anda ingin melakukan itu, Anda harus tahu persis apa yang Anda
lakukan, atau Anda mungkin mulai kehilangan beberapa email atau mendapatkan perilaku yang tidak terduga -- ini juga
membatalkan garansi Anda :-).

Kemampuan untuk memberikan perintah eksternal tanpa benar-benar mengubah kode sumber utama
adalah, saya percaya, titik kuat yang mendukung memiliki program yang ditulis dalam interpretasi
bahasa seperti perl. Ini tentu saja setelah Anda meyakinkan diri sendiri bahwa itu adalah Kebaikan
Hal untuk menyesuaikan dan memperluas program dalam bahasa yang sama dengan yang digunakan untuk inti,
artinya biasanya bahasa tingkat rendah dengan lebih sedikit kait yang ramah pengguna.

Ringkasan
Untuk mengimplementasikan perintah baru, katakanlah FOLD, Anda perlu melakukan hal berikut:

· Tulis subrutin perl untuk mengimplementasikan tindakan FOLD dan memasukkannya ke eksternal
mengajukan. Katakanlah kita menulis subrutin melipat dan kami menyimpannya di a lipat.pl mengajukan. Ini adalah
tentu saja bagian yang sulit, di mana Anda perlu mengetahui beberapa hal dasar tentang
internal agen surat.

· Pilih tempat Anda ingin menyimpan lipat.pl mengajukan. Kemudian periksa sintaks dengan perl -c,
hanya untuk memastikan...

· Mengedit cmd baru file (seperti yang diberikan oleh file konfigurasi) untuk merekam perintah baru Anda.
Kemudian pastikan file ini terlindungi dengan baik. Anda harus memilikinya, dan seharusnya tidak
dapat ditulis oleh individu lain selain Anda.

· Selain itu, Anda mungkin ingin menentukan apakah FOLD akan memodifikasi yang sudah ada
status eksekusi dan apakah akan diizinkan atau tidak dalam _SEEN_ khusus
negara.

· Tulis beberapa aturan menggunakan perintah FOLD baru. Ini adalah Mudah bagian! Perhatikan bahwa Anda
perintah juga dapat digunakan dalam kait Perl seolah-olah itu adalah perintah bawaan (ini
berarti ada fungsi antarmuka yang dibuat untuk Anda di dalam pengait surat kemasan).

Di bagian berikut, kita akan menjelaskan sintaks dari cmd baru file, dan
kami kemudian akan menyajikan beberapa variabel internal tingkat rendah yang dapat digunakan saat mengimplementasikan
perintah baru.

New perintah File dibentuk
cmd baru file terdiri dari serangkaian baris, setiap baris menggambarkan satu perintah. Kosong
baris diabaikan dan komentar gaya shell diperkenalkan oleh karakter tajam (#) adalah
diperbolehkan.

Setiap baris dibentuk oleh 3 bidang utama dan 2 bidang opsional; bidang dipisahkan oleh
spasi atau tab. Berikut adalah kerangka:



cmd_nama adalah nama perintah yang ingin Anda tambahkan. Dalam contoh kita sebelumnya, itu akan
menjadi LIPAT. lapangan berikutnya, path, memberi tahu agen surat di mana file yang berisi perintah
implementasi berada. Katakanlah kita menyimpannya di ~/mail/cmds/fold.pl. itu fungsi bidang adalah
nama dari perl fungsi yang mengimplementasikan FOLD, yang dapat ditemukan di lipat.pl. Disini kita
bernama fungsi kami melipat. Perhatikan bahwa jika fungsi Anda memiliki namanya di dalam cmd baru
paket, yang merupakan perilaku default jika Anda tidak menentukan apa pun, maka tidak perlu
awali nama fungsi dengan paket. Jika tidak, Anda harus menggunakan nama yang sepenuhnya memenuhi syarat.

Dua bidang terakhir adalah opsional, dan merupakan nilai boolean yang dapat ditentukan oleh benar or
iya nih untuk mengungkapkan kebenaran, dan palsu or tidak untuk mengungkapkan kepalsuan. Jika status_bendera disetel ke benar,
maka perintah akan mengubah variabel status eksekusi terakhir. Jika dilihat_flag adalah benar,
maka perintah tersebut dapat digunakan ketika filter dalam status _SEEN_. Nilai defaultnya adalah
masing-masing benar dan palsu.

Jadi dalam contoh kita, kita akan menulis:

MELIPAT ~/mail/cmds/fold.pl lipat tidak ya

untuk mengizinkan FOLD bahkan dalam status _SEEN_ dan menjalankannya tanpa mengubah arus
nilai dari status-perintah terakhir variabel.

Writing An Organisasi
Fungsi perl Anda akan dimuat saat dibutuhkan ke dalam paket khusus cmd baru, sehingga
ruang nama sendiri dilindungi dan tidak secara tidak sengaja bertentangan dengan agen surat lainnya
rutinitas atau variabel. Saat Anda perlu memanggil antarmuka perl dari beberapa agen surat umum
fungsi, Anda harus ingat untuk menggunakan nama rutin yang sepenuhnya memenuhi syarat, misalnya
&mailhook'pergi untuk benar-benar menjalankan perintah TINGGALKAN.

(Biasanya, dalam kait PERL, awalan ini tidak diperlukan karena skrip Perl adalah
dimuat di pengait surat kemasan. Saat Anda memperluas agen surat Anda, Anda harus ekstra
hati-hati, dan tidak ada salahnya menggunakan awalan ini. Anda bebas menggunakan
perl paket direktif dalam fungsi Anda, karenanya beralih ke pengait surat paket
dalam tubuh rutinitas tetapi meninggalkan namanya di cmd baru paket.)

Karena agen surat akan secara dinamis memuat implementasi perintah Anda saat pertama kali
dijalankan, dengan memuat skrip Perl yang ditentukan ke dalam memori dan mengevaluasinya, saya sarankan Anda
letakkan setiap implementasi perintah dalam file terpisah, untuk menghindari penyimpanan yang berpotensi tidak dibutuhkan
kode dalam memori.

Setiap perintah dipanggil dengan satu argumen, yaitu string perintah lengkap yang dibaca dari
aturan filter. Selain itu, spesial @ARGV array diatur dengan melakukan gaya shell
penguraian baris perintah (yang akan gagal jika kutipan tidak cocok, tetapi Anda dapat melakukannya
parsing sendiri karena Anda mendapatkan baris perintah). Di akhir rutinitas Anda, Anda
harus mengembalikan status kegagalan, yaitu 0 untuk sukses dan 1 untuk memberi sinyal kegagalan.

Itu adalah satu-satunya persyaratan Anda. Anda bebas melakukan apa pun yang Anda inginkan di dalam rutinitas.
Namun untuk memudahkan tugas Anda, beberapa variabel telah dihitung sebelumnya untuk Anda, variabel yang sama adalah
tersedia dalam kait surat, hanya mereka yang didefinisikan di dalam cmd baru bungkus ini
waktu. Ada juga beberapa variabel khusus yang perlu Anda ketahui, dan satu set
rutinitas standar yang mungkin ingin Anda hubungi. Tolong hindari memanggil sesuatu yang bukan
didokumentasikan di sini, karena dapat berubah tanpa pemberitahuan sebelumnya. Jika Anda ingin menggunakannya
rutin dan tidak didokumentasikan di halaman manual ini, beri tahu saya.

Setiap perintah dipanggil dari dalam an evaluasi membangun, sehingga Anda dapat menggunakan dengan aman itu atau hubungi
rutinitas perpustakaan eksternal yang menggunakan itu. Jika Anda menggunakan membutuhkan, ketahuilah bahwa agen surat adalah
menyiapkan khusus @INC array dengan menempatkan jalur perpustakaan pribadinya terlebih dahulu, jadi Anda dapat
tempatkan semua milikmu agen surat-file perpustakaan terkait di tempat ini.

Khusus Variabel
Variabel khusus berikut (beberapa di antaranya ditandai hanya-baca, artinya Anda tidak boleh
memodifikasinya, dan memang Anda tidak bisa) tersedia langsung di dalam cmd baru paket, adalah
pra-setel oleh robot filter, dan digunakan untuk mengontrol proses penyaringan:

$mfile Nama dasar file email yang sedang diproses. Variabel ini hanya-baca.
Hal ini terutama digunakan dalam pesan log, seperti pada [$mfile] untuk menandai setiap log, karena a
proses agen surat tunggal dapat menangani banyak pesan.

$selamanya_disimpan Ini adalah boolean, yang seharusnya set untuk 1 sekali berhasil menabung
operasi telah selesai. Jika pada akhir penyaringan, variabel ini
masih 0, maka LEAVE default akan dieksekusi.

$folder_disimpan Nilai variabel itu mengatur $msgpath set variabel kenyamanan
untuk pelarian PERL. Ini diperbarui setiap kali pesan ditulis ke file, untuk
tahan jalur file yang ditulis.

$lanjutan Ini adalah status kelanjutan, variabel yang paling penting ketika
berurusan dengan aliran kontrol. Empat konstanta dari utama paket bisa
digunakan untuk menentukan apakah kita harus melanjutkan dengan aturan saat ini
($FT_CONT), abaikan aturan saat ini ($FT_REJECT), mulai ulang pemfilteran dari
awal ($FT_RESTART) atau cukup batalkan pemrosesan ($FT_ABORT). Lebih lanjut tentang
ini nanti.

$cmd terakhir Status kegagalan terakhir dicatat oleh perintah terakhir (di antara yang melakukan
mengubah status eksekusi). Anda tidak harus memperbarui ini dengan
sendiri kecuali Anda menerapkan beberapa enkapsulasi untuk perintah lain,
seperti KEMBALI atau SEKALI, karena secara default $cmd terakhir akan diatur ke nilai Anda
kembali di akhir perintah.

$wmode Ini merekam status otomat filter saat ini (mode kerja), dalam a
bentuk string literal, biasanya dimodifikasi oleh perintah BEGIN atau sebagai sisi
efek, seperti dalam REJECT misalnya.

Semua pengaturan variabel khusus untuk pelarian PERL juga dipasang di dalam cmd baru
kemasan. Yaitu $masuk, %tajuk, dll... Anda dapat membaca dengan teliti sesuka hati.

Variabel lain yang mungkin Anda perlukan adalah parameter konfigurasi, disimpan di
~/.mailagent berkas konfigurasi. Nah, aturannya sederhana. Nilai setiap parameter
berhenti dari file konfigurasi disimpan dalam variabel $cf'param. Variabel $main'loglvl is
salinan dari $cf'level, karena mengetik selalu lebih pendek $'loglvl setelah setiap panggilan ke
rutinitas pencatatan &tambah_log.

Ada satu variabel lagi yang perlu diketahui tentang: $main'FILTER, yang merupakan X- yang cocok
Garis filter yang harus ditambahkan semua surat yang Anda kirim melalui agen surat, untuk
menghindari loop. Juga saat Anda menyimpan email ke folder, sebaiknya tambahkan baris ini jika a
masalah muncul: Anda kemudian dapat mengidentifikasi pelakunya.

Aturan Lingkungan Hidup
Suatu tindakan mungkin memiliki keinginan yang sah untuk mengubah lingkungan untuk ruang lingkup satu
aturan saja, kembali ke nilai sebelumnya saat keluar dari aturan. Atau Anda mungkin ingin
mengubah nilai selamanya.

Ketika kita berbicara tentang mengubah lingkungan, kita mengacu pada yang diatur melalui
file konfigurasi, yang nilainya berakhir di cf kemasan. Nah, beberapa variabel itu
disalin di env paket sebelum penyaringan pesan dimulai (di bawah kendali
itu @env'Env Himpunan).

Semua aturan kemudian harus merujuk ke versi di env paket, dan tidak dalam cf paket,
untuk melihat perubahan. Perubahan global dilakukan dengan mempengaruhi secara langsung variabel yang ada di
env paket, sementara perubahan lokal diminta dengan menelepon &env'lokal rutin.

Misalnya, cf'umask nilai disalin sebagai env'umask karena umask diadakan di @env'Env.
Perubahan global dibuat dengan mengatur salinan itu secara langsung, sementara perubahan lokal dapat dilakukan
dengan:

&env'local('umask', 0722);

untuk menetapkan nilai lokal baru. Pertama kali &env'lokal disebut pada variabel, nilainya
disimpan di suatu tempat, dan akan dipulihkan setelah keluar dari ruang lingkup aturan. Kemudian yang baru
nilai dipengaruhi oleh variabel.

Variabel yang memerlukan efek samping ketika nilainya diubah (seperti variabel umask,
yang memerlukan panggilan sistem untuk membiarkan kernel melihat perubahan) dapat menentukannya dengan mengakses
itu %env'Spec array, kuncinya adalah nama variabel yang membutuhkan efek samping, the
nilai yang ditafsirkan sebagai sedikit kode perl yang dijalankan setelah nilai asli dipulihkan. Untuk
misalnya, kita katakan di suatu tempat (di &env'init):

paket env;
$Spec{'umask'} = 'umask($umask)';

untuk memperbarui tampilan kernel saat meninggalkan ruang lingkup. Perhatikan bahwa efek samping dievaluasi sekali
variabel telah memulihkan nilai aslinya, dan dalam env paket.

Secara internal, itu &analyze_mail panggilan rutin &env'pengaturan sebelum memulai pemrosesannya ke
inisialisasi env paket, dan &env'pembersihan di akhir sebelum kembali. Sebelum berlari
tindakan yang ditentukan pada kecocokan aturan, &apply_rules panggilan &env'restore untuk memastikan a
pandangan yang koheren dari lingkungan saat menjalankan tindakan untuk aturan tertentu.

Mengubah kontrol Aliran
Saat Anda ingin mengubah aliran kontrol untuk melakukan REJECT, RESTART, atau ABORT, Anda memiliki
tiga pilihan. Jika Anda ingin mengontrol tindakan itu melalui opsi, dengan cara yang sama seperti standar
UNIK tidak (dengan -c, -r or -a), Anda dapat menghubungi &main'alter_execution(opsi, negara) pemberian
itu dua parameter: huruf opsi dan status yang ingin Anda ubah sebelum mengubah
aliran kontrol.

Anda mungkin juga ingin langsung mengubah $wmode dan $lanjutan variabel, tetapi kemudian Anda akan memiliki
untuk melakukan logging Anda sendiri jika Anda menginginkannya. Atau Anda dapat memanggil rutinitas tingkat rendah
&main'do_reject, &main'do_restart dan &main'do_abort untuk melakukan yang sesuai
operasi (dengan logging).

Ingat bahwa status _SEEN_ khusus dan langsung ditangani di tingkat filter, dan
filter dimulai dalam keadaan AWAL. Tindakan default adalah melanjutkan saat ini
aturan, itulah sebabnya tidak ada rutinitas untuk melakukan tugas ini.

Cara yang lebih disukai adalah dengan memanggil pengait surat fungsi antarmuka, &mailhook'mulai,
&mailhook'reject, dll..., dan itu akan berfungsi bahkan jika Anda mendefinisikan ulang fungsi-fungsi itu
dirimu sendiri. Selain itu, itulah satu-satunya antarmuka yang kemungkinan tidak akan diubah oleh yang baru
versi.

Umum Tujuan Rutinitas
Berikut ini adalah daftar semua rutinitas umum yang mungkin ingin Anda lakukan saat tampil
beberapa tugas tingkat rendah. Perhatikan bahwa informasi ini bergantung pada versi. Sejak saya mendokumentasikan
mereka, saya akan mencoba menyimpannya dalam versi baru, tetapi saya tidak dapat menjamin bahwa saya tidak harus melakukannya
sedikit mengubah beberapa semantik mereka. Ada kemungkinan besar Anda tidak akan pernah melakukannya
khawatir tentang itu.

&format header(bidang rfc822)
Kembalikan bidang RFC822 yang diformat agar sesuai dengan 78 kolom, dengan kelanjutan yang tepat
diperkenalkan oleh delapan spasi.

&header'normalize(rfc822-header-name)
Normalisasikan case di header RFC822 dan kembalikan nama header baru dengan setiap yang pertama
huruf besar.

&reset header
Ini adalah bagian dari validasi header RFC822, terutama digunakan saat memisahkan a
intisari. Ini mengatur ulang robot pengenalan (lihat &header'valid).

&header'valid(baris)
Mengembalikan status boolean, menunjukkan jika semua baris diberikan sejauh ini
berfungsi sejak terakhir &reset header adalah bagian dari header RFC822 yang valid. Itu
fungsi memahami baris Dari pertama yang merupakan bagian dari surat UNIX. Apapun
waktu, variabel $header'mungkin dapat diperiksa untuk melihat apakah sejauh ini kami telah menemukan
setidaknya satu bidang tajuk surat penting.

&main'acs_rqst(berkas)
Lakukan penguncian .lock pada file, mengembalikan 0 jika berhasil dan -1 jika gagal.
Jika ada kunci lama, kunci itu akan dihapus (batas waktu disetel ke satu jam). Menggunakan
&main'free_file untuk melepaskan kunci.

&main'add_log(string)
Tambahkan string ke file log. Idiom yang biasa adalah postfix panggilan itu dengan
if $'loglvl > nilai, Di mana nilai adalah level logging yang ingin Anda miliki sebelumnya
memancarkan log semacam itu ($'loglvl adalah bentuk singkat untuk $main'loglvl).

&main'free_file(file)
Hapus .lock pada file, diperoleh dengan &main'acs_rqst. Ini mengembalikan 0 jika kunci
berhasil dihapus, -1 jika itu adalah kunci basi (diperoleh oleh orang lain).

&main'header_found(berkas)
Pindai kepala file dan coba tentukan apakah ada header email di
awal atau tidak. Kembalikan true jika header ditemukan.

&main'history_record
Catat ID pesan dari pesan saat ini dan kembalikan 0 jika pesan tidak
telah dilihat sebelumnya, 1 jika merupakan duplikat.

&main'hostname
Kembalikan nilai nama host, huruf kecil, dengan kemungkinan nama domain ditambahkan
untuk itu. Nama host di-cache, karena nilainya awalnya harus diperoleh dengan
garpu. (Lihat juga &main'namahostsaya)

&main'internet_info(alamat email)
Parsing alamat internet email dan kembalikan array tiga elemen yang berisi
host, domain dan bagian negara dari host internet. Misalnya, jika
alamatnya adalah [email dilindungi], itu akan kembali (C, b, a).

&main'login_name(alamat email)
Parsing alamat internet email dan kembalikan nama login.

&main'makro_subst(*baris)
Lakukan substitusi makro di tempat (baris diteruskan sebagai tipe glob) menggunakan
informasi yang saat ini disimpan di %main'Header Himpunan. Mengerjakan tidak lulus *_ sebagai
parameter, karena secara internal makro_subst menggunakan variabel lokal yang menyandang nama itu
untuk melakukan penggantian dan Anda akan mendapatkan versi yang tidak dimodifikasi. Jika
kamu benar-benar ingin lulus *_, maka Anda harus menggunakan nilai yang dikembalikan dari
makro_subst yang merupakan teks pengganti, tapi itu kurang efisien daripada
memilikinya dimodifikasi di tempat.

&main'makedir(nama path, mode)
Buat direktori, buat semua direktori perantara yang diperlukan untuk membuat
nama jalur direktori yang valid. Tidak berpengaruh jika direktori sudah ada. Itu
parameter mode adalah opsional, 0700 digunakan (angka oktal) jika tidak ditentukan.

&main'namahostsaya
Mengembalikan nama host mesin saat ini, tanpa nama domain apa pun. Itu
nama host di-cache, karena nilainya awalnya harus diperoleh dengan forking.

&main'run_command(filter-perintah)
Jalankan perintah filter tunggal yang ditentukan dan kembalikan status kelanjutan,
yang biasanya harus terpengaruh ke $lanjutan variabel. Anda akan membutuhkan ini
rutin ketika mencoba mengimplementasikan perintah yang merangkum perintah lain, seperti
SEKALI atau PILIH.

&main'seconds_in_period(titik)
Mengembalikan jumlah detik dalam periode yang ditentukan. Lihat bagian Menentukan A
Periode untuk mendapatkan string periode yang valid.

&main'shell_command(program, memasukkan, masukan)
Jalankan perintah shell dan kembalikan status kegagalan (0 untuk OK). Parameter masukan
mungkin salah satu dari konstanta berikut (didefinisikan dalam utama paket): $NO_INPUT
untuk menutup input standar, $BODY_INPUT untuk menyalurkan isi pesan saat ini,
$MAIL_INPUT untuk menyalurkan seluruh email apa adanya, $MAIL_INPUT_BINARY untuk menyalurkan keseluruhan
email setelah menghapus penyandian transfer konten dan $HEADER_INPUT ke
pipa header pesan. Parameter umpan balik mungkin salah satu dari $FEEDBACK atau
$NO_FEEDBACK tergantung apakah Anda ingin menggunakan keluaran standar untuk
mengubah bagian yang sesuai dari pesan. Jika tidak ada umpan balik yang diinginkan,
output dari perintah dikirimkan kembali ke pengguna. $FEEDBACK_ENCODING adalah
ditangani seperti $FEEDBACK tetapi akan memberi tahu agen surat untuk melihat badan yang paling sesuai
encoding ketika inputnya adalah keseluruhan pesan.

&main'parse_address(rfc822-address)
Parsing alamat email RFC822 dan kembalikan array dua elemen yang berisi
alamat internet dan bagian komentar dari alamat itu.

&main'xeqte(tindakan filter)
Jalankan serangkaian tindakan yang dipisahkan oleh tanda ';' karakter, panggilan jalankan_perintah
untuk benar-benar melakukan pekerjaan. Kembalikan status kelanjutan. Perhatikan bahwa
$FT_ABORT akan tak pernah dikembalikan, karena agen surat biasanya berhenti setelah
mengeksekusi satu set tindakan, hanya melanjutkan jika melihat RESTART atau REJECT.
Apa yang ABORT lakukan adalah melewatkan perintah yang tersisa di telepon dan keluar seolah-olah
semua perintah telah dijalankan. Anda bisa mengatakan xeqte adalah setara dengan evaluasi
berfungsi di Perl, karena ia menafsirkan skrip filter kecil dan mengembalikan kontrol
ke penelepon setelah selesai, dan ABORT adalah perl's itu.

Anda juga dapat menggunakan tiga fungsi dari luar paket yang memanipulasi gigih
variabel (sudah didokumentasikan di bagian berurusan dengan variabel) serta pengguna-
rutinitas makro yang ditentukan.

Example
Menulis perintah Anda sendiri tidak mudah, karena memerlukan beberapa pengetahuan dasar tentang
internal agen surat. Namun, setelah Anda terbiasa dengan itu, itu seharusnya relatif
mudah.

Berikut adalah contoh kecil. Kami ingin menulis perintah untuk memantulkan kembali pesan email ke
pengirim asli, seperti yang dilakukan sendmail, dengan beberapa teks utama untuk menjelaskan apa yang terjadi.
Perintah akan memiliki sintaks berikut:

MENGEMBALIKAN alasan

dan kami ingin perintah itu mengubah status yang ada, mengembalikan kegagalan jika
email tidak dapat dipantulkan kembali. Karena perintah ini sebenarnya mengirim sesuatu kembali, kami tidak
ingin dieksekusi dalam status _SEEN_. Inilah implementasi saya (belum diuji):

sub kirim balik {
lokal($cmd_line) = @_;
lokal($alasan) = join(' ', @ARGV[1..$#ARGV]);
kecuali (buka(MAILER, "|/usr/lib/sendmail -odq -t")) {
&'add_log("ERROR tidak dapat menjalankan sendmail untuk mengirim pesan")
jika $'loglvl;
1 kembali;
}
cetak MAILER <
Dari: agen surat
Kepada: $header{'Pengirim'}
Subjek: Surat yang dikembalikan: Kegagalan agen surat
$main'FILTER

--- Transkrip Sesi

$alasan

--- Pesan Tidak Terkirim Mengikuti

$header{'Semua'}
EOF
tutup MAILER;
$ever_saved = 1; # Tidak ingin di kotak surat
$? == 0 ? 0 : 1; # Status kegagalan
}

Dengan asumsi perintah ini dimasukkan ke dalam ~/mail/cmds/sendback.pl, baris yang menjelaskannya di
cmd baru file akan menjadi:

MENGEMBALIKAN ~/mail/cmds/sendback.pl kirim balik ya tidak

Sekarang perintah ini dapat digunakan secara bebas dalam aturan apa pun, dan akan dicatat sebagai aturan yang ditentukan pengguna
perintah oleh petugas komando. Siapa bilang itu tidak mudah dilakukan? :-)

Perhatikan penggunaan variabel $ever_saved untuk menandai email sebagai disimpan setelah itu
terpental. Memang, jika tindakan SENDBACK menjadi satu-satunya tindakan yang harus dijalankan, kami tidak melakukannya
ingin agen surat TINGGALKAN surat di kotak surat karena belum pernah disimpan (ini
perilaku default menjadi tindakan pencegahan saja - lebih baik aman daripada menyesal).

Kesimpulan
Jika sepanjang jalan Anda membayangkan beberapa perintah berguna yang dapat dijadikan bagian dari standar
set perintah, silakan kirim email kepada saya dan saya akan mempertimbangkan untuk mengintegrasikannya. Di masa depan, saya
juga ingin menyediakan perpustakaan standar skrip Perl untuk mengimplementasikan beberapa yang aneh
perintah yang mungkin diperlukan dalam kasus-kasus khusus.

Perhatikan bahwa Anda juga dapat menggunakan informasi yang disajikan di sini di dalam skrip escape perl.
Melalui membutuhkan operator, mudah untuk memasukkan implementasi perintah baru ke dalam . Anda
script dan melakukan tugas yang sama. Anda mungkin perlu menyiapkan @ARGV sendiri jika Anda
mengandalkan fitur itu dalam implementasi perintah Anda.

Ekstensi perintah juga dapat dilihat sebagai cara untuk menggunakan kembali beberapa kode perl lainnya, agen surat
menyediakan kerangka yang tetap dan andal dan program eksternal yang menyediakan layanan. Satu
ekstensi langsung akan menangani milis, menggunakan mekanisme ini untuk berinteraksi dengan
beberapa perangkat lunak manajemen milis yang ditulis dalam perl.

UMUM MAIL SERVER


Satu hal yang menyenangkan tentang agen surat adalah ia memberi Anda alat dasar untuk mengimplementasikan a
server surat umum. Memang, melalui perintah SERVER, Anda dapat memproses pesan email,
ekstrak dan kemudian jalankan beberapa perintah yang telah ditentukan. Misalnya, Anda dapat menerapkan
server arsip, atau pengelola milis, dll...

Batasan utama saat ini adalah bahwa hanya perintah biasa yang diterima, atau perintah
mengambil beberapa info tambahan sebagai standard memasukkan atau setara. Tidak ada pengertian mode,
dengan set perintah terpisah untuk setiap mode atau visibilitas ruang nama terbatas, setidaknya untuk
sekarang, jadi tidak mudah (walaupun mungkin) untuk mengimplementasikan server ftpmail, misalnya,
karena ini menyiratkan gagasan mode.

Ringkasan
Untuk mengimplementasikan perintah server surat (katakanlah send fillet, yang akan mengirim sewenang-wenang
file dari sistem file dalam pesan email terpisah), Anda perlu melakukan hal berikut:

· Pikirkan tentang perintah dari sudut pandang keamanan. Di sini, perintah yang kami inginkan
implement berpotensi berbahaya karena dapat memberikan akses ke file apa pun di
mesin yang dijalankan individu agen surat memiliki akses ke. Jadi kami ingin membatasi itu
perintah untuk sejumlah orang tepercaya, yang akan diberikan kekuasaan untuk menjalankan
perintah ini. Lebih lanjut tentang ini nanti.

· Pilih apakah Anda ingin mengimplementasikan perintah di Perl atau di pemrograman lain
bahasa. Jika Anda melakukan yang terakhir, perintah Anda akan dikenal sebagai tempurung perintah (yaitu a
perintah yang dapat dijalankan langsung dari shell), sedangkan dalam kasus sebelumnya, Anda memiliki
pilihan untuk membuatnya tampak sebagai tempurung perintah, atau menghubungkannya ke agen surat in
kasus yang dikenal sebagai perl memerintah. Dalam kasus terakhir itu, perintahmu adalah
dimuat secara dinamis ke agen surat dengan semua keuntungan yang membawa Anda. Disini kita
akan menulis perintah kita sebagai skrip shell.

· Tulis perintah itu sendiri. Itu bagian tersulit dalam skema ini. Kemudian,
kita akan melihat implementasi langsung dari mengirim perintah.

· Mengedit server com file (didefinisikan dalam Anda ~/.mailagent) untuk merekam perintah baru Anda.
Kemudian pastikan file ini terlindungi dengan baik. Anda harus memilikinya, dan menjadi satu-satunya
diperbolehkan untuk memodifikasinya.

· Selain itu, Anda mungkin ingin menyembunyikan beberapa argumen dalam transkrip sesi
(lebih lanjut tentang ini nanti), izinkan perintah untuk mengambil aliran data sebagai standard memasukkan,
tetapkan jalur ke perintah, dll... Semua parameter itu terjadi di . Anda
server com file.

· Mulai gunakan perintah... yang tentu saja merupakan bagian terbaik dalam skema ini!

Di bagian berikut, kita akan belajar tentang sintaks dari server com berkas, apa kekuatan
adalah, bagaimana transkrip sesi dibuat, apa lingkungan perintahnya, dll...

bawaan Perintah Ringkasan
Server email memiliki serangkaian perintah bawaan yang terbatas, yang menangani otentikasi pengguna
dan pengaturan lingkungan perintah. Otentikasi pengguna berbasis kata sandi dan bukan
sangat kuat karena kata sandi ditentukan dengan jelas di dalam pesan email itu sendiri,
yang bisa dengan mudah dicegat.

Server mempertahankan gagasan tentang kekuatan. Satu pengguna mungkin memiliki lebih dari satu kekuatan di a
waktu, masing-masing kekuasaan hanya memberikan akses terbatas ke beberapa area sensitif. Beberapa kekuatan adalah
tertanam di server, tetapi pengguna dapat membuat yang baru bila perlu. Kekuatan itu adalah
software-enforced, artinya perintah harus memeriksa sendiri apakah sudah diperlukan
kekuatan (s) untuk melakukan dengan benar.

Kekuasaan dilindungi oleh kata sandi dan file izin. Memiliki kata sandi yang baik bukanlah
cukup, Anda harus dibersihkan untuk (ab) menggunakannya. File izin adalah daftar e-
pola alamat email, menggunakan skema metakarakter shell, seseorang dibersihkan jika dan
hanya jika alamat emailnya cocok dengan setidaknya salah satu pola dari file izin.
Semakin banyak Anda menggunakan karakter meta, semakin lemah skema izin ini, jadi
hati-hati.

Perintah Anda dan output yang dihasilkan dari eksekusi mereka biasanya dikirimkan kembali kepada Anda
sebagai transkrip sesi. Untuk alasan keamanan, kata sandi disembunyikan dari baris perintah.
Demikian juga, kegagalan untuk mendapatkan kekuatan tidak akan menunjukkan apakah Anda tidak memiliki otorisasi atau
apakah kata sandi Anda buruk.

Seorang pengguna dengan sistem kekuatan diizinkan untuk membuat kekuatan baru, menghapus kekuatan lain, mengubah
kata sandi daya, dan daftar, hapus atau ubah izin daya. Ini entah bagaimana penting
kekuatan yang harus ditahan oleh sejumlah kecil pengguna dengan izin yang sangat ketat (tidak
meta-karakter di alamat, jika memungkinkan). Kata sandi yang baik juga harus melindunginya
kekuasaan.

Namun, pengguna dengan sistem kekuatan tidak diperbolehkan untuk langsung mendapatkan kekuatan lain tanpa
menentukan kata sandinya dan diizinkan melakukannya oleh file izin terkait. Tetapi
adalah mungkin untuk mencapai itu secara tidak langsung dengan menghilangkan kekuatan dan menciptakan yang baru
satu dengan nama yang sama. Untuk mengendalikan orang dengan sistem kekuatan dan juga untuk
beberapa situasi rumit, ada kekuatan lain yang lebih seperti dewa: the akar kekuasaan.

Seorang pengguna dengan akar kekuatan dapat melakukan hampir apa saja, karena secara instan memberikan itu
sendiri-sendiri semua kekuatan yang tersedia di server (tapi keamanan). Satu-satunya batasan adalah
bahwa akar tidak dapat menghapus akar kekuatan sendirian. Seseorang perlu menentukan keamanan kata sandi
(daya tertanam lainnya) untuk melanjutkan. Tak perlu dikatakan, hanya satu individu harus
memiliki keduanya akar dan keamanan izin, dan hanya satu orang yang harus tahu keamanan
password dan terdaftar dalam file izin. Itu sistem kekuatan tidak dapat membahayakan salah satu dari mereka
dua kekuatan. Akhirnya, lebih dari satu pengguna dapat memiliki akar kekuatan, tapi jangan berikan
ringan itu...

Mendapatkan akar daya diperlukan ketika sistem telah mengacaukan konfigurasi sistem
dengan cara tanpa harapan, atau ketika urutan atom yang panjang dari perintah harus dikeluarkan: akar is
tidak tunduk pada jumlah maksimum perintah yang dapat dikeluarkan dalam satu pesan tunggal.

Jika Anda berpikir ini agen surat fitur berbahaya untuk akun Anda, jangan buat
akar dan keamanan kekuatan, dan jangan menulis perintah sensitif apa pun.

bawaan Perintah Definisi
Sekarang mari kita lihat perintah bawaan tersebut. Kata sandi dari perintah sensitif adalah
disembunyikan dalam transkrip sesi. Beberapa perintah menerima masukan dengan membaca surat
pesan sampai EOF marker, yang merupakan string EOF sederhana pada baris dengan sendirinya (analog
dengan cangkang di sini dokumen).

tambahan kekuasaan kata sandi
Tambahkan pengguna ke file izin untuk kekuasaan. Jika kata sandi daya diberikan, tidak
diperlukan kekuatan khusus, jika tidak sistem daya diperlukan. Untuk akar or
keamanan kekuatan, kekuatan yang sesuai diperlukan, atau kata sandi harus
ditentukan. Perintah membaca input standar hingga penanda EOF untuk mendapatkan
pengguna baru.

menyetujui kata sandi Command
Catat kata sandi di lingkungan perintah, lalu jalankan perintah. Jika
daya diperlukan dan belum diperoleh, perintah akan mencari kata sandi
di lingkungan dan mencoba untuk mendapatkan kekuatan yang relevan menggunakan kata sandi itu. Karena itu,
perintah yang disetujui (dengan kata sandi yang tepat) akan dijalankan secara transparan tanpa
kerumitan meminta kekuatan, mengeluarkan perintah dan kemudian melepaskan
kekuatan. Terserah perintah untuk melakukan menyetujui tes kata sandi dengan melihat
di menyetujui variabel di lingkungan perintah (lihat di bawah). Sejak izin
pemeriksaan (seperti yang dilakukan saat meminta daya) tidak dilakukan, tidak
perintah sensitif harus pernah berurusan dengan menyetujui membangun.

delpower kekuasaan kata sandi [keamanan]
Hapus daya dari sistem, dan daftar izin terkait. Itu sistem
daya diperlukan untuk menghapus sebagian besar kekuatan kecuali akar dan keamanan. itu keamanan
daya hanya dapat dihapus dengan sendirinya dan akar daya hanya dapat dihapus ketika
itu keamanan kata sandi juga ditentukan.

getauth kekuasaan kata sandi
Dapatkan file izin saat ini untuk daya tertentu. Tidak diperlukan daya khusus jika
password diberikan atau kekuatan sudah ditahan. Jika tidak, kekuatan sistem
dibutuhkan untuk semua kekuatan tapi akar or keamanan di mana kekuatan yang sesuai adalah
wajib.

kekuatan baru kekuasaan kata sandi [alias]
Tambahkan kekuatan baru ke sistem. Perintah kemudian membaca input email standar
sampai penanda EOF untuk mendapatkan daftar izin daya. Itu sistem kekuatan adalah
diperlukan untuk membuat kekuatan baru, kecuali itu akar or keamanan: Para keamanan kekuasaan
diperlukan untuk membuat akar dan akar daya diperlukan untuk membuat keamanan.

passwd kekuasaan tua yang baru
Ubah kata sandi daya. Tidak masalah jika Anda sudah memegang yang sesuai
kekuatan, Anda harus memberikan kata sandi lama yang tepat. Lihat juga kata sandi perintah.

kata sandi kekuasaan yang baru
Ubah kata sandi daya. Kekuatan yang sesuai diperlukan, atau Anda harus mendapatkannya
itu sistem kekuatan. Untuk mengubah akar or keamanan kata sandi, Anda memerlukan
kekuatan yang sesuai.

kekuasaan nama kata sandi
Mintalah kekuatan baru. Tentu saja, akar tidak perlu meminta yang lain
kekuatan tapi keamanan, kurang berikan kata sandi apa pun. Perintah ini tidak dihormati ketika
server tidak dalam mode tepercaya, tanpa sepengetahuan pengguna: pesan kesalahan di
file transkrip tidak berbeda dengan yang diperoleh dengan kata sandi yang tidak valid.

kekuatan regexp
Daftar semua kekuatan yang cocok dengan ekspresi reguler Perl, bersama dengan mereka
berkas izin masing-masing. Itu sistem daya diperlukan untuk mendapatkan daftar. Itu
akar or keamanan daya diperlukan untuk mendapatkan akses ke akar or keamanan
informasi, masing-masing. Jika tidak ada argumen yang diberikan, semua kekuatannya adalah
terdaftar.

melepaskan kekuasaan
Singkirkan beberapa kekuatan.

ulang kekuasaan kata sandi
Hapus pengguna dari file izin, dapatkan daftar dengan membaca surat standar
masukan sampai penanda EOF. Perintah ini tidak memerlukan kekuatan khusus jika
kata sandi yang tepat diberikan atau jika daya sudah ditahan. Sebaliknya,
itu sistem daya dibutuhkan. Untuk akar dan keamanan izin, yang sesuai
tenaga juga dibutuhkan.

set variabel nilai
Atur variabel ke nilai yang sesuai. Berguna untuk mengubah variabel internal
seperti nilai penanda EOF, atau ubah beberapa lingkungan perintah. Pengguna mungkin
mendefinisikan variabelnya sendiri untuk perintahnya. Untuk bendera-tipe variabel, nilai
on, iya nih or benar set variabel menjadi 1, string lain menyetelnya ke 0 (Salah).
Digunakan dengan sendirinya sebagai set, daftar semua variabel yang didefinisikan bersama dengan
nilai masing-masing dikembalikan.

setauth kekuasaan kata sandi
Ganti file izin daya dengan yang diperoleh dari input email standar hingga
tanda EOF. Itu sistem daya diperlukan kecuali Anda menentukan kata sandi yang tepat
atau kekuatan sudah menjadi milik Anda. Seperti biasanya, akar or keamanan izin hanya bisa
berubah ketika kekuatan ditahan.

pemakai [surel [memerintah]]
Jalankan perintah dengan mengasumsikan identitas email yang ditentukan. Kekuatan hilang saat
menjalankan perintah. Identitas email dapat diperiksa dengan perintah itu sendiri,
yang dapat memberlakukan pembatasan lebih lanjut pada eksekusi, seperti mendapatkan pengguna-
kekuasaan yang ditentukan. Perhatikan bahwa perintah ini hanya mengubah lingkungan global, dan
itu terserah Command implementasi untuk memanfaatkan informasi tersebut. Jika
tidak ada perintah yang ditentukan, identitas baru diasumsikan sampai diubah oleh yang lain
pemakai perintah dan semua kekuatan yang saat ini dipegang oleh pengguna dilepaskan. Jika tidak
email alamat diberikan, ID pengguna asli dikembalikan.

perintah Lingkungan Hidup
Ada enam jenis perintah dan variabel yang dapat ditentukan dalam mode server. Dua dari
mereka, akhir dan membantu jenis khusus dan ditangani secara terpisah. Dua jenis adalah dan bendera lihat
ke variabel dan dua tipe terakhir perl dan tempurung merujuk ke perintah.

Setiap kali agen surat menjalankan perintah server, ia menyiapkan lingkungan untuk perintah itu: jika
ini adalah sebuah perl-ketik perintah, lalu satu set variabel Perl diatur sebelum memuat
memerintah; jika itu adalah tempurung-ketik perintah, beberapa variabel lingkungan diinisialisasi dan
deskriptor file #3 diatur untuk menunjuk langsung ke transkrip sesi agen surat.

A tempurung-type perintah bercabang, sementara a perl-type perintah dimuat langsung di agen surat
dalam cmdenv kemasan. Ini beroperasi seperti perintah pemfilteran PERL, hanya saja
paket target berbeda dan satu set variabel yang berbeda telah diatur sebelumnya.

Beberapa perintah mengumpulkan data tambahan hingga penanda akhir file (secara default string
EOF pada baris dengan sendirinya) dan data tersebut diumpankan ke perintah shell melalui stdin dan untuk perl
perintah melalui @penyangga variabel yang diatur dalam paket lingkungan bernama cmdenv (di mana
perintah dimuat dan dijalankan).

Jika Anda mendefinisikan variabel Anda sendiri (types adalah or bendera), Anda dapat menggunakan bawaan set Command
untuk mengubah nilai-nilai mereka. Perhatikan bahwa tidak ada nilai default yang dapat diberikan saat mendefinisikan
variabel. Nilai default yang sesuai harus ditetapkan dalam perintah yang menggunakannya, dengan
keuntungan bahwa nilai default yang berbeda dapat digunakan oleh perintah yang berbeda.

Berikut ini lingkungan Hidup variabel didefinisikan. Sebagian besar hanya-baca, kecuali diberi tahu
jika tidak, dalam hal ini builtin set perintah dapat digunakan pada mereka.

menyetujui Kata sandi yang disetujui untuk menyetujui perintah, kosongkan jika tidak di dalam bawaan menyetujui
membangun.

auth Bendera disetel ke true ketika amplop yang valid ditemukan dalam pesan email. Kapan
bendera ini salah, server tidak dapat dimasukkan ke dalam mode tepercaya.

cmd Baris perintah, seperti yang tertulis dalam pesan.

mengumpulkan Bendera internal disetel ke true saat mengumpulkan input dari dokumen di sini. Dia
biasanya reset ke false sebelum memanggil perintah.

men-debug Benar ketika mode debug diaktifkan (mungkin disetel).

cacat Daftar perintah dinonaktifkan yang dipisahkan koma, tanpa spasi di antaranya. Ini
diinisialisasi ketika perintah SERVER dipanggil dan -d opsi digunakan.

eof Penanda akhir file saat ini untuk perintah dokumen di sini. Secara default disetel ke
'EOF' (dapat diubah).

kesalahan Jumlah kesalahan sejauh ini.

nomor pekerjaan Nomor pekerjaan yang ditetapkan untuk agen surat saat ini.

mencatat Apa yang dicatat dalam transkrip, dengan beberapa argumen yang mungkin disembunyikan.

nama Nama perintah.

pak Mode pengepakan untuk pengiriman file (dapat diatur).

path Alamat tujuan pengiriman atau pemberitahuan file (dapat diatur).

kekuatan Tanda titik dua (:) memisahkan daftar kekuatan yang saat ini berhasil dimiliki pengguna
diminta dan didapat.

permintaan Jumlah permintaan yang diproses sejauh ini.

jejak Benar ketika perintah shell ingin dilacak dalam transkrip (dapat diatur).

Terpercaya Benar ketika server dalam mode kepercayaan, di mana kekuatan dapat diperoleh. Ini diaktifkan
oleh -t opsi perintah SERVER, asalkan amplop surat yang valid adalah
ditemukan.

uid Alamat pengirim pesan, tempat transkrip akan dikirim. Oleh
ekstensi, ID pengguna asli untuk server, yang merupakan basis kekuatan
mekanisme izin.

pemakai ID pengguna yang efektif, awalnya sama dengan uid, tetapi dapat diubah melalui
itu pemakai perintah bawaan.

sesi Salinan
Transkrip sesi dikirimkan kembali secara otomatis ke pengguna yang meminta server
mengakses. Transkrip ini menunjukkan perintah yang dijalankan oleh pengguna dan statusnya: OK or GAGAL.
Di antara dua baris itu, transkrip menunjukkan keluaran apa pun yang dibuat secara eksplisit oleh perintah untuk
transkrip. Biasanya, transkrip dapat digunakan untuk meneruskan pesan kesalahan kembali ke
pengguna, tetapi bahkan perintah yang dijalankan dengan benar mungkin ingin mengeluarkan pesan eksplisit,
menyatakan apa yang baru saja dilakukan.

Perintah Perl dapat mengakses transkrip melalui PENGIRIM pegangan file, didefinisikan dalam cmdenv
package, sementara perintah shell dapat mengaksesnya melalui deskriptor file #3.

Perhatikan bahwa transkrip sesi dikirimkan ke pengirim pesan, yaitu siapa pun yang
baris header amplop mengatakan itu. Sejauh menyangkut server, alamat email ini adalah
digunakan sebagai ID pengguna, sama seperti nama login biasa dapat dianggap sebagai id pengguna. Untuk
perintah sensitif, otentikasi berdasarkan informasi itu sangat lemah. Lebih banyak lagi
Otentikasi "aman" disediakan oleh kekuatan server, yang berbasis kata sandi.
Sayangnya, kata sandi yang jelas harus dikirimkan dalam pesan itu sendiri dan bisa jadi
menguping.

Rekaman New Perintah dan Variabel
Perintah dan variabel server didefinisikan dalam server com file yang ditentukan di Anda
~/.mailagent. Format file adalah tabel dengan item pada baris yang dipisahkan oleh
karakter tab. Setiap baris mendefinisikan satu perintah atau variabel. Bidang yang tidak relevan mungkin
dimasukkan sebagai satu karakter '-' (minus). Formatnya memungkinkan untuk komentar gaya shell (#).

Setiap baris memiliki bidang berikut:

nama mengetik menyembunyikan mengumpulkan data path tambahan

di mana:

nama adalah nama perintah atau variabel yang dikenali oleh server.

mengetik adalah salah satu perl, tempurung, adalah, bendera, membantu or akhir.

menyembunyikan menunjukkan argumen mana dalam perintah yang harus disembunyikan (nama perintah
menjadi argumen nol) dalam transkrip sesi. Gunakan '-' jika tidak ada argumen
perlu disembunyikan. Biasanya, ini digunakan untuk menyembunyikan kata sandi yang jelas di
perintah. Jika lebih dari satu argumen harus disembunyikan, maka daftar
angka yang dipisahkan oleh ',' (koma) dapat ditentukan, dengan tidak spasi antara
mereka. Misalnya '2,4' akan menyembunyikan argumen 2 dan 4 dalam transkrip.

mengumpulkan data adalah sebuah bendera (sebutkan sebagai 'y' atau 'n', tetapi Anda dapat menggunakan kata-kata lengkap
'ya' atau 'tidak') yang menunjukkan apakah perintah mengumpulkan data tambahan dalam a
di sini-dokumentasi sampai penanda EOF. Atau, Anda dapat menentukan '-' di
tempat 'n'.

path menentukan jalur perintah (~penggantian nama diperbolehkan). Jika tidak
relevan (misalnya saat mendefinisikan variabel) atau saat Anda ingin meninggalkannya
kosong, gunakan '-'. Jika jalur kosong ditentukan untuk a perl or tempurung perintah,
maka implementasi dari perintah itu diharapkan dapat ditemukan di pelayan,
seperti yang didefinisikan dalam ~/.mailagent. Jika nama perintahnya adalah cmd misalnya, maka
perintah perl diharapkan ada dalam file bernama cmd of cmd.pl, sedangkan
perintah shell diharapkan dapat ditemukan di a cmd of cmd.sh mengajukan. Perhatikan bahwa
sebuah perintah dinonaktifkan jika tidak dapat ditemukan pada saat server com
file diuraikan.

tambahan adalah parameter tambahan yang diperlukan untuk perintah. Tidak seperti bidang lain, ini
harus dikosongkan jika tidak diperlukan. Apa pun hingga akhir baris adalah
diambil oleh bidang ini. Perintah Perl harus menentukan nama perl
berfungsi untuk memanggil untuk menjalankan perintah; jika tidak ada yang ditentukan, nama
perintah itu sendiri disebut. Perintah Shell dapat menggunakan bidang itu untuk memasok
opsi tambahan, yang akan dimasukkan tepat setelah nama perintah dan
sebelum argumen lain yang disediakan pengguna. Orang lain harus meninggalkan ini sendirian.

Khusus perintah jenis
Saat ini ada dua jenis perintah khusus.

Yang paling sederhana adalah akhir Tipe. Ini digunakan untuk menentukan perintah yang mungkin mengakhiri server
pengolahan. Secara default, pemrosesan berlanjut hingga akhir file tercapai atau
pembatas tanda tangan '--' ditemukan. Misalnya, Anda mungkin ingin mendefinisikan perintah berhenti
dan berikan itu akhir Tipe. Begitu server mencapai perintah itu, itu dibatalkan
memproses dan membuang sisa pesan.

membantu jenis biasanya dilampirkan ke membantu perintah dan mencetak bantuan berdasarkan perintah,
bantuan untuk setiap perintah yang disimpan di bawah pembantu variabel (didefinisikan dalam Anda
~/.mailagent) dalam file dengan nama yang sama dengan perintah itu sendiri. Misalnya, dengan asumsi
sebuah perintah menembak, file bantuannya diharapkan di helpdir/tembak. Jika tidak ada file yang ditemukan
di sana, agen surat mencari di perpustakaan umum (/usr/share/mailagent) untuk file bantuan.
Bantuan diberikan hanya jika file bantuan ada dan tidak berukuran nol.

membuat itu Akar Daya
Untuk mem-bootstrap server, Anda perlu membuat kekuatan root. Semua kekuatan lainnya
kemudian dapat dibuat dengan menggunakan antarmuka server, yang memastikan konsistensi dan mencatat
tindakan. Jika Anda tidak berencana menggunakan kekuatan sama sekali, Anda dapat melewati bagian itu.

Pertama, Anda perlu mengambil kata sandi yang bagus untuk akar kekuatan. Seseorang dengan akar kekuasaan
dapat melakukan hampir semua hal dengan server, jadi berhati-hatilah. Mari kita asumsikan Anda memilih akar-
lulus sebagai kata sandi.

Sunting passwd (didefinisikan dalam Anda ~/.mailagent) dan tambahkan baris berikut:

akar: :

yaitu masukkan kata sandi dengan jelas di antara '<' dan '>'. Itu tidak akan bertahan lama dalam bentuk itu,
tapi ini adalah cara termudah untuk bootstrap. Lindungi passwd file dengan erat (baca-tulis
izin hanya untuk Anda). Kemudian buat powerdir/root file, lindungi dengan cara yang sama dan
tambahkan alamat e-mail Anda ke dalamnya, pada satu baris dengan sendirinya. Itu harus menjadi alamat yang akan
muncul di Dari: baris surat Anda. Karena file izin mendukung gaya shell
pola, Anda dapat menggunakan login@*domain.top untuk mengizinkan email dari login Anda dari mesin mana pun di
domain Anda.

Kamu hampir selesai. Sekarang cukup jalankan perintah berikut:

agen surat -i -e 'SERVER -t'

dan beri makan input standarnya dengan:

Mulai dari Tujuan email alamat
Dari: Tujuan email alamat

power root-pass
kata sandi root-pass
^D

Perhatikan bahwa yang pertama Mulai dari baris adalah wajib di sini, karena itu adalah amplop yang
otentikasi didasarkan. Karena kami memberi makan agen surat dengan pesan buatan tangan, kami
harus memberikan amplop yang valid atau server tidak akan beralih ke mode tepercaya...

Efek samping dari membuat ulang kata sandi Anda adalah mengenkripsinya di passwd file,
sehingga siapa pun yang melihat file itu tidak dapat menebak akar kata sandi, semoga.

Setelah Anda memiliki yang valid akar daya terpasang, Anda dapat membuat sistem kekuatan dengan menggunakan
kekuatan baru. Kekuatan lebih lanjut kemudian dapat dibuat dan dihapus menggunakan sistem kekuatan saja.

Anda juga harus membuat keamanan kekuatan dan berikan kata sandi yang berbeda dari akar
kata sandi. Ini benar-benar diperlukan hanya jika Anda ingin mengelola server dari jarak jauh. Jika
Anda memiliki akses lokal dan hal-hal menjadi rusak, selalu mungkin untuk mengubah root
password secara manual dengan mengulangi urutan bootstrap ini.

Perhatikan bahwa pemeriksaan izin dilakukan menggunakan alamat amplop pesan, yaitu a
sedikit lebih sulit untuk dipalsukan daripada bidang tajuk biasa seperti Pengirim:. Amplop diekstraksi
dengan melihat baris header pertama, yang pada sistem Unix terlihat seperti:

Mulai dari amplop-alamat tanggal pengiriman

dan disisipkan oleh mail transport agent (MTA). Jika Anda menggunakan kirim email sebagai MTA,
maka hanya Terpercaya pengguna dideklarasikan dalam sendmail.cf file dapat membuat "palsu"
alamat amplop, fitur yang biasanya digunakan oleh operator milis, karena alamat itu
kemudian digunakan sebagai target pentalan jika email tidak dapat dikirim. Kalau itu dulu
baris header tidak ada, pengirim dihitung menggunakan Pengirim: lapangan jika ada, maka
Dari: lapangan, tapi auth variabel disetel ke false dan server tidak akan beralih ke
mode tepercaya; dengan kata lain, tidak akan mungkin untuk mendapatkan kekuasaan dalam sesi itu.

Selain itu, karena transkrip sesi dikirim ke alamat amplop yang sama dengan yang digunakan untuk
mengotentikasi kelayakan untuk suatu kekuatan, fitur server hampir tidak dapat digunakan untuk
mengambil informasi rahasia yang disimpan di situs di mana agen surat dijalankan sejak
informasi akan dikirim ke salah satu pengguna yang diizinkan untuk kekuatan itu. Ini adalah
tanggung jawab Anda, pengguna, untuk memastikan hal ini tidak terjadi atau Anda dapat masuk ke
masalah hukum.

Akhirnya, perintah sensitif harus dilindungi oleh kekuatan yang tepat, dan harus sangat hati-hati
diambil secara tertulis pelaksanaan perintah untuk memastikan keamanan tidak dapat
dielakkan. Tapi tidak, fitur agen surat ini diyakini tidak berbahaya bagi
sistem atau situs tempat ia digunakan, karena pengguna yang gigih dapat mengimplementasikannya secara sepele melalui a
skrip shell lima baris. Jika keamanan benar-benar menjadi masalah, .maju file menggunakan perpipaan
fitur harus dilarang dan akses ke cron dilarang untuk menghindari surat otomatis
pemrosesan (karena cron dapat memanggil a agen surat proses -atau apapun
program lain dalam hal ini- untuk memproses surat masuk dengan cara yang sebanding).

Example
Berikut adalah contoh yang menunjukkan langkah-langkah yang terlibat dalam membuat a tempurung perintah, yang akan
ambil skrip dengan mengumpulkan baris hingga tanda EOF dan masukkan ke shell asli untuk
eksekusi. Karena mengizinkan fitur ini tanpa perlindungan apa pun akan menjadi keamanan nyata
lubang, kami melindunginya dengan meminta kekuatan tempurung sebelum mengizinkan eksekusi.

Inilah implementasi saya dari tempurung perintah (tersedia di distribusi agen surat
bawah bermacam-macam/kulit):

#!/ Bin / sh

# Jalankan perintah dari stdin, seperti yang dikirimkan oleh server agen surat.
# File deskriptor #3 adalah saluran ke transkrip sesi.

# Pastikan kita memiliki kekuatan shell.
# Jangan biarkan kekuatan root melewatinya untuk alasan keamanan.
kasus ":$powers:" di
*:kerang:*) ;;
*)
echo "Izin ditolak." >&3
keluar 1
;;
esac

# Mungkin shell telah ditentukan... Jika tidak, gunakan / Bin / sh
kasus "$shell" di
'') cangkang='/ Bin / sh';;
esac

# Biasanya, perintah shell memiliki output yang disertakan dalam transkrip hanya di
# kasus kesalahan atau saat pengguna meminta pelacakan. Namun di sini, kita perlu
# lihat apa yang terjadi, jadi semuanya dialihkan ke transkrip sesi.

exec $shell -x >&3 2>&3

Perhatikan bagaimana kami membuat akses ke $kekuatan dan $kulit variabel lingkungan. Yang terakhir adalah
ditentukan pengguna untuk memungkinkan pengaturan dinamis shell.

Dengan asumsi kita menyimpan perintah itu di bawah servdir/shell.sh (jangan lupa tambahkan eksekusi
bit pada file ...), berikut adalah cara kami mendeklarasikannya dan variabelnya di server com file.

cangkang cangkang - y -
cangkang var - - -

Contoh ini menunjukkan bahwa ada ruang nama terpisah untuk variabel dan perintah.
Selain itu, perintah tersebut memiliki nama yang sama dengan jenisnya -- jangan biarkan hal itu membingungkan Anda :-).

Sekarang, dengan asumsi Anda telah membuat sistem daya dan melindunginya dengan kata sandi
(mari kita asumsikan sys-pass untuk tujuan contoh ini), Anda perlu membuat shell
kekuatan. Meskipun Anda bisa melakukannya secara manual (seperti ketika Anda membuat akar kekuatan), itu
lebih baik menggunakan antarmuka SERVER karena memastikan konsistensi.

Untuk membuat tempurung daya yang dibutuhkan untuk menggunakan yang baru dibuat tempurung perintah, kamu
perlu menambahkan aturan berikut ke file aturan Anda:

Subjek: Server { SIMPAN server; SERVER -t };

yang akan menyimpan semua email server dalam folder khusus dan memprosesnya. Perhatikan -t
opsi, yang memungkinkan mode tepercaya, di mana kekuatan dapat diperoleh. Sekarang kirim sendiri
surat berikut:

Subjek: Server
sys-pass sistem tenaga
shell-pass shell daya baru
[email dilindungi]
EOF

yang meminta untuk sistem kekuatan (diperlukan untuk menciptakan sebagian besar kekuatan), dan kemudian menciptakan a
kekuatan baru tempurung, menugaskan lulus shell sebagai kata sandi dan kliringnya [email dilindungi] untuk itu.
Perhatikan fill-in dokumen di sini untuk perintah newpower, hingga penanda EOF. Tentu saja,
Anda perlu mengganti alamat dengan alamat asli Anda.

Anda akan menerima transkrip sesi di sepanjang baris ini:

---- Transkrip sesi agen surat untuk [email dilindungi] ----

----> sistem tenaga ********
OK.

====> cangkang kekuatan baru ********
OK.

====> --
Akhir pemrosesan (.signature)

---- Akhir transkrip sesi agen surat ----

Catat kata sandi yang disembunyikan, dan perubahan prompt setelah daya sistem telah
diberikan. Karena mailer saya secara otomatis menambahkan tanda tangan, pemrosesan berhenti padanya.

Sekarang mari kita gunakan perintah baru ini... Kirimkan sendiri email berikut ini:

Subjek: Server
setel shell /bin/ksh
setel akhir AKHIR
tempurung
ls-l / etc / passwd
AKHIR
shell-pass daya shell
tempurung
ls-l / etc / passwd
AKHIR

Jika semuanya benar, Anda akan menerima kembali transkrip yang terlihat seperti ini:

---- Transkrip sesi agen surat untuk [email dilindungi] ----

----> atur shell /bin/ksh
OK.

----> set eof END
OK.

----> cangkang
Izin ditolak.
Perintah mengembalikan status bukan nol (1).
GAGAL.

----> cangkang daya ********
OK.

====> cangkang
+ aku -l / etc / passwd
-rw-r--r-- 1 sistem root 691 Okt 01 14:24 / etc / passwd
OK.

====> --
Akhir pemrosesan (.signature)

---- Akhir transkrip sesi agen surat ----

Seruan pertama dari tempurung perintah gagal karena kita kekurangan tempurung kekuatan. string
"Izin ditolak." digemakan oleh perintah itu sendiri ke dalam deskriptor file #3 dan membuatnya
ke transkrip.

Kesimpulan
Server surat generik yang diimplementasikan di agen surat dapat digunakan untuk mengimplementasikan milis
manajer, server pemungutan suara, server arsip, dll... Sayangnya, saat ini tidak
memiliki gagasan negara, dengan set perintah yang didedikasikan untuk setiap negara, jadi tidak
mungkin untuk mengimplementasikan server arsip cerdas.

Jika Anda menerapkan perintah server sederhana yang baru dan merasa perintah itu cukup umum untuk menjadi
berkontribusi, tolong kirimkan kepada saya dan saya akan dengan senang hati mengintegrasikannya.

CONTOH


Berikut adalah beberapa contoh file aturan. Pertama, jika Anda tidak menentukan file aturan atau jika itu
kosong, aturan bawaan berikut berlaku:

Semua: /^Subjek: [Cc]perintah/ { TINGGALKAN; PROSES };

Setiap surat tertinggal di kotak surat. Selain itu, kirim email dengan "Subjek: Perintah" di mana saja di
pesan diproses.

File aturan berikut adalah yang saya gunakan saat ini:

maildir = ~/surat;

Semua: /^Subjek: [Cc]perintah/ { SIMPAN cmds; PROSES };

Kepada: /^[email dilindungi]/ { POST -l mail.gue };
Rupanya-Untuk: ram,
Grup berita: mail.gue { BOUNCE [email dilindungi] };

<_SEEN_>
Rupanya-Untuk: ram,
Grup berita: mail.gue { HAPUS };

Dari: root, Ke: root { BEGIN ROOT; MENOLAK };
/^Hasil lari harian/ { MENULIS ~/var/log/york/daily.log%D };
/^Output mingguan dijalankan/ { MENULIS ~/var/log/york/mingguan };
/^Output berjalan bulanan/ { MENULIS ~/var/log/york/bulanan };

Dari: ram { MULAI RAM; MENOLAK };
Kepada: ram { TINGGALKAN };
X-Mailer: /mailagent/ { TINGGALKAN };
{ MENGHAPUS };

Direktori folder diatur ke ~/surat. Semua surat perintah disimpan dalam folder
~/mail/cmds dan diproses. Mereka tidak muncul di kotak surat saya. Surat ditujukan ke gue
milis (Grup Pengguna Eiffel Prancis, yaitu Groupe des Utilisateurs Eiffel) adalah
diposting di newsgroup lokal mail.gue dan juga tidak muncul di kotak surat saya. Setiap mengikuti-
dibuat di grup ini dikirimkan kepada saya oleh berita terbaru (dan tidak langsung ke milis,
karena surat-surat itu akan kembali kepada saya lagi dan diumpankan ke newsgroup, yang pada gilirannya
akan meminta mereka dikirim kembali ke daftar, dan seterusnya, dan seterusnya). Oleh karena itu aturan selanjutnya
yang menangkap tindak lanjut tersebut dan memantulkannya ke milis. Surat-surat itu akan
memang kembali, tetapi aturan _SEEN_ hanya akan menghapusnya.

Di mesin saya, surat untuk akar diteruskan ke saya. Namun, setiap hari, cron daemon
memulai beberapa proses untuk melakukan pembersihan administrasi (memutar file log, dll...), dan
mengirimkan hasilnya kembali. Mereka diarahkan ke folder tertentu dengan perintah MENULIS,
untuk memastikan mereka tidak tumbuh tanpa batas. Perhatikan substitusi makro untuk harian
output (pada hari Senin, output disimpan di setiap hari.1 misalnya).

Kelompok aturan berikutnya mencegah sistem email mengirim kembali email ketika saya berada di a
ekspansi alias grup. Ini adalah sebuah kirim email opsi yang saya nonaktifkan di mesin saya. Perawatan adalah
namun diambil untuk menjaga agar surat tetap datang dari agen surat yang saya terima sebagai karbon buta
salinan.

PERINGATAN


Untuk membatasi beban overhead pada sistem, hanya satu proses agen surat diperbolehkan
untuk menjalankan perintah. Jika beberapa surat baru tiba saat agen surat lain sedang berjalan, itu
surat antri dan akan diproses kemudian oleh utama agen surat.

Untuk alasan yang sama, pesan yang dikirim kembali oleh agen surat diantrekan oleh kirim email, untuk menghindari
biaya transfer surat saat memproses perintah.

KEAMANAN


Pertama, izinkan saya membahas apa keamanan berarti di sini. memang tidak berarti keamanan sistem terhadap
serangan penyusup. Jika sistem Anda mengizinkan .maju kait dan/atau cron pekerjaan yang akan ditetapkan oleh
pengguna biasa, maka sistem Anda tidak aman sama sekali. Periode. Jadi kami tidak repot-repot dengan
keamanan di tingkat sistem, melainkan di tingkat akun Anda sendiri di mana semua jenis
data berharga disimpan.

Untuk menghindari gangguan berbahaya melalui kuda Troya, C menyaring akan menolak untuk lari jika
file konfigurasi ~/.mailagent atau file aturan yang ditentukan dapat ditulis dunia atau tidak
dimiliki oleh pengguna. Tes-tes itu diberlakukan bahkan jika menyaring tidak menjalankan setuid,
karena mereka membahayakan keamanan akun Anda. Itu agen surat juga akan tampil
beberapa dari pemeriksaan tersebut, jika tidak dipanggil melalui C menyaring.

Memang, jika seseorang dapat menulis ke Anda ~/.mailagent file, maka dia dapat dengan mudah mengubah
aturan parameter konfigurasi untuk menunjuk ke file aturan palsu lainnya dan kemudian mengirimi Anda
mail, yang akan memicu agen surat, berjalan seperti Anda. Melalui perintah RUN, potensi ini
penyusup dapat menjalankan perintah apa pun, menggunakan hak istimewa Anda, dan dapat mengatur kuda Trojan untuk
kemudian teliti. Menerapkan logika yang sama, file aturan juga harus dilindungi dengan ketat.

Dan, tidak mengherankan, aturan yang sama berlaku untuk Anda cmd baru file, yang digunakan untuk menggambarkan
perintah penyaringan diperpanjang. Kalau tidak, itu akan memungkinkan seseorang untuk secara diam-diam mendefinisikan kembali
perintah standar yang umum digunakan seperti TINGGALKAN dan kemudian dapat mengasumsikan identitas Anda.

Versi setelah 3.0 PL44 hadir dengan peningkatan (dari sudut pandang keamanan) C menyaring
yang tidak hanya akan melakukan pemeriksaan yang disebutkan di atas tetapi juga akan memastikan bahwa: perl
dapat dieksekusi dan agen surat skrip yang akan dieksekusi tidak dilindungi secara longgar (ketika
execsafe AKTIF atau saat dijalankan dengan hak pengguna super). Selanjutnya, jika menyaring is
atur di Anda .maju seperti yang dijelaskan di halaman manual ini, itu akan dapat memeriksa sendiri untuk
keamanan dan akan memperingatkan Anda dengan keras jika itu bisa dirusak, yang bisa mengalahkan semua
pemeriksaan keamanan.

Mailagent juga diperpanjang sehingga semua program dijalankan melalui RUN dan kawan-kawan, serta
kait surat, diperiksa untuk kekurangan perlindungan yang jelas sebelum benar-benar dijalankan Diterjemahkan
skrip (dimulai dengan token ajaib #!) dan skrip perl mengikuti "exec perl . ajaib"
jika mantra $under_shell" diperiksa secara khusus untuk keamanan lebih lanjut dari yang relevan
penerjemah. Pengecekan tersebut dilakukan secara sistematis (bila execsafe AKTIF atau kapan
berjalan dengan hak pengguna super) bahkan jika aman parameter tidak disetel ke ON. Juga,
semua file akan menjadi exec ()ed diperiksa menggunakan metode pemeriksaan diperpanjang yang sama yang digunakan ketika
aman AKTIF (tes kepemilikan dilewati saat memeriksa exec ()-keberadaan a
file).

Gunakan agen surat online menggunakan layanan onworks.net


Server & Workstation Gratis

Unduh aplikasi Windows & Linux

Perintah Linux

Ad