Net::SMTP 3.16-এ পূর্ব-সংযুক্ত SOCKS কনস্ট্রাক্টর নেই
Net::SMTP 3.16 পূর্ব-সংযুক্ত সকেট কনস্ট্রাক্টর বিকল্প নথিভুক্ত করে না। প্রক্সি ট্রান্সপোর্ট ইন্টিগ্রেশন বাছাই করার সময় SMTP অভিবাদন, EHLO ও TLS ক্রম অক্ষত রাখুন।
Net::SMTP 3.16 কোনো SOCKS বা পূর্ব-সংযুক্ত সকেট কনস্ট্রাক্টর প্যারামিটার নথিভুক্ত করে না। উত্তরাধিকারসূত্রে পাওয়া new_from_fd দিয়ে ফাইল ডেসক্রিপ্টর মোড়ানো এর SMTP কনস্ট্রাক্টর চালায় না। সফল SOCKS সংযোগ একটি স্ট্রিম দেয়, আরম্ভ করা মেইল সেশন নয়।
সাধারণ SMTP-এর জন্য, পরবর্তী STARTTLS আপগ্রেডসহ, সার্ভার আগে কথা বলে:
SOCKS: connection to smtp.example.net:587 succeeds
server: 220 smtp.example.net ready
client: EHLO client.example.net
server: 250-smtp.example.net
server: 250-STARTTLS
server: 250 AUTH ...এটি রূপরেখা; ঘোষিত এক্সটেনশন ভিন্ন হয়। অভিবাদন নিজেই একাধিক লাইনে বিস্তৃত হতে পারে: উত্তর কোডের পরে হাইফেন উত্তরটি চালু রাখে, আর শেষ লাইন তা সমাপ্ত করে। EHLO-র আগে পুরো অভিবাদন গ্রহণ করুন। নাহলে ক্লায়েন্ট EHLO-র 250 প্রত্যাশা করার সময় পুরোনো 220 পড়তে পারে এবং সুস্থ সংযোগে ছন্দ হারাতে পারে।
অন্তর্নিহিত TLS-এর ক্রম আলাদা: SOCKS সংযোগ, TLS হ্যান্ডশেক, তারপর TLS-এর ভিতরে SMTP অভিবাদন। STARTTLS পাঠযোগ্য অভিবাদন ও EHLO দিয়ে শুরু হয়, স্ট্রিম আপগ্রেড করে এবং পরে আবার ক্ষমতা অর্জন করে।
সর্বজনীন কনস্ট্রাক্টর সাধারণত সকেট কনফিগারেশন, সংরক্ষিত সংযোগ প্যারামিটার ও অভিবাদন তথ্য, প্রাথমিক উত্তর এবং যেখানে উপযুক্ত সেখানে HELO ফলব্যাকসহ EHLO সামলায়:
use Net::SMTP;
my $smtp = Net::SMTP->new(
'smtp.example.net',
Port => 587,
Hello => 'client.example.net',
Timeout => 30,
) or die "SMTP connection failed: $@";
$smtp->starttls()
or die "STARTTLS failed: " . $smtp->message;এই সর্বজনীন উদাহরণ STARTTLS ব্যবহার করে এবং SOCKS কনফিগার করে না। সার্ভারের নাম মেইল গন্তব্য বাছাই করে; Hello ক্লায়েন্ট SMTP পরিচয় দেয়। অন্তর্নিহিত TLS-এর জন্য নথিভুক্ত SSL কনস্ট্রাক্টর বিকল্প ও সেবার পোর্ট ব্যবহার করুন।
SendHello => 0 স্বয়ংক্রিয় EHLO/HELO বন্ধ করে, অভিবাদন পাঠ বা ট্রান্সপোর্ট নির্মাণ নয়। একটি লাইন রিডার ডেকে তারপর hello() ডাকাও আরম্ভের নথিভুক্ত বিকল্প নয়: Net::Cmd তার নিম্ন-স্তরের উত্তর রিডারগুলোকে সুরক্ষিত সাবক্লাস পদ্ধতি হিসেবে শ্রেণিবদ্ধ করে।
SOCKS বাধ্যতামূলক হলে সমর্থিত SOCKS ইন্টারফেসযুক্ত ক্লায়েন্ট বাছুন বা নির্দিষ্ট Net::SMTP সংস্করণের বিরুদ্ধে ইন্টিগ্রেশন বজায় রাখুন। ব্যক্তিগত ফিল্ড অনুলিপি না করে উপরের ক্রমটিকে এর চুক্তি হিসেবে ব্যবহার করুন। আলাদা TCP অ্যাডাপ্টারেরও সচেতন TLS পরিচয় ব্যবস্থাপনা দরকার: সার্টিফিকেটকে প্রকৃত মেইল সেবা শনাক্ত করতে হবে, এবং প্রক্সি ক্রেডেনশিয়াল SMTP লগইন থেকে আলাদা থাকবে।