পাঠ ৩১ · ৫৭-এর মধ্যে · মডিউল ৬
Home / Courses / Computer Networks / ইমেইল প্রোটোকল

ইমেইল প্রোটোকল — SMTP, POP3, IMAP

Email protocols — SMTP, POP3, IMAP
৮ মিনিট পড়া মধ্যবর্তী · Intermediate Python কোডসহ সম্পূর্ণ বাংলায়

এই পাঠে যা শিখবেন

  • SMTP কীভাবে ইমেইল পাঠায় ও রিলে করে
  • POP3-এর ডাউনলোড-ও-মুছে-ফেলা মডেল ও এর সীমাবদ্ধতা
  • IMAP কীভাবে সার্ভার-সাইড সিঙ্ক্রোনাইজেশনের মাধ্যমে মাল্টি-ডিভাইস সমস্যার সমাধান করে
  • Python দিয়ে তিনটি প্রোটোকলের একটি পাশাপাশি তুলনামূলক রেফারেন্স টেবিল তৈরি করা

১ · SMTP — ইমেইল পাঠানোর প্রোটোকল

SMTPSimple Mail Transfer Protocolইমেইল পাঠানোর জন্য ব্যবহৃত প্রোটোকল — ক্লায়েন্ট থেকে আউটগোয়িং মেইল সার্ভারে, এবং মেইল সার্ভারগুলোর মধ্যে রিলে করার জন্য (ঐতিহ্যগতভাবে পোর্ট ২৫)। হলো ইমেইল পাঠানোর জন্য ব্যবহৃত প্রোটোকল — এটি দুই জায়গায় কাজ করে: প্রথমত, আপনার মেইল ক্লায়েন্ট (যেমন Gmail অ্যাপ) থেকে আপনার আউটগোয়িং মেইল সার্ভারে বার্তা পাঠাতে, আর দ্বিতীয়ত, মেইল সার্ভারগুলোর মধ্যে বার্তা তার চূড়ান্ত গন্তব্যের দিকে রিলে করতে (M4/L30-এ দেখা DNS-এর MX রেকর্ড ঠিক এই পরবর্তী মেইল সার্ভার কোনটি তা নির্ধারণ করতে সাহায্য করে)।

২ · POP3 — ডাউনলোড-ও-মুছে-ফেলা মডেল

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

৩ · IMAP — সার্ভার-সাইড সিঙ্ক্রোনাইজেশন

IMAPInternet Message Access Protocolইমেইল রিট্রিভ করার একটি প্রোটোকল যা মেইল সার্ভারেই সিঙ্ক রাখে — পড়া/অপঠিত অবস্থা ও ফোল্ডার একাধিক ডিভাইস জুড়ে সামঞ্জস্যপূর্ণ থাকে। -ও মেইল রিট্রিভ করে, কিন্তু সম্পূর্ণ ভিন্ন দর্শন নিয়ে — বার্তা সার্ভারেই থেকে যায়, আর ক্লায়েন্ট শুধু সার্ভারের সাথে তার অবস্থা সিঙ্ক্রোনাইজ করে। একটি বার্তা পড়া হলো কিনা, কোন ফোল্ডারে আছে — সবকিছু সার্ভারে সংরক্ষিত থাকে, তাই আপনি ফোনে একটি মেইল পড়লে ল্যাপটপেও তা "পড়া" হিসেবে দেখা যায়। এই কারণেই আজকের দিনে যে কেউ একাধিক ডিভাইস থেকে মেইল চেক করে, তার জন্য IMAP-ই আধুনিক ডিফল্ট পছন্দ।

মূল অন্তর্দৃষ্টি

SMTP, POP3, IMAP-এর মধ্যেকার পার্থক্য মূলত একটি প্রশ্নে নিহিত — বার্তার "সত্যিকারের কপি" কোথায় থাকে? POP3-তে বার্তা ক্লায়েন্টের কাছে চলে যায় (সার্ভার থেকে সরে); IMAP-তে বার্তা সার্ভারেই থাকে (ক্লায়েন্ট শুধু একটি সিঙ্ক করা view দেখে)। এই একটি ডিজাইন সিদ্ধান্তই পুরো মাল্টি-ডিভাইস অভিজ্ঞতা নির্ধারণ করে দেয়।

Python
# SMTP, POP3, IMAP-এর একটি পাশাপাশি তুলনামূলক রেফারেন্স টেবিল
email_protocols = {
    "SMTP": {
        "purpose": "ইমেইল পাঠানো (ক্লায়েন্ট->সার্ভার, সার্ভার->সার্ভার রিলে)",
        "deletes_from_server_by_default": None,   # প্রযোজ্য নয় -- এটি রিট্রিভ প্রোটোকল নয়
        "multi_device_friendly": None,             # প্রযোজ্য নয়
    },
    "POP3": {
        "purpose": "ইমেইল রিট্রিভ (ডাউনলোড করে ডিভাইসে)",
        "deletes_from_server_by_default": True,
        "multi_device_friendly": False,
    },
    "IMAP": {
        "purpose": "ইমেইল রিট্রিভ (সার্ভারেই সিঙ্ক রাখে)",
        "deletes_from_server_by_default": False,
        "multi_device_friendly": True,
    },
}

print(f"{'প্রোটোকল':8s} {'উদ্দেশ্য':45s} {'সার্ভার থেকে মুছে?':20s} মাল্টি-ডিভাইস বান্ধব?")
print("-" * 110)
for protocol, info in email_protocols.items():
    deletes = "প্রযোজ্য নয়" if info["deletes_from_server_by_default"] is None else str(info["deletes_from_server_by_default"])
    friendly = "প্রযোজ্য নয়" if info["multi_device_friendly"] is None else str(info["multi_device_friendly"])
    print(f"{protocol:8s} {info['purpose']:45s} {deletes:20s} {friendly}")

# কোন প্রোটোকল আজকের মাল্টি-ডিভাইস বাস্তবতায় ডিফল্ট পছন্দ তা খুঁজে বের করা
best_for_multi_device = [p for p, info in email_protocols.items() if info["multi_device_friendly"] is True]
print(f"\nমাল্টি-ডিভাইস ব্যবহারের জন্য আধুনিক ডিফল্ট পছন্দ: {best_for_multi_device}")

    
প্রেরকের ক্লায়েন্ট SMTP মেইল সার্ভার (MX রেকর্ড, M6/L30) POP3 -- ডাউনলোড + মুছে ফেলা একটি ডিভাইসেই আটকে থাকে IMAP -- সার্ভারে সিঙ্ক সব ডিভাইসে সামঞ্জস্যপূর্ণ
SMTP প্রেরক থেকে মেইল সার্ভার পর্যন্ত পৌঁছে দেয়; প্রাপক এরপর POP3 (ডাউনলোড-ও-মুছে) বা IMAP (সার্ভার-সিঙ্ক) দিয়ে তা রিট্রিভ করে।
লক্ষ্য করুন — কোড সেলে SMTP-এর জন্য deletes_from_server_by_default ও multi_device_friendly উভয়ই None, কারণ SMTP আদৌ একটি রিট্রিভ প্রোটোকল নয় — এই প্রশ্নগুলো এর ক্ষেত্রে প্রযোজ্যই নয়। এটি ইচ্ছাকৃত, দেখানোর জন্য যে তিনটি প্রোটোকল আসলে দুইটি সম্পূর্ণ ভিন্ন কাজ (পাঠানো বনাম রিট্রিভ করা) সমাধান করে।
মূল কথা · Key takeaway

একটি সম্পূর্ণ ইমেইল যাত্রায় সাধারণত একাধিক প্রোটোকল জড়িত থাকে — SMTP প্রেরকের ক্লায়েন্ট থেকে সার্ভার পর্যন্ত এবং সার্ভারগুলোর মধ্যে বার্তা বহন করে, আর প্রাপকের ক্লায়েন্ট POP3 বা (আধুনিক ক্ষেত্রে বেশিরভাগ সময়) IMAP দিয়ে সেই বার্তা রিট্রিভ করে — প্রতিটি প্রোটোকল তার নিজের নির্দিষ্ট কাজে বিশেষায়িত, ঠিক L01-এর লেয়ারিং/মডুলারিটি নীতির মতোই।

ভাবনার প্রশ্ন

প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।

প্র ০১ একটি ব্যবহারকারী যদি শুধুমাত্র একটি ডিভাইস থেকেই সবসময় মেইল চেক করেন, তাহলে POP3 কি এখনও একটি যুক্তিসঙ্গত পছন্দ হতে পারে?

হ্যাঁ — যদি সত্যিই একটিমাত্র ডিভাইস থেকেই মেইল চেক করা হয় (আর মেইল সার্ভারে স্থায়ীভাবে জমা রাখার দরকার না থাকে), POP3-এর সরলতা একটি বাস্তব সুবিধা হতে পারে — সার্ভারে জায়গা কম লাগে (বার্তা ডাউনলোড হয়ে সরে যায়), আর প্রোটোকলও তুলনামূলক হালকা। তবে আজকের বাস্তবতায় প্রায় সবাই একাধিক ডিভাইস (ফোন, ল্যাপটপ) ব্যবহার করে, তাই IMAP-ই বেশি সাধারণ পছন্দ।

প্র ০২ IMAP সার্ভার-সাইড সিঙ্ক রাখার জন্য POP3-এর চেয়ে বেশি সার্ভার স্টোরেজ ও রিসোর্স লাগে কেন?

POP3-তে বার্তা ডাউনলোডের পরপরই সার্ভার থেকে মুছে যায় (ডিফল্টভাবে), তাই সার্ভারে দীর্ঘমেয়াদে সামান্যই ডেটা জমা থাকে। IMAP-এ প্রতিটি বার্তা, তার পড়া/অপঠিত অবস্থা, ফোল্ডার — সবকিছু স্থায়ীভাবে সার্ভারে সংরক্ষিত থাকে (যাতে যেকোনো ডিভাইস যেকোনো সময় সিঙ্ক করতে পারে), তাই একজন ব্যবহারকারীর পুরো মেইল ইতিহাস সার্ভারেই জমা হতে থাকে — এই কারণেই ইমেইল প্রোভাইডাররা প্রায়ই IMAP অ্যাকাউন্টে স্টোরেজ কোটা আরোপ করে।

প্র ০৩ SMTP-কে "রিট্রিভ প্রোটোকল" না বলে "পাঠানোর প্রোটোকল" বলা হয় কেন — এটি কি ইমেইল ডাউনলোড করতেও ব্যবহার করা যায় না?

না — SMTP-এর ডিজাইনই শুধু বার্তা এগিয়ে নেওয়ার (forward) জন্য, প্রাপকের ইনবক্স থেকে বার্তা ফিরিয়ে আনার জন্য নয়। এই কারণেই একটি সম্পূর্ণ ইমেইল সিস্টেমের সবসময় দুটি আলাদা প্রোটোকল দরকার হয় — পাঠানোর জন্য SMTP, আর রিট্রিভ করার জন্য POP3/IMAP — প্রতিটি তার নিজের সংকীর্ণ, সুনির্দিষ্ট কাজে বিশেষায়িত (M6/L28-এর অ্যাপ্লিকেশন-লেয়ার প্রোটোকল ডিজাইনের সাধারণ প্যাটার্ন অনুসরণ করে)।

অনুশীলন

  1. পরীক্ষা করুন: উপরের কোড সেলে email_protocols-এ একটি নতুন এন্ট্রি "Webmail" যোগ করুন, যেখানে deletes_from_server_by_default=False ও multi_device_friendly=True — best_for_multi_device-এর ফলাফল কীভাবে বদলায়?

    best_for_multi_device-এর তালিকায় এখন ["IMAP", "Webmail"] উভয়ই থাকবে, কারণ তালিকা কম্প্রিহেনশনটি প্রতিটি প্রোটোকলের multi_device_friendly মান True কিনা তা যাচাই করে — নতুন এন্ট্রি যোগ করলেও লজিক নিজে থেকে সঠিকভাবে কাজ করবে, কোনো হার্ডকোডেড নাম নেই।

  2. চিন্তা করুন: আপনার নিজের ফোনের মেইল অ্যাপের সেটিংসে গিয়ে দেখুন এটি IMAP নাকি POP3 ব্যবহার করছে — কেন এটি যুক্তিসঙ্গত মনে হয়?

    বেশিরভাগ আধুনিক মেইল অ্যাপ (Gmail, Outlook ইত্যাদি) ডিফল্টভাবে IMAP ব্যবহার করে, কারণ প্রায় সব ব্যবহারকারীই একাধিক ডিভাইস (ফোন + কম্পিউটার) থেকে একই মেইল অ্যাকাউন্ট চেক করেন — IMAP-এর সার্ভার-সিঙ্ক মডেল এই বাস্তবতার সাথে সবচেয়ে ভালোভাবে মেলে।

আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ

আগের পাঠ
DNS — ডোমেইন নেম সিস্টেম