প্রশ্ন কেন একটি এসএমটিপি ক্লায়েন্ট একটি RSET (রিসেট) কমান্ড পাঠাতে হবে?


আমি পোস্টফিক্স দ্বারা কোনও ইমেল প্রক্রিয়া ঠিকভাবে বুঝতে চেষ্টা করছি - এবং SMTP মেল লেনদেনের কিছু বিস্তারিত বিবরণ। আমার স্বল্পমেয়াদী লক্ষ্যটি একটি মালিকানাধীন (বাইনারি, বন্ধ হওয়া উৎস) SMTP ক্লায়েন্ট ডিবাগ করা কিন্তু আমি প্রথমে মনে করি আমি সফল SMTP লেনদেনে কী ঘটতে তা পরীক্ষা করব।

আমি আমাদের ল্যান ফায়ারওয়ালে বহির্গামী SMTP (পোর্ট ২5) ব্লক করার পরিকল্পনা করছি তাই আমি পোস্টিফিক্সকে অভ্যন্তরীণ মেল সার্ভার হিসাবে (আদিম) স্থানীয় ক্লায়েন্ট সফটওয়্যার থেকে গ্রহণ করতে কনফিগার করেছি যা শুধুমাত্র অ-প্রমাণিত SMTP (পোর্ট ২5 এ) মাধ্যমে ইমেল পাঠাতে পারে।

আমি পোস্টফিক্স ডিবাগিং চালু smtpd যোগদান দ্বারা প্রক্রিয়া -v verbose পতাকা master.cf হিসাবে বর্ণিত Postfix লগ সঙ্গে সমস্যা সমাধান। তারপর আমি আমার নিজের ওয়ার্কস্টেশন থেকে সিগুইন মুট ব্যবহার করে একটি ইমেল পাঠিয়েছিলাম sSMTP (একটি সংক্ষিপ্ত বাস্তবায়ন sendmail)।

Postfix লগ যে পরে প্রদর্শন RCPT TO: লাইন সফলভাবে প্রক্রিয়া করা হয়েছিল এবং প্রাপক ঠিকানা গ্রহণযোগ্য ছিল, Postfix এর smtpd একটি সারি আইডি লেনদেন বরাদ্দ এবং একটি সঙ্গে SMTP ক্লায়েন্ট (sSMTP) সাড়া 250 OK

তবে, পরিবর্তে একটি DATA কমান্ড, এসএমটিপি ক্লায়েন্ট একটি জারি RSET বর্তমান মেইল ​​লেনদেনটি রিসেট / বাতিল করতে এবং পোস্টফিক্স উত্তর দিয়ে উত্তর দেওয়া হয়েছে 250 OK

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

এই কমান্ডটি নির্দিষ্ট করে যে বর্তমান মেইল ​​লেনদেন বাতিল করা হবে। যেকোনো সংরক্ষিত প্রেরক, প্রাপক এবং মেইল ​​ডেটা অবশ্যই বাতিল করা উচিত এবং সমস্ত বাফার এবং রাজ্য সারণী সাফ করা উচিত। রিসিভার অবশ্যই কোনও আর্গুমেন্ট সহ একটি RSET কমান্ডের "250 ঠিক আছে" উত্তর পাঠাতে হবে। একটি রিসেট কমান্ড যে কোন সময় ক্লায়েন্ট দ্বারা জারি করা যেতে পারে। EHLO এর পরে অবিলম্বে ইস্যু করা হলে এটি এনওওপি (যেমন, কোন প্রভাব নেই) এর সমতুল্য, যদি কোনও তথ্য সূচক পাঠানো হয় এবং স্বীকার করা হয়, অথবা QUIT এর আগে অবিলম্বে এটির পরে ইএলওএল জারি করা হয়। একটি এসএসটিপি সার্ভার অবশ্যই একটি RSET প্রাপ্তির ফলে সংযোগ বন্ধ করতে হবে না; যে পদক্ষেপ QUIT জন্য সংরক্ষিত (বিভাগ 4.1.1.10 দেখুন)।

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

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

উপরের সবগুলি একটি সেকেন্ডের মধ্যেই ঘটেছে তাই সময়-বহির্ভূত কোনও সমস্যা নেই।

পরের দ্বিতীয়, ক্লায়েন্ট অন্য পাঠানো RSET কিন্তু ক্লায়েন্ট তারপর পুনরায় আরম্ভ করার আগে পুরো 10s অপেক্ষা MAIL FROM:, RCPT TO: কিন্তু এই সময় এটি অনুসরণ করে এবং বিষয় DATA কমান্ড এবং লেনদেন সম্পন্ন (সমস্ত একই লগ মধ্যে অনুযায়ী দ্বিতীয়)।

মূলত, আমি একটি SMTP ক্লায়েন্ট ইস্যু করে তার নিজস্ব লেনদেন বাধা দেবে কেন ভাবছি RSET একটি পরিবর্তে কমান্ড DATA কমান্ড।

নোট:

  1. আমি মেইল ​​লগ ফাইল থেকে এক্সট্র্যাক্ট অন্তর্ভুক্ত করার জন্য প্রশ্নটি সম্পাদনা করতে পারি তবে এর সাথে -v ডিবাগিং, তারা খুব verbose এবং আমি অপ্রাসঙ্গিক তথ্য একটি firehose সঙ্গে মানুষ overwhelm করতে চান না।

  2. আমি এসএসএসপিপি সোর্স কোড অনুসন্ধান করেছি কিন্তু আমি কোন উল্লেখ খুঁজে পাইনি RSET


5
2018-05-29 16:56


উত্স


আপনি উইন্ডোজ পরিবেশে এটি পরীক্ষা করেছেন? সম্ভবত কিছু অ্যান্টিভাইরাস এটি পরিদর্শন করতে SMTP প্যাকেট সংশোধন করে - masegaloeh
এছাড়াও, আপনি খুব ssmtp মধ্যে ডিবাগ পরামিতি সক্ষম করা উচিত। - masegaloeh
এই উপর কোন আপডেট? - masegaloeh
HI @ মেসগালোহে আমি অবশেষে এই সমস্যাটি সঠিকভাবে তদন্ত করার এবং আমার নিজের প্রশ্নের উত্তর দেওয়ার সুযোগ পেয়েছি। বিটিডব্লিউ, আমি আমার উত্তরে তাদের অন্তর্ভুক্ত করার জন্য উপরের আমার মন্তব্য মুছে ফেলা হয়েছে। - Anthony Geoghegan
মহান উত্তর। আহ হ্যাঁ, আমি আমার আত্ম পরিচয় করিয়ে দিতে ভুলবেন না। আমি একটি মানুষ : P - masegaloeh


উত্তর:


TLDR

আমি হতাশ ছিলাম কেন একটি এসএমটিপি ক্লায়েন্ট DATA কমান্ডের পরিবর্তে RSET কমান্ডগুলি দিয়ে নিজের লেনদেনটি ব্যাহত করবে। সংক্ষিপ্ত উত্তর যে এটা হবে না; এন্টি-ভাইরাস সফটওয়্যার দ্বারা এসএমটিপি সংযোগগুলি আটকানো একটি লক্ষণ।

ক্লায়েন্ট লগিং

আমি sSMTP এর জন্য কনফিগারেশনে ডিবাগ বিকল্পটি সক্ষম করেছি কিন্তু সিগুইন-এ সিএসএলগল ইনস্টল এবং কনফিগার করার জন্য আমার কিছু সময় লেগেছে যাতে সিগুইন প্রসেসগুলির বার্তাগুলি লগ-ইন করা হয় /var/log/messages পরিবর্তে উইন্ডোজ ইভেন্ট ভিউয়ার।

যাইহোক, এটি শুধুমাত্র প্রথম লগ MAIL FROM: এবং RCPT TO: কমান্ড; কোন নির্দেশ ছিল যে এই কমান্ডগুলি একাধিকবার পাঠানো হয়েছিল - অথবা যে sSMTP কখনও একটি পাঠানো RSET কমান্ড।

আমার প্রশ্নের জবাবে, আমি এসএসএসপিপি সোর্স কোড চেক করেছি কিন্তু কোনও কোড পাঠাতে নেই RSET কমান্ড।

এসএমটিপি ট্রাফিক এর Symantec হস্তক্ষেপ

ব্যবহারকারী মেসগালোহ প্রস্তাব করেছেন যে অ্যান্টি-ভাইরাস সফ্টওয়্যারটি SMTP প্যাকেটগুলি সংশোধন করা হতে পারে - এবং সেটি ঠিক ছিল: আমি অস্থায়ীভাবে অক্ষম Symantec Endpoint সুরক্ষা আমার কম্পিউটার এবং SMTP লেনদেন স্বাভাবিক হিসাবে এগিয়ে।

Symantec Endpoint Protection পুনরায় সক্ষম করার পরে, আমি টিসিপি সংযোগগুলি ব্যবহার করে পর্যবেক্ষণ করেছি TCPView থেকে ইউটিলিটি উইন্ডোজ Sysinternals এবং আমি যে Symantec দেখতে পারে ccSvcHst.exe প্রক্রিয়াটি সমস্ত টিসিপি ট্রাফিক প্রক্সি করছে যার গন্তব্য পোর্ট 25।

আমি মেইল ​​সার্ভারে পোর্ট ২5 তে টেলনেট করেছি (নেটক্যাটটি সম্ভবত স্যাম্যান্টেক হস্তক্ষেপের কারণে যথাযথভাবে কাজ করবে না) SMTP কমান্ডগুলি নিজে হাতে প্রবেশ করে একটি পরীক্ষামূলক মেল পাঠাতে। একই সময়ে, আমার চলমান সময় মেল হোস্টে একটি এসএসএইচ সংযোগের সাথে আরেকটি টার্মিনাল উইন্ডো খোলা ছিল sudo tail -F /var/log/maillog একযোগে কি SMTP সার্ভার দেখা ছিল নিরীক্ষণ।

Symantec প্রক্সি দ্বারা সঞ্চালিত অন্তরায় সূক্ষ্ম। মেইল ক্লায়েন্টের দৃষ্টিকোণ থেকে, এটি খুব সামান্য ইঙ্গিত দেয় যে এটি সরাসরি SMTP সার্ভারের সাথে কথা বলছে না। মেইল সার্ভারের মাধ্যমে প্রেরিত বেশিরভাগ কমান্ডগুলি প্রেরিত হয় এবং আপনি যা আশা করেন তা প্রতিক্রিয়াগুলি হয়। এটা প্রবেশ না হওয়া পর্যন্ত আমি ছিল না DATA কমান্ড, যে সিম্যানটেক প্রক্সি জিনিস পরিবর্তন করতে শুরু করেছে: এটি প্রতিক্রিয়া জানিয়েছে:

354 Please start mail input.

এটি স্বাভাবিক বলে মনে হচ্ছে কিন্তু প্রকৃতপক্ষে, আমার পোস্টফিক্স সার্ভারের প্রতিক্রিয়া হওয়া উচিত ছিল

354 End data with <CR><LF>.<CR><LF>

এছাড়াও: এটা আসলে পাস না DATA পোস্টফিক্সে কমান্ডটি শেষ না হওয়া পর্যন্ত আমি ম্যাসেজ শরীরটি সম্পন্ন করেছি এবং এটির সাথে এটি অনুসরণ করেছি QUIT

দ্রষ্টব্য: আমি যখন পরীক্ষার বার্তাটি টাইপ করছিলাম, তখন Symantec প্রক্সি ইস্যু করে পোস্টফিক্স সার্ভারের সাথে তার সংযোগ রেখেছিল NOOP কমান্ড।

বাগদত্ত SMTP ক্লায়েন্টদের সাথে কাজ

আমি আমার প্রশ্নের মধ্যে উল্লেখ করেছিলাম যে আমার শেষ লক্ষ্যটি আমার সংস্থার ব্যবহৃত মালিকানাধীন (বাইনারি, বন্ধ হওয়া উৎস) মেল ক্লায়েন্টটির সমস্যা সমাধান করা। আমি আবিষ্কার করেছি যে এই ক্লায়েন্ট সত্যিই বগী: এটি একটি অবৈধ পাঠায় HELO কমান্ড (কোনও হোস্টনাম ছাড়া) এবং তারপরে কেবল এটি ছেড়ে দেয় এবং QUITs এটি SMTP সার্ভারের দ্বারা সান্নিধ্যভাবে জানিয়ে দেয় যে এটির সিনট্যাক্স ভুল - যদিও আমি কোনও পোস্ট করার জন্য পোস্টফিক্স কনফিগার করিনি HELO (বৈধ বা অন্যথায়)।

আমি CentOS 7 এর সাথে একটি নতুন সার্ভার ইনস্টল করে এই সমস্যাটি সমাধান করেছি যা একটি পোস্টফিক্স সংস্করণের সাথে সাম্প্রতিক যথেষ্ট যা আমি করতে পারি পোস্টফিক্স নিষ্ক্রিয় করুন সম্পূর্ণ চেক (এমএস এক্সচেঞ্জ কিভাবে অবৈধ হেলো কমান্ডগুলিকে উপেক্ষা করে সেভাবেই অনুরূপ)।


RSET সাধারণ ব্যবহার

আমি সাধারণ ব্যবহারের সম্পর্কে বিস্মিত ছিল RSET SMTP লেনদেন এবং আমি মূল নিম্নলিখিত নিম্নলিখিত পাওয়া যায় আরএফসি 821 SMTP জন্য:

এই কমান্ডটি নির্দিষ্ট করে যে বর্তমান মেল লেনদেন বাতিল করা হবে।   যে কোনও সংরক্ষিত প্রেরক, প্রাপক এবং মেইল ​​ডেটা বাতিল করা উচিত এবং সমস্ত   বাফার এবং রাষ্ট্র টেবিল সাফ। প্রাপক একটি ওকে উত্তর পাঠাতে হবে।

RSET প্রাপক ইমেল ঠিকানা একটি অস্তিত্বহীন ব্যবহারকারী জন্য ছিল যে পরিণত হলে এটি ব্যবহার করা হবে। নিম্নলিখিত SMTP লেনদেন একটি উদাহরণ বাতিল SMTP লেনদেন দৃশ্যকল্প

R: 220 MIT-Multics.ARPA Simple Mail Transfer Service Ready
S: HELO ISI-VAXA.ARPA
R: 250 MIT-Multics.ARPA

S: MAIL FROM:<Smith@ISI-VAXA.ARPA>
R: 250 OK

S: RCPT TO:<Jones@MIT-Multics.ARPA>
R: 250 OK

S: RCPT TO:<Green@MIT-Multics.ARPA>
R: 550 No such user here

S: RSET
R: 250 OK

S: QUIT
R: 221 MIT-Multics.ARPA Service closing transmission channel

SMTP সংযোগ পুনরায় ব্যবহার করুন

SMTP ক্লায়েন্ট একই গন্তব্যে একাধিক বার্তা পাঠাতে একই SMTP সংযোগ ব্যবহার করতে পারে। এই বৈশিষ্ট্য বলা হয় SMTP সংযোগ ক্যাশে Postfix দ্বারা। এই কর্মক্ষমতা বৈশিষ্ট্য ব্যবহার করার সময়, পোস্টফিক্স একটি প্রেরণ করে RSET প্রতিটি আগে MAIL FROM SMTP সংযোগ এখনও ব্যবহারযোগ্য কিনা তা যাচাই করার কমান্ড (দেখুন Postfix সংযোগ ক্যাশে)।


9
2017-07-17 16:27



সাধারণ ব্যবহারের বিষয়ে RSET, এটি এখনও ব্যবহারযোগ্য তা নিশ্চিত করার জন্য একই সংযোগে একাধিক ইমেল ধাক্কা দেওয়ার সময় পোস্টফিক্স এটি পাঠাবে: postfix.org/CONNECTION_CACHE_README.html - André Paramés
@ আন্দ্রেপামেস যে তথ্যের জন্য ধন্যবাদ; আমি আমার উত্তর এটি অন্তর্ভুক্ত করেছি। - Anthony Geoghegan