मैं बड़ी संख्या में ईमेल के साथ एक लिनक्स मेल बॉक्स कैसे शुद्ध करता हूं? [बन्द है]


193

मेरे पास कुछ क्रॉन जॉब्स हैं और वे क्रोन परिणाम को एक ईमेल पर भेजते हैं। अब कुछ महीनों में मैंने बड़ी संख्या में ईमेल जमा किए हैं।

अब मेरा सवाल यह है कि मैं अपने मेलबॉक्स से उन सभी ईमेलों को कैसे शुद्ध कर सकता हूं?


1
यदि आप केवल क्रोन संदेशों और अन्य संदेशों को साफ नहीं करना चाहते हैं, तो यहां देखें: unix.stackexchange.com/questions/217143/…
Erel Segal-

3
बंद विषय के रूप में बंद है, लेकिन बेहद उपयोगी है।
ऊना

जवाबों:


150

आप /var/mail/usernameकिसी विशिष्ट उपयोगकर्ता के सभी ईमेल को हटाने के लिए फ़ाइल को हटा सकते हैं। इसके अलावा, जो ईमेल आउटगोइंग हैं, लेकिन अभी तक भेजे नहीं गए हैं उन्हें स्टोर किया जाएगा /var/spool/mqueue


सभी क्रोन ईमेल प्राप्त करने वाले प्रश्न पर ईमेल को cron_results@site.com कहा जाता है। मैं सिर्फ इस ईमेल पर प्राप्त सभी ईमेलों को शुद्ध करना चाहता हूं, दूसरों को छोड़कर। / var / www / उपयोगकर्ता नाम हटाना सभी को हटा देगा, है ना?
अंजन

3
usernameउस उपयोगकर्ता के साथ प्रतिस्थापित किया जाना चाहिए जिसके लिए आप ईमेल निकालना चाहते हैं। आपके मामले में, ईमेल उपयोगकर्ता को भेजे जा रहे हैं cron_results, इसलिए आपको हटाना होगा /var/www/cron_results
एडोडोडो

5
यह एक आवेदन के बाहर से एक अच्छा प्रैक्सिस डेटा हेरफेर नहीं है। यदि कोई विकल्प या आदेश है जो काम कर सकता है, तो इसका उपयोग करना बेहतर है। जैसा कि @timaschew ने उत्तर दिया, आप मेल टूल के अंदर 'd' कमांड का उपयोग कर सकते हैं।
पोकजॉक

1
बहुत व्यावहारिक है जब 'मेल' केवल 'पर्याप्त स्मृति नहीं - निरस्त' के साथ प्रतिक्रिया करता है।
हर्बर्ट वान-व्लिट

398

वैकल्पिक तरीका:

mail -N
d *
quit

-Nमेल पढ़ने या मेल फ़ोल्डर को संपादित करते समय संदेश हेडर के प्रारंभिक प्रदर्शन को रोकता है।
d *सभी मेल हटाएं


6
डेबियन 7. पर काम नहीं करता है
karatedog

4
इसने मेरे लिए लगभग वैनिला डेबियन 7.5 में काम किया। वैकल्पिक रूप से कोई भी > mboxहोम डायरेक्टरी में टाइप करने के साथ सभी सहेजे गए मेल को हटाना चाहता है , यह सिर्फ एमबॉक्स फाइल को ट्रंक करता है।
Ciantic

4
@andreas: बस इसे CentOS 6.5 पर सफलतापूर्वक काम करते हुए जोड़ें।
गिल्लाउम जी।

3
डेबियन
व्हीज़ी

2
उबंटू 14.04 सर्वर पर काम कर रहा है
पुतली

60

महज प्रयोग करें:

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छोड़ रहे हैं, जो उस सत्र के दौरान हुए परिवर्तनों को वापस ले रहा है।


1
d*कम से कम, के बीच कोई जगह नहीं है CentOS 7
कोडमेड

7
के exitबजाय का उपयोग कर quitमुझे ट्रिपिंग था। exitसत्र को समाप्त कर देगा, इसलिए कोई भी ईमेल जो लंबित है उसे हटा दिया जाएगा। quitपरिवर्तन वापस लिखेंगे, इसलिए हटाए गए ईमेल उस बिंदु पर प्रतिबद्ध हैं।
जेसन

d 1-15Debian पर काम करता है 8. धन्यवाद!
तद्ज

Red Hat में काम नहीं करता है। d 1-15 'अवैध संख्यात्मक' देता है। तो d * है।
साल्वाडोर वालेंसिया

23

हटाने के बजाय, मुझे लगता है कि हम फ़ाइल को शून्य कर सकते हैं, क्योंकि मेल सेवा अभी भी है तो फ़ाइल बनाई जाएगी। निम्नलिखित कुछ काम करेंगे

cat /dev/null >/var/spool/mail/tomlinuxusr

और हां, इस पुराने सूत्र को जगाने के लिए खेद है लेकिन मुझे लगा कि मैं इसमें योगदान दे सकता हूं।


3
आलसी के लिए, बस यह टाइप करने पर भी काम करता है:> / var / spool / mail / unixuser
सल्वाडोर वालेंसिया


6

UNIX / Linux / Mac OS X पर आप फ़ाइलों को कॉपी और ओवरराइड कर सकते हैं, नहीं? तो इस समाधान के बारे में कैसे:

cp /dev/null /var/mail/root

2

यदि आप अपने मेलसर्वर पर साइरस / sasl / imap का उपयोग कर रहे हैं, तो एक मेलबॉक्स में सब कुछ शुद्ध करने का एक तेज़ और कुशल तरीका जो पुराने है तो साइरस / imap ipurge कमांड का उपयोग करने के लिए निर्दिष्ट दिनों की संख्या है । उदाहरण के लिए, यहां एक उदाहरण सब कुछ हटा रहा है ( लापरवाह हो!), पुराने तो उपयोगकर्ता vleo से 30 दिन । ध्यान दें, कि आपको साइरस (इमैप मेल एडमिनिस्ट्रेटर) के रूप में लॉग इन होना चाहिए :

[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


1

"डी" का उपयोग करने के बजाय, "पी" क्यों नहीं। मुझे यकीन नहीं है कि अगर "पी *" काम करेगा। मैंने ऐसा प्रयास नहीं किया। आप ऐसा कर सकते हैं; हालाँकि निम्न स्क्रिप्ट का उपयोग करें "

#!/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

जो लोग उत्सुक हैं, "प्रिंट" के लिए "पी" छोटा है।
Isius
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.