আমি কীভাবে প্রেরণমেলের সারিতে ইমেল বার্তাগুলি স্থায়ীভাবে মুছতে এবং তাদের ফিরে আসতে বাধা দেব?


18

আমার এখানে বেশ বিরক্তিকর সমস্যা আছে। আমি একটি অ্যাপ্লিকেশন পরীক্ষা করে যাচ্ছি এবং বোগাস ই-মেইল ঠিকানাগুলিতে কয়েকটি পরীক্ষামূলক ইমেল তৈরি করেছি (এটি উল্লেখ করার জন্য নয় যে আমার সার্ভারটি যাইহোক ই-মেইল প্রেরণের জন্য সেটআপ করা হয়নি)। অবশ্যই, sendmailএই বার্তাগুলি প্রেরণ করতে সক্ষম নয় এবং তারা sendmailকাতারে আটকে যাচ্ছে । আমি sendmailপুনরায় চেষ্টা বন্ধ করতে সাধারণত 5 দিন অপেক্ষা করার পরিবর্তে কাতারে নির্মিত বার্তাগুলি ম্যানুয়ালি মুছে ফেলতে চাই ।

আমি উবুন্টু 10.04 ব্যবহার করছি এবং /var/spool/mqueue/আমি যে ডিরেক্টরিতে পড়েছি তা হ'ল যে ই-মেইলগুলি সারিবদ্ধ করা হয়েছে তা হ'ল। আমি যখন এই ডিরেক্টরিতে ফাইলগুলি sendmailমুছব তখন কোনও ক্রোন স্ক্রিপ্ট হিসাবে উপস্থিত না হওয়া অবধি ই-মেইলগুলি প্রক্রিয়াকরণের চেষ্টা বন্ধ করে দেয় এবং আমি যে বার্তাগুলি প্রেরণ করতে চাই না সেগুলি দিয়ে এই ডিরেক্টরিটি পুনঃবাসিত করে। আমার কিছু লাইন এখানে syslog:

Jun  2 17:35:19 sajo-laptop sm-mta[9367]: o530SlbK009365: to=, ctladdr= (33/33), delay=00:06:27, xdelay=00:06:22, mailer=esmtp, pri=120418, relay=e.mx.mail.yahoo.com. [67.195.168.230], dsn=4.0.0, stat=Deferred: Connection timed out with e.mx.mail.yahoo.com.
Jun  2 17:35:48 sajo-laptop sm-mta[9149]: o4VHn3cw003597: to=, ctladdr= (33/33), delay=2+06:46:45, xdelay=00:34:12, mailer=esmtp, pri=3540649, relay=mx2.hotmail.com. [65.54.188.94], dsn=4.0.0, stat=Deferred: Connection timed out with mx2.hotmail.com.
Jun  2 17:39:02 sajo-laptop CRON[9510]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -print0 | xargs -n 200 -r -0 rm)
Jun  2 17:39:43 sajo-laptop sm-mta[9372]: o52LHK4s007585: to=, ctladdr= (33/33), delay=03:22:18, xdelay=00:06:28, mailer=esmtp, pri=1470404, relay=c.mx.mail.yahoo.com. [206.190.54.127], dsn=4.0.0, stat=Deferred: Connection timed out with c.mx.mail.yahoo.com.
Jun  2 17:39:50 sajo-laptop sm-mta[9149]: o51I8ieV004377: to=, ctladdr= (33/33), delay=1+06:31:06, xdelay=00:03:57, mailer=esmtp, pri=6601668, relay=alt4.gmail-smtp-in.l.google.com. [74.125.79.114], dsn=4.0.0, stat=Deferred: Connection timed out with alt4.gmail-smtp-in.l.google.com.
Jun  2 17:40:01 sajo-laptop CRON[9523]: (smmsp) CMD (test -x /etc/init.d/sendmail && /usr/share/sendmail/sendmail cron-msp)

কেউ কীভাবে জানেন যে আমি কীভাবে এই বার্তাগুলি স্থায়ীভাবে মুক্তি পেতে পারি? পার্শ্ব নোট হিসাবে, আমি এটিও জানতে চাই sendmailযে "নকল" ই-মেইল প্রেরণ করার কোনও উপায় আছে কিনা । আছে?


ঠিক আছে, আমি এখনও এই সমস্যার কোনও সমাধান পাইনি। এটি অবশ্যই দেখে মনে হচ্ছে এটি ক্রোন স্ক্রিপ্টের কোনও ধরণের যা এর কারণ হয়ে দাঁড়িয়েছে, তবে এটি সজ্জিত বার্তাগুলি কোথায় সংরক্ষণ করছে তা আমি বুঝতে পারি না ...
স্টিভেন অক্সলে

উত্তর:


28

যে বার্তাগুলি প্রেরণ করা হয়েছে বা প্রেরণের চেষ্টা করা হচ্ছে সেগুলি সংরক্ষণ করা হয় /var/spool/mqueue। যে বার্তাগুলি সেন্ডমেল এখনও সারি করার চেষ্টা করেনি সেগুলি পাওয়া যেতে পারে /var/spool/mqueue-client

সুতরাং এটি চেষ্টা করুন (আমি ধরে নিই যে আপনি সারিতে থাকা সমস্ত বার্তা মুছে ফেলতে চান):

  • সেন্ডমেল বন্ধ করুন
  • rm /var/spool/mqueue/*
  • আপনি যদি অপেক্ষা করে বার্তাগুলি সরাতে চান rm /var/spool/mqueue-client/*,।
  • সেন্ডমেল শুরু করুন

সিস্টেমটি অন্য কোনও বার্তা না পাওয়া পর্যন্ত এটি আমাদের আপনার সারি ফোল্ডারটি সাফ করবে। আপনি mailq(উভয় সারি ফোল্ডার), বা sendmail -bp(কেবল সারি ফোল্ডার) চালিয়ে দ্বিগুণ চেক করতে পারেন ।

দ্রষ্টব্য: বেশিরভাগ লিনাক্স ডিস্ট্রিবিউশনের মাধ্যমে আপনি service sendmail <start|stop|restart>বা দিয়ে পরিষেবাগুলি শুরু / বন্ধ করতে পারেন /etc/init.d/sendmail <start|stop|restart>। উভয় বিকল্পের মধ্যে অনেকগুলি স্ট্যাটাস ফ্ল্যাগ রয়েছে যা স্ট্যান্ডাস ফ্ল্যাগ ছাড়াই কমান্ড এবং সার্ভিসে টাইপ করে লক্ষ্য করা যায়।


তিনি বলেছিলেন যে তিনি ইতিমধ্যে এটি করেছিলেন, তবে বার্তাগুলি পুনরায় প্রকাশিত হয়েছে ...
ম্যাসিমো

1
তবে প্রথমে সেন্ডমেল বন্ধ না করেই এটাই কথা।
সাপ্তাহিক

ঠিক আছে, মনে হচ্ছে আপনি যে পদক্ষেপটি মিস করেছেন তার উপর দিয়ে আপনি হয়ত আঘাত করেছিলেন।
স্টিভেন অক্সলে

ফেডোরা 19-তে, আমি দেখতে পাচ্ছি / var / spool / clientmqueue (পাশাপাশি / var / spool / mueue)
টমজি

কিছু কারণে এমনকি সুডো সহ এটি আমার পক্ষে কাজ করে না (এটি বলবে no matches found)। সুতরাং আমি chmodফোল্ডারগুলিতে সম্পাদনা করেছি 777এবং তারপরে সামগ্রীগুলি মুছতে সক্ষম হয়েছি।
শ্রীধর সারনোবাত

9

উদাহরণস্বরূপ rm /var/spool/mqueue/*বা আরও খারাপ ( rm -rfইত্যাদি) দিয়ে আপনি প্রায়শই সেন্ডমেলের এমকিউ ডিরেক্টরি থেকে ফাইলগুলি সরিয়ে ফেলার পরামর্শটি দেখতে পাবেন । আইএমএইচও, এটি স্পষ্টতই বিপজ্জনক। এটি অনেক ক্ষেত্রে কাজ করবে তবে আমি আপনার সিট বেল্টগুলি দৃ fas় করার পরামর্শ দিচ্ছি। কেবল মেকু থেকে সমস্ত ফাইল সরানো বৈধ বার্তাগুলি মুছে ফেলতে পারে।

কাতযুক্ত বার্তাগুলি অপসারণের আগে সেন্ডমেল বন্ধ করা ভাল পরামর্শ বিশেষত যদি অনেক বার্তা অপসারণ করা দরকার। তবে, যদি কেবলমাত্র কয়েকটি বার্তা সরিয়ে ফেলা হয় বা নিয়মিত ভিত্তিতে যদি সারিটি পরিষ্কার করা হয় তবে ক্রোন জবের মাধ্যমে সেন্ডমেইল থামানোর দরকার নেই। সবচেয়ে খারাপ ক্ষেত্রে একটি বার্তা পুনরায় সারিবদ্ধ করা হবে যা আপনি আবার চেষ্টা করার পরে অবশ্যই মুছে ফেলা হবে।

বিপরীতে, সেন্ডমেল (যেমন উবুন্টু সহ service sendmail stop) থামানো যথেষ্ট নাও হতে পারে। এমনকি যখন থামানো হয়েছে তখনও কিছু (শিশু) প্রক্রিয়া চলমান থাকতে পারে। তাদের শেষ না হওয়া পর্যন্ত তাদের অপেক্ষা করতে হবে (প্রস্তাবিত) বা তাদের হত্যা করা উচিত।

মেকু থেকে বার্তাগুলি নিরাপদে সরাতে আপনার বার্তাগুলির সারি আইডি থাকা দরকার। আইডিগুলি "স্ম-এমটিএ [...]:" এর পরে লগে প্রদর্শিত হয়। আপনার লগ উদ্ধৃতাংশ থেকে ID- র হয় o530SlbK009365, o4VHn3cw003597... একটি "জনপ্রিয়", "df প্রয়োগ" সঙ্গে অন্যান্য শুরুর দিয়ে শুরু ID- র 2 ফাইল mqueue সংরক্ষিত হয়, প্রতিটি জন্য।

mailqসাধারণত সারির বিষয়বস্তু তালিকাবদ্ধ করতে ব্যবহৃত হয়। এটি প্রথম কলামে আইডি দেখায়। তদতিরিক্ত, আপনার mailqআউটপুট নিয়ে পরামর্শ করা উচিত কারণ এটি কোনও বার্তা সক্রিয় / বর্তমানে প্রক্রিয়াধীন কিনা তাও দেখায়। যেমন

-----Q-ID----- --Size-- -----Q-Time----- ------------Sender/Recipient----------
oBDDuKAB023946*    1058 Mon Dec 13 14:56 <vfn-l-bounces+so=example.com@fam.tuwi
                 (Deferred: 450-4.2.1 The user you are trying to contact is re)
                                         <so@example.com>
oBAEMuV8000429     1058 Fri Dec 10 15:22 <vfn-l-bounces+sby=example.com@fam.tuw
                 (Deferred: 450-4.2.1 The user you are trying to contact is re)
                                         <so@example.com>

এই উদাহরণে আইডি সহ বার্তাটি oBDDuKAB023946বর্তমানে প্রক্রিয়াজাত করা হচ্ছে, সংযোজনযুক্ত তারকা দ্বারা প্রদর্শিত। অন্যান্য বার্তা মুছে ফেলা নিরাপদ। উদাহরণস্বরূপ, আইডি oBAEMuV8000429ব্যবহারের সাথে বার্তাটি সরাতে

rm /var/spool/mqueue/{d,q}foBAEMuV8000429

ব্র্যান্ডন হাচিনসন মেল সারি থেকে মেল মুছে ফেলার ক্ষেত্রে সারিবদ্ধ বার্তাগুলি সরিয়ে দেওয়ার জন্য আরও বহুমুখী দৃষ্টিভঙ্গি সরবরাহ করেছেন । ব্র্যান্ডন ডোমেন অংশ, ইমেল ঠিকানা ইত্যাদির উপর ভিত্তি করে বার্তা অপসারণের জন্য স্ক্রিপ্টগুলিও অন্তর্ভুক্ত করে থাকে regular ব্র্যান্ডনের স্ক্রিপ্টগুলি নিয়মিত পরিষ্কার বা ভর সরানোর জন্য খুব সহায়ক helpful

তবুও, এমনকি ব্র্যান্ডনের স্ক্রিপ্টগুলি বার্তাগুলির স্থিতির যত্ন নিচ্ছে না। তবে এটি যুক্ত করা সহজ। তার স্ক্রিপ্টগুলির শুরুতে অন্তর্ভুক্ত করুন

# Get current mailq status
my $mailq = `mailq`;

তারপরে সাব রুটিনের শুরুতে "চেয়েছিলেন" সক্রিয় বার্তাগুলি এড়ানোর জন্য একটি চেক যুক্ত করুন, উদাহরণস্বরূপ

# skip if file is currently processed by MTA
if ($mailq =~ /\n$queue_id\*/) {
   $debug && print "$queue_id is locked.\n";
   last;
}

আছে HTH। এবং, ব্যাকআপগুলি মনে রাখবেন :-)


4

আমার একই সমস্যা ছিল এবং আমি দেখতে পেয়েছি যে সারিযুক্ত বার্তা সহ 2 টি ফোল্ডার রয়েছে। / Var / spool / clientmqueue / ফোল্ডারে এমন বার্তা ছিল যা / var / spool / mueue / এ বিতরণ করতে ব্যর্থ হয়। উভয় ফোল্ডার থেকে ফাইলগুলি মুছে ফেলা সমস্যাটি সমাধান করার জন্য প্রয়োজনীয় ছিল।

আরএম-এফ / ভার / স্পুল / ক্লায়েন্টমেকু / * আরএম-এফ / ভার / স্পুল / এমকিউ / *


0

আমি মনে করি না এটি ক্রোন স্ক্রিপ্টের কাজ, এটি কোনও অ্যাপ্লিকেশন ইস্যু, বা নিজেই সেন্ডমেল সম্পর্কিত কিছু হতে পারে; যাইহোক, কোনও ক্রোন কাজ এটি করে দেওয়ার crondজন্য , আপনি কিছু সময়ের জন্য থামতে পারেন এবং দেখতে পান যে এটি ঘটছে কিনা।


0

আমি এই ব্যাশ স্ক্রিপ্টটি ব্যবহার করে এটি পরিচালনা করেছিলাম

for i in `sudo ls /var/spool/mqueue`
do
    sudo rm -rv `echo /var/spool/mqueue/$i`
done

সুতরাং আপনি কেবলমাত্র অনুরোধ করতে echoএবং echoপ্যারামিটার হিসাবে ব্যবহারের জন্য বলা আউটপুট পুনরুদ্ধার করতে একটি সাবশেল খুলুন rm। এমনকি ভিত্তিহীন কাটাচামচ উপেক্ষা sudoএবং rm, এই subshelling প্লেইন অযথা হয়।
ফেলিক্স ফ্র্যাঙ্ক

ঠিক আছে, আপনার যদি আরও 'গ্রহণযোগ্য' সমাধান থাকে, তবে মন্তব্যটি কতটা বেহাল হতে পারে তা দেখানোর পরিবর্তে আপনার সমাধানটি ব্যাখ্যা করা সময় নষ্ট করবে না। অগ্রিম ধন্যবাদ
শু হিকারি

2
দুঃখিত, যদি এটি আক্রমণাত্মক এবং অহঙ্কারী হয়ে আসে। আরও একটি অর্থনৈতিক পন্থা হবে sudo find /var/spool/mqueue -maxdepth 1 -delete। আপনার স্ক্রিপ্টটিতে বিশেষত সমস্যাটি কী তা নির্দিষ্ট করে দেখানো আমার পক্ষে গুরুত্বপূর্ণ মনে হয়েছিল। কৌশলের অভাবের জন্য ক্ষমা চাইছি।
ফেলিক্স ফ্রাঙ্ক

2
হ্যাঁ, তবে এখন আপনি আপনার বক্তব্যটি ব্যাখ্যা করেছেন এবং আমি এটি পুরোপুরি বুঝতে পেরেছি। এবং ক্ষমা প্রার্থনা করা হয়েছে, চিন্তা করবেন না। ধন্যবাদ: ডি
শু হিকারি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.