ฉันตั้งค่างาน cron แล้วและพวกเขาส่งผล crons ไปยังอีเมล ในช่วงหลายเดือนที่ผ่านมาฉันได้สะสมอีเมลจำนวนมาก
ตอนนี้คำถามของฉันคือฉันจะกำจัดอีเมลทั้งหมดเหล่านั้นจากกล่องจดหมายของฉันได้อย่างไร
ฉันตั้งค่างาน cron แล้วและพวกเขาส่งผล crons ไปยังอีเมล ในช่วงหลายเดือนที่ผ่านมาฉันได้สะสมอีเมลจำนวนมาก
ตอนนี้คำถามของฉันคือฉันจะกำจัดอีเมลทั้งหมดเหล่านั้นจากกล่องจดหมายของฉันได้อย่างไร
คำตอบ:
คุณสามารถลบ/var/mail/username
ไฟล์เพื่อลบอีเมลทั้งหมดสำหรับผู้ใช้ที่ต้องการ นอกจากนี้ยังอีเมลที่มีการส่งออก /var/spool/mqueue
แต่ยังไม่ได้รับการส่งจะถูกเก็บไว้ใน
username
จะต้องถูกแทนที่ด้วยผู้ใช้ที่คุณต้องการลบอีเมล ในกรณีของคุณอีเมลที่ถูกส่งไปยังผู้ใช้ที่เรียกว่าดังนั้นคุณจะต้องลบcron_results
/var/www/cron_results
ทางเลือก:
mail -N
d *
quit
-N
ยับยั้งการแสดงเริ่มต้นของส่วนหัวของข้อความเมื่ออ่านเมลหรือแก้ไขโฟลเดอร์เมล
d *
ลบเมลทั้งหมด
> mbox
ในโฮมไดเร็กตอรี่นี่แค่ตัดทอนไฟล์ mbox
เพียงใช้:
mail
d 1-15
quit
ซึ่งจะลบข้อความทั้งหมดระหว่างหมายเลข 1 และ 15 d *
ลบทั้งหมดใช้
ฉันเพิ่งใช้มันด้วยตัวเองบน Ubuntu 12.04.4 และมันใช้งานได้อย่างมีเสน่ห์
ตัวอย่างเช่น:
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
จากนั้นตรวจสอบอีเมลของคุณอีกครั้ง:
eric@dev ~ $ mail
No mail for eric
eric@dev ~ $
สิ่งที่ทำให้คุณสะดุดคือคุณกำลังใช้งานx
หรือexit
ออกจากการทำงานที่ย้อนกลับการเปลี่ยนแปลงระหว่างเซสชันนั้น
d*
CentOS 7
exit
แทนการquit
สะดุดฉัน exit
จะยกเลิกเซสชันดังนั้นอีเมลที่รอการลบจะยังคงสภาพเหมือนเดิม quit
จะเขียนการเปลี่ยนแปลงกลับดังนั้นอีเมลที่ถูกลบจะถูกส่งไปที่จุดนั้น
d 1-15
ทำงานบนเดเบียน 8 ขอบคุณ!
แทนที่จะลบฉันคิดว่าเราสามารถลบล้างไฟล์ได้เนื่องจากไฟล์จะถูกสร้างขึ้นหากบริการอีเมลยังคงเปิดอยู่ สิ่งต่อไปนี้จะทำงาน
cat /dev/null >/var/spool/mail/tomlinuxusr
และใช่ขอโทษที่ปลุกด้ายเก่านี้ขึ้นมา แต่ฉันรู้สึกว่าฉันสามารถมีส่วนร่วมได้
หนึ่งในสายการบิน:
echo 'd *' | mail -N
yes 'd' | mail
ทำงานตามที่คาดไว้
ใน UNIX / Linux / Mac OS X คุณสามารถคัดลอกและแทนที่ไฟล์ได้ใช่ไหม? ดังนั้นวิธีแก้ปัญหานี้:
cp /dev/null /var/mail/root
หากคุณใช้ cyrus / sasl / imap บนเมลเซิร์ฟเวอร์ของคุณดังนั้นวิธีที่รวดเร็วและมีประสิทธิภาพในการล้างทุกอย่างในกล่องจดหมายที่เก่ากว่าจำนวนวันที่ระบุคือการใช้คำสั่งcyrus / imap ipurge ยกตัวอย่างเช่นที่นี่เป็นตัวอย่างที่เอาทุกอย่าง (ระวัง !!) เก่าแล้ว 30 วันนับจากผู้ใช้vleo ขอให้สังเกตว่าคุณต้องเข้าสู่ระบบในฐานะผู้ใช้cyrus (ผู้ดูแลระบบอีเมล imap):
[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
แทนที่จะใช้ "d" ทำไมไม่ "p" ฉันไม่แน่ใจว่า "p *" จะใช้งานได้หรือไม่ ฉันไม่ได้ลอง คุณสามารถ; อย่างไรก็ตามให้ใช้สคริปต์ต่อไปนี้ "
#!/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