Saya perlu menghapus semua email dari sumber tertentu. Saya dapat membuat daftar semua email dengan f [email protected]
tetapi saya harus membuangnya ke sesuatu seperti awk dan kembali ke surat ... atau menyalin semua nomor header email satu per satu.
Apakah ada cara yang lebih cepat atau cara yang terintegrasi ke dalam program yang akan melakukannya secara otomatis?
Jawaban:
The
procmail
paket termasuk alat yang berguna yang disebutformail
yang memungkinkan pengguna untuk iterate atas pesan individu dari kotak surat mbox-gaya tradisional. Pendekatan saya untuk tugas-tugas seperti ini adalah dengan membagi mbox menjadi pesan-pesan individual, menggunakan alat UNIX standar (grep, rm) untuk memproses pesan-pesan, dan kemudian merakit kembali kotak surat. Secara alami, ini perlu dilakukan dengansendmail
proses berhenti, sehingga tidak ada surat baru yang datang saat Anda sedang bekerja. Hanya downtime singkat yang diperlukan.Anda tidak mengatakan BSD mana yang Anda gunakan, tetapi saya akan menganggap FreeBSD. Saya juga akan menganggap bahwa Anda menggunakan
bash
shell Anda, dan bahwa Anda memiliki akses root ke kotak, atau setidaknya hak sudo yang cukup untuk memulai / menghentikansendmail
instance pada mesin Anda, dan untuk menulis langsung ke kotak surat Anda/var/mail/$USER
.Instal
procmail
paket dan bacaformail
halaman manual.Jadikan ruang kerja bersih:
Buat skrip sederhana dan buat agar bisa dieksekusi:
Dan satu lagi:
Hentikan server surat:
Bagi mbox Anda menjadi beberapa file di direktori saat ini:
Perintah itu membaca kotak surat Anda, dan membuat file
msg-#####.txt
di direktori saat ini. Itu tidak menulis ke atau menghapus/var/mail/$USER
kotak surat Anda , jadi tidak ada salahnya dilakukan.Menggunakan
grep
, mengidentifikasimsg-*.txt
file yang ingin Anda hapus, dan memeriksa beberapa di antaranya untuk memastikan bahwa Anda yakin regexp Anda hanya menargetkan pesan yang ingin Anda hapus. Boleh saja menggunakan beberapa pass regexp, tetapi Anda harus yakin bahwa setiap regexp tidak memiliki positif palsu.Jika file pesan yang diidentifikasi oleh
grep
memang pesan yang ingin Anda hapus, maka:Jika ada beberapa regexps yang ingin Anda gunakan untuk menemukan pesan yang akan dihapus, Anda dapat kembali dan
grep
lagi dengan regexp yang berbeda dan periksa lokasi klik tersebut, dll.Setelah Anda berhasil menghapus semua pesan yang menyinggung, buat cadangan kotak surat Anda, tulis
msg*.txt
file yang tersisa ke kotak surat Anda, dan mulai kembali server surat:Jika Anda menemukan alat ini berguna, dan ingin menyimpannya untuk digunakan di masa mendatang, maka:
sumber