Tôi đã thiết lập một số công việc định kỳ và họ gửi kết quả crons đến một email. Bây giờ qua nhiều tháng tôi đã tích lũy được một số lượng lớn email.
Bây giờ câu hỏi của tôi là làm thế nào tôi có thể lọc tất cả các email từ hộp thư của tôi?
Tôi đã thiết lập một số công việc định kỳ và họ gửi kết quả crons đến một email. Bây giờ qua nhiều tháng tôi đã tích lũy được một số lượng lớn email.
Bây giờ câu hỏi của tôi là làm thế nào tôi có thể lọc tất cả các email từ hộp thư của tôi?
Câu trả lời:
Bạn chỉ có thể xóa /var/mail/username
tệp để xóa tất cả các email cho một người dùng cụ thể. Ngoài ra, các email gửi đi nhưng chưa được gửi sẽ được lưu trữ trong /var/spool/mqueue
.
username
phải được thay thế bằng người dùng mà bạn muốn xóa email. Trong trường hợp của bạn, các email đang được gửi đến người dùng được gọi cron_results
, vì vậy bạn sẽ phải xóa /var/www/cron_results
.
thay đổi phương pháp:
mail -N
d *
quit
-N
Ức chế hiển thị ban đầu của tiêu đề thư khi đọc thư hoặc chỉnh sửa thư mục thư.
d *
xóa tất cả thư
> mbox
vào thư mục chính, điều này chỉ cần cắt bớt tệp mbox.
Chỉ dùng:
mail
d 1-15
quit
Sẽ xóa tất cả các tin nhắn giữa số 1 và 15. để xóa tất cả, sử dụng d *
.
Tôi chỉ sử dụng bản thân mình trên Ubuntu 12.04.4 và nó hoạt động như một bùa mê.
Ví dụ:
eric@dev ~ $ mail
Heirloom Mail version 12.4 7/29/08. Type ? for help.
"/var/spool/mail/eric": 2 messages 2 new
>N 1 Cron Daemon Tue Jul 29 17:43 23/1016 "Cron <eric@ip-10-0-1-51> /usr/bin/php /var/www/sandbox/eric/c"
N 2 Cron Daemon Tue Jul 29 17:44 23/1016 "Cron <eric@ip-10-0-1-51> /usr/bin/php /var/www/sandbox/eric/c"
& d *
& quit
Sau đó kiểm tra lại thư của bạn:
eric@dev ~ $ mail
No mail for eric
eric@dev ~ $
Điều khiến bạn vấp ngã là bạn đang sử dụng x
hoặc exit
để thoát khỏi những thay đổi trong quá trình đó.
d*
, ít nhất là trên CentOS 7
.
exit
chứ không phải quit
là vấp ngã tôi. exit
sẽ hủy bỏ phiên, vì vậy mọi email đang chờ xử lý sẽ được giữ nguyên. quit
sẽ viết lại các thay đổi, vì vậy các email đã xóa được cam kết tại thời điểm đó.
d 1-15
hoạt động trên Debian 8. Cảm ơn!
Thay vì xóa, tôi nghĩ rằng chúng ta có thể vô hiệu hóa tệp, vì tệp sẽ được tạo nếu dịch vụ thư vẫn còn. Một cái gì đó như sau sẽ làm công việc
cat /dev/null >/var/spool/mail/tomlinuxusr
Và vâng, xin lỗi vì đã đánh thức chủ đề cũ này nhưng tôi cảm thấy mình có thể đóng góp.
Lót:
echo 'd *' | mail -N
yes 'd' | mail
hoạt động như mong đợi.
Trên UNIX / Linux / Mac OS X, bạn có thể sao chép và ghi đè các tệp không? Vậy làm thế nào về giải pháp này:
cp /dev/null /var/mail/root
Nếu bạn đang sử dụng cyrus / sasl / imap trên máy chủ thư của mình, thì một cách nhanh chóng và hiệu quả để thanh lọc mọi thứ trong hộp thư cũ hơn số ngày được chỉ định là sử dụng lệnh cyrus / imap ipurge . Ví dụ, đây là một ví dụ loại bỏ mọi thứ (hãy cẩn thận !!), cũ hơn 30 ngày từ người dùng vleo . Lưu ý rằng bạn phải đăng nhập với tư cách là người dùng cyrus (quản trị viên thư điện tử):
[cyrus@mailserver ~]$ /usr/lib/cyrus-imapd/ipurge -f -d 30 user.vleo
Working on user.vleo...
total messages 4
total bytes 113183
Deleted messages 0
Deleted bytes 0
Remaining messages 4
Remaining bytes 113183
Thay vì sử dụng "d", tại sao không "p". Tôi không chắc chắn nếu "p *" sẽ hoạt động. Tôi đã không thử điều đó. Bạn có thể; tuy nhiên sử dụng đoạn script sau "
#!/bin/bash
#
MAIL_INDEX=$(printf 'h a\nq\n' | mail | egrep -o '[0-9]* unread' | awk '{print $1}')
markAllRead=
for (( i=1; i<=$MAIL_INDEX; i++ ))
do
markAllRead=$markAllRead"p $i\n"
done
markAllRead=$markAllRead"q\n"
printf "$markAllRead" | mail