একটি অস্থায়ী ঠিকানায় একটি বার্তা পাঠালে সেটির ওপর ৩৯টি যাচাই চলে। এই পৃষ্ঠায় সেগুলোর সবই রয়েছে: প্রতিটি কী পরীক্ষা করে, ব্যর্থ হলে আপনার স্কোর কত কমে এবং এটি স্ট্যান্ডার্ডের কোন ধারা থেকে এসেছে।
এখানে কোনো মতামতকে নিয়ম হিসেবে উপস্থাপন করা হয়নি। কোনো যাচাই যখন স্ট্যান্ডার্ডের কোনো বিধান প্রয়োগ করে, তখন সেই স্ট্যান্ডার্ডের সংশ্লিষ্ট বাক্যটি নিচে উদ্ধৃত থাকে। এর বদলে যখন Google বা Yahoo-এর কোনো প্রয়োজনীয়তা প্রয়োগ করা হয়, তখন তাদের পৃষ্ঠার লিঙ্ক দেওয়া থাকে। আর যখন এটি আমাদের নিজস্ব বিচার, তখন তা স্পষ্টভাবে বলা থাকে।
প্রমাণীকরণ
গ্রহণকারী সার্ভার প্রমাণ করতে পারে কি না যে বার্তাটি ঘোষিত উৎস থেকেই এসেছে। এটি ডেলিভারেবিলিটির সম্পূর্ণ DNS-নির্ভর অর্ধাংশ এবং ২০২৪ সালে Gmail ও Yahoo বাল্ক প্রেরকদের জন্য যে অর্ধাংশ বাধ্যতামূলক করেছে।
ARC চেইন auth.arc
ARC একটি ফরওয়ার্ডার অতিক্রম করার পরও প্রমাণীকরণের ফলাফল সংরক্ষণ করে। এটি ছাড়া, ফুটার যোগ করা কোনো মেইলিং লিস্ট আপনার DKIM স্বাক্ষর ভেঙে দেয় এবং ফরওয়ার্ড করা কপিটি দূরবর্তী প্রান্তে DMARC ব্যর্থ হয়।
ব্যর্থ হলে: প্রেরক হিসেবে কিছু করার নেই। আপনি কোনো লিস্ট বা ফরওয়ার্ডার চালালে এটি গুরুত্বপূর্ণ, এবং কেউ আপনার মেইল ফরওয়ার্ড করার পর কেন সেটির কিছু অংশ DMARC ব্যর্থ হয়, এটি তা ব্যাখ্যা করে।
ক্ষতি আমাদের স্কোরে ১০০-এর মধ্যে সর্বোচ্চ 2 পয়েন্ট।
RFC 7960 §1 — Introduction
DMARC with restrictive policies causes problems for many Mailing Lists.
RFC 8617 §2.1 — Evidence
In ARC's situation, the "evidence" is a message's authentication assessment at any point along the delivery path between origination and final delivery.
Google — Requirements for bulk senders (5,000+/day)
DKIM স্বাক্ষর auth.dkim
DKIM একটি ব্যক্তিগত কী দিয়ে বার্তার অংশগুলোতে স্বাক্ষর করে এবং সর্বজনীন কীটি DNS-এ প্রকাশ করে। বার্তাটিতে থাকা প্রতিটি স্বাক্ষর আমরা যাচাই করি এবং স্বাক্ষরকারী ডোমেইন, সিলেক্টর ও কী-এর দৈর্ঘ্য জানাই।
ব্যর্থ হলে: আপনার পাঠানোর প্ল্যাটফর্মে DKIM চালু করুন এবং সেটি আপনাকে যে কী দেয় তা প্রকাশ করুন। 2048 বিট ব্যবহার করুন (1024 এখনও যাচাই হয়, তবে এটি ধীরে ধীরে অচল হয়ে যাচ্ছে)।
ক্ষতি আমাদের স্কোরে ১০০-এর মধ্যে সর্বোচ্চ 18 পয়েন্ট এবং ক্লাসিক স্কোরে ১০-এর মধ্যে সর্বোচ্চ 1।
RFC 6376 §3.5 — The DKIM-Signature Header Field
The signature of the email is stored in the DKIM-Signature header field.
RFC 6376 §6.1 — Extract Signatures from the Message
Verifiers MUST NOT attribute ultimate meaning to the order of multiple DKIM-Signature header fields.
Google — Turn on DKIM for your domain
Google — Requirements for bulk senders (5,000+/day)
DKIM অ্যালাইনমেন্ট auth.dkim_alignment
DMARC-এর জন্য একটি বৈধ স্বাক্ষরই যথেষ্ট নয়। স্বাক্ষরকারী ডোমেইনটিকে From হেডারের ডোমেইনের সঙ্গে মিলতে হবে, আপনার প্রকাশিত নীতির ওপর নির্ভর করে হুবহু বা সাংগঠনিক ডোমেইন অনুযায়ী।
ব্যর্থ হলে: আপনার প্ল্যাটফর্মের ডোমেইনের বদলে নিজের ডোমেইন দিয়ে স্বাক্ষর করুন। অধিকাংশ প্ল্যাটফর্ম এটি সমর্থন করে এবং একে কাস্টম বা প্রমাণীকৃত পাঠানোর ডোমেইন বলে।
ক্ষতি আমাদের স্কোরে ১০০-এর মধ্যে সর্বোচ্চ 10 পয়েন্ট এবং ক্লাসিক স্কোরে ১০-এর মধ্যে সর্বোচ্চ 1।
RFC 7489 §3.1.1 — DKIM-Authenticated Identifiers
DMARC permits Identifier Alignment, based on the result of a DKIM authentication, to be strict or relaxed.
Google — Add a DMARC record
Google — Requirements for bulk senders (5,000+/day)
DMARC ফলাফল auth.dmarc
DMARC আপনার পাঠক যে ডোমেইনটি দেখেন তার সঙ্গে SPF ও DKIM-কে যুক্ত করে এবং কোনোটিরই অ্যালাইনমেন্ট না হলে কী করতে হবে তা গ্রহণকারীদের জানায়। আমরা প্রকাশিত নীতি এবং এই বার্তাটি সেটি পূরণ করেছে কি না জানাই।
ব্যর্থ হলে: একটি DMARC রেকর্ড প্রকাশ করুন। p=none দিয়ে শুরু করুন, কয়েক সপ্তাহ রিপোর্টগুলো পড়ুন, তারপর আর কী কী আপনার পরিচয়ে পাঠায় তা জানার পর quarantine-এ যান।
ক্ষতি আমাদের স্কোরে ১০০-এর মধ্যে সর্বোচ্চ 14 পয়েন্ট।
RFC 7489 §6.6.2 — Determine Handling Policy
DMARC evaluation can only yield a "pass" result after one of the underlying authentication mechanisms passes for an aligned identifier.
RFC 7489 §6.3 — General Record Format
DMARC records follow the extensible "tag-value" syntax for DNS-based key records defined in DKIM [DKIM].
Google — Requirements for bulk senders (5,000+/day)
Yahoo — Sender requirements and recommendations
Sender ID auth.sender_id
SPF-এর মতো একই পরীক্ষা, তবে এনভেলপের বদলে From হেডারের ডোমেইনের বিপরীতে চালানো হয়। এটি একটি ভিন্ন প্রশ্নের উত্তর দেয়: আপনার পাঠক যে ডোমেইনটি দেখেন, সেটি বার্তাটি পাঠানো সার্ভারকে অনুমোদন করে কি না। একটি বার্তা তার এনভেলপে SPF পাস করতে পারে, অথচ দৃশ্যমান ডোমেইন কোনো সার্ভারের পক্ষেই নিশ্চয়তা দেয় না।
ব্যর্থ হলে: শুধু আপনার প্ল্যাটফর্মের দেওয়া বাউন্স ডোমেইনের জন্য নয়, আপনার From হেডারের ডোমেইনের জন্যও SPF প্রকাশ করুন।
ক্ষতি আমাদের স্কোরে ১০০-এর মধ্যে সর্বোচ্চ 5 পয়েন্ট এবং ক্লাসিক স্কোরে ১০-এর মধ্যে সর্বোচ্চ 0.5।
RFC 4406 §4 — Record Selection
After the above steps, there should be one record remaining and evaluation can proceed.
SPF auth.spf
SPF হলো একটি DNS রেকর্ড, যেখানে কোন সার্ভারগুলো আপনার ডোমেইনের পক্ষে পাঠাতে পারে তার তালিকা থাকে। গ্রহণকারী সার্ভার এনভেলপের ঠিকানাটি নেয়, সেই ডোমেইনের রেকর্ড খোঁজে এবং সংযোগকারী IP তাতে আছে কি না পরীক্ষা করে। আমরা ফলাফল এবং রেকর্ডটির প্রয়োজন হওয়া DNS লুকআপের সংখ্যা জানাই, কারণ দশটিতে মূল্যায়ন থেমে যায় এবং এর বেশি হলে পাসের বদলে স্থায়ী ত্রুটি হয়।
ব্যর্থ হলে: এমন একটি রেকর্ড প্রকাশ করুন, যেখানে শুধু আপনার পাঠানোর প্ল্যাটফর্মের নাম থাকবে। আপনারটি যদি দশটি লুকআপের সীমার কাছাকাছি থাকে, তাহলে আপনি ব্যবহার করেন না এমন include-গুলো ফ্ল্যাটেন করুন (আজ যে রেকর্ড পাস করে, কোনো প্রদানকারী নিজস্ব একটি include যোগ করলেই সেটি ব্যর্থ হতে শুরু করে)।
ক্ষতি আমাদের স্কোরে ১০০-এর মধ্যে সর্বোচ্চ 18 পয়েন্ট এবং ক্লাসিক স্কোরে ১০-এর মধ্যে সর্বোচ্চ 1।
RFC 7208 §4.6.4 — DNS Lookup Limits
SPF implementations MUST limit the total number of those terms to 10 during SPF evaluation, to avoid unreasonable load on the DNS. If this limit is exceeded, the implementation MUST return "permerror".
RFC 7208 §2.6 — Results of Evaluation
Section 4 defines check_host(), a model function definition that uses the inputs defined above and the sender's policy published in the DNS to reach a conclusion about client authorization.
Google — Define an SPF record
Google — Requirements for bulk senders (5,000+/day)
SPF অ্যালাইনমেন্ট auth.spf_alignment
বাউন্স ঠিকানাটি পাঠকের দেখা From ঠিকানার সঙ্গে মেলে কি না। SPF এনভেলপকে অনুমোদন করে, এবং দুটির অ্যালাইনমেন্ট হলেই কেবল DMARC সেই অনুমোদনকে গণ্য করে।
ব্যর্থ হলে: আপনার পাঠানোর প্ল্যাটফর্মের কাছে নিজের ডোমেইনের একটি বাউন্স সাবডোমেইন চান। আপনার DKIM ইতিমধ্যে অ্যালাইন করা থাকলে এটি জরুরি নয়, তবে ট্রানজিটের সময় DKIM নষ্ট হলে এতে আপনার কোনো বিকল্প ব্যবস্থা থাকে না।
ক্ষতি আমাদের স্কোরে ১০০-এর মধ্যে সর্বোচ্চ 5 পয়েন্ট এবং ক্লাসিক স্কোরে ১০-এর মধ্যে সর্বোচ্চ 0.5।
RFC 7489 §3.1.2 — SPF-Authenticated Identifiers
In relaxed mode, the [SPF]-authenticated domain and RFC5322.From domain must have the same Organizational Domain. In strict mode, only an exact DNS domain match is considered to produce Identifier Alignment.
RFC 7489 §6.6.2 — Determine Handling Policy
If one or more of the Authenticated Identifiers align with the RFC5322.From domain, the message is considered to pass the DMARC mechanism check.
Google — Add a DMARC record
Google — Requirements for bulk senders (5,000+/day)
অবকাঠামো ও সুনাম
যে মেশিন ও ঠিকানা থেকে বার্তাটি পাঠানো হয়েছে এবং ইন্টারনেটের বাকি অংশ সেগুলো সম্পর্কে ইতিমধ্যে কী ধারণা পোষণ করে।
প্রেরণকারী হোস্টনেম রেজলভ হয় infra.a_record
HELO-তে ঘোষিত হোস্টনেমটির আদৌ কোনো অ্যাড্রেস রেকর্ড আছে কি না।
ব্যর্থ হলে: আপনার সার্ভার যে নাম ঘোষণা করে, সেটির জন্য একটি A রেকর্ড প্রকাশ করুন।
ক্ষতি আমাদের স্কোরে ১০০-এর মধ্যে সর্বোচ্চ 5 পয়েন্ট এবং ক্লাসিক স্কোরে ১০-এর মধ্যে সর্বোচ্চ 3।
RFC 5321 §5.1 — Locating the Target Host
If an empty list of MXs is returned, the address is treated as if it was associated with an implicit MX RR, with a preference of 0, pointing to that host.
Google — MX record values and troubleshooting
ব্লকলিস্ট infra.dnsbl
প্রেরণকারী IP এমন কোনো ব্লকলিস্টে তালিকাভুক্ত কি না, যা প্রাপকেরা বাস্তবে যাচাই করে। ওয়েব অনুসন্ধান থেকে তালিকা তৈরি না করে প্রতিটি জোনের নিজস্ব নথিভুক্ত পরীক্ষার পয়েন্টের বিপরীতে আমাদের তালিকা যাচাই করা হয়, কারণ একটি নিষ্ক্রিয় জোন NXDOMAIN উত্তর দেয় এবং সেটিকে "পরিষ্কার" হিসেবে দেখা হয়।
ব্যর্থ হলে: তালিকাভুক্তকারী অপারেটরের সাইটে তালিকা থেকে অপসারণের প্রক্রিয়া অনুসরণ করুন। কোনো প্রধান জোনে তালিকাভুক্তি সরাসরি মেইল আটকে দেয়, তাই পৃষ্ঠার অন্য সবকিছুর আগে এটি সমাধান করুন।
ক্ষতি আমাদের স্কোরে ১০০-এর মধ্যে সর্বোচ্চ 25 পয়েন্ট এবং ক্লাসিক স্কোরে ১০-এর মধ্যে সর্বোচ্চ 3।
RFC 5782 §2.1 — IP Address DNSxL
Each IPv4 address listed in the DNSxL has a corresponding DNS entry.
RFC 5782 §5 — Test and Contact Addresses
IPv4-based DNSxLs MUST contain an entry for 127.0.0.2 for testing purposes.
Google — Postmaster Tools: reputation and delivery errors
Google — Email sender guidelines
HELO নাম infra.helo
SMTP কথোপকথনের শুরুতে প্রেরণকারী সার্ভার নিজেকে যে নামে ঘোষণা করে। এটি অবশ্যই রেজলভ হয় এমন একটি সম্পূর্ণ যোগ্যতাসম্পন্ন ডোমেইন হতে হবে।
ব্যর্থ হলে: আপনার মেইল সার্ভারের হোস্টনেম আপনার ডোমেইনের একটি বাস্তব নামে সেট করুন, কোনো কনটেইনার আইডি বা অভ্যন্তরীণ নামে নয়।
ক্ষতি আমাদের স্কোরে ১০০-এর মধ্যে সর্বোচ্চ 5 পয়েন্ট।
RFC 5321 §4.1.1.1 — Extended HELLO (EHLO) or HELLO (HELO)
The argument clause contains the fully-qualified domain name of the SMTP client, if one is available.
Google — Email sender guidelines
Google — Requirements for bulk senders (5,000+/day)
MX রেকর্ড infra.mx
আপনার From হেডারের ডোমেইনটি মেইল গ্রহণ করতে পারে কি না। এটি ছাড়া উত্তর ও বাউন্স পাঠানোর কোনো গন্তব্য থাকে না, এবং ফিল্টারগুলো মেইল গ্রহণে অক্ষম কোনো প্রেরণকারী ডোমেইনকে খারাপ লক্ষণ হিসেবে বিবেচনা করে।
ব্যর্থ হলে: আপনি যে ডোমেইন থেকে পাঠান, সেটির জন্য একটি MX রেকর্ড প্রকাশ করুন, এমনকি সেটি যদি শুধু এমন একটি মেইলবক্সে রুট করে যা আপনি মাসে একবার পড়েন।
ক্ষতি আমাদের স্কোরে ১০০-এর মধ্যে সর্বোচ্চ 5 পয়েন্ট এবং ক্লাসিক স্কোরে ১০-এর মধ্যে সর্বোচ্চ 3।
RFC 5321 §5.1 — Locating the Target Host
The lookup first attempts to locate an MX record associated with the name.
Google — MX record values and troubleshooting
রিভার্স DNS infra.rdns
প্রেরণকারী IP কোনো হোস্টনেমে বিপরীতভাবে রেজলভ হয় কি না, এবং সেই হোস্টনেমটি সামনের দিকে একই IP-তে রেজলভ হয় কি না। উভয় দিকের মিলটাই মূল বিষয়: যেকোনো স্থানে নির্দেশ করা PTR সহজ, মিলে যাওয়া জোড়া প্রমাণ করে যে ঠিকানাটি আপনার।
ব্যর্থ হলে: যিনি IP-এর মালিক, তাঁকে PTR এমন একটি নামে সেট করতে বলুন যা আপনি নিয়ন্ত্রণ করেন, এবং নিশ্চিত করুন যে সেই নামের একটি A রেকর্ড আবার ওই IP-তে নির্দেশ করে।
ক্ষতি আমাদের স্কোরে ১০০-এর মধ্যে সর্বোচ্চ 12 পয়েন্ট এবং ক্লাসিক স্কোরে ১০-এর মধ্যে সর্বোচ্চ 1.5।
RFC 1912 §2.1 — Inconsistent, Missing, or Bad Data
Make sure your PTR and A records match. For every IP address, there should be a matching PTR record in the in-addr.arpa domain.
Google — Email sender guidelines
Google — Requirements for bulk senders (5,000+/day)
পরিবহন এনক্রিপশন infra.tls
বার্তাটি TLS-এর মাধ্যমে এসেছে কি না, এবং কোন সাইফার ব্যবহার করেছে। সব আধুনিক সিস্টেমই এটি নেগোশিয়েট করে; এনক্রিপশন ছাড়া আসা কোনো বার্তা প্রেরণ ব্যবস্থার অবস্থা সম্পর্কে কিছু নির্দেশ করে।
ব্যর্থ হলে: প্রেরণকারী সার্ভারে STARTTLS সক্রিয় করুন। সব প্রচলিত প্ল্যাটফর্ম ইতিমধ্যেই এটি করে, তাই এখানে ব্যর্থতার অর্থ সাধারণত পথে একটি স্ব-হোস্টেড রিলে রয়েছে।
ক্ষতি আমাদের স্কোরে ১০০-এর মধ্যে সর্বোচ্চ 5 পয়েন্ট।
RFC 3207 §2 — STARTTLS Extension
The STARTTLS extension to SMTP is laid out as follows:
Google — Require TLS for secure message transport
Google — Requirements for bulk senders (5,000+/day)
স্প্যাম ইঞ্জিন
স্বতন্ত্র কনটেন্ট ফিল্টারগুলো বার্তাটিকে কীভাবে মূল্যায়ন করে। একটির বদলে দুটি ইঞ্জিন, কারণ একটি ইঞ্জিনের স্কোর শুধু সেই ইঞ্জিনের মতামত।
AI বিচারক spam.ai_judge
কারিগরি ফলাফল এবং কনটেন্টের পরিমাপ থেকে একটি মডেল অনুমান করে আধুনিক মেশিন-লার্নিং ফিল্টার বার্তাটির সঙ্গে কেমন আচরণ করবে। এটি মূল বার্তার লেখা নয়, তথ্যগুলো দেখে।
ব্যর্থ হলে: এটি নিজে শুধু বিস্তারিত তথ্য দেয়। এর অনুমান নিচের সম্মিলিত রায়ে যুক্ত হয়।
বিস্তারিত তথ্যের জন্য দেখানো হয়েছে। কখনো স্কোর করা হয় না।
সম্মিলিত রায় spam.panel
উত্তর দেওয়া ইঞ্জিনগুলো থেকে একটি সংখ্যা, এমনভাবে ওজন নির্ধারণ করা হয় যাতে সবচেয়ে জোরালো মতামতকে শুধু গড় করে গুরুত্বহীন করা না হয়। SpamAssassin এবং Postmark-কে একটি ভোট হিসেবে গণনা করা হয়, কারণ তারা একই নিয়মভিত্তি ব্যবহার করে।
ব্যর্থ হলে: প্রতিটি আলাদা ফলাফল ধরে কাজ করুন। সেগুলো পরিবর্তিত হলে এই সারিটিও পরিবর্তিত হয়।
ক্ষতি আমাদের স্কোরে ১০০-এর মধ্যে সর্বোচ্চ 25 পয়েন্ট।
Google — Why Gmail marks messages as spam
How this score is calculated
Postmark SpamCheck spam.postmark
একটি তৃতীয় মতামত, ডিফল্টভাবে বন্ধ। এর এন্ডপয়েন্ট পুরো বার্তা গ্রহণ করে এবং যা পরিমাপ করা হচ্ছে তা নষ্ট না করে আমরা এর কোনো অংশ গোপন করতে পারি না, তাই এটি চালু করার অর্থ হলো পরীক্ষিত প্রতিটি বার্তা তৃতীয় পক্ষের কাছে কপি করা হবে, তা মেনে নেওয়া।
ব্যর্থ হলে: কিছু করার নেই। এটি বন্ধ থাকলে পরীক্ষাটি জানায় যে এটি বন্ধ, যা পাস করার সমান নয়।
বিস্তারিত তথ্যের জন্য দেখানো হয়েছে। কখনো স্কোর করা হয় না।
Rspamd spam.rspamd
স্বতন্ত্রভাবে তৈরি একটি দ্বিতীয় ফিল্টার। এটি SpamAssassin-এর সঙ্গে প্রায়ই যথেষ্ট দ্বিমত করে, তাই এর মতামত নেওয়া উপযোগী, এবং এ কারণেই এটি এখানে রয়েছে।
ব্যর্থ হলে: শুধু বিস্তারিত তথ্য। এই ইঞ্জিনের মতামতকে আলাদাভাবে স্কোর না করে সম্মিলিত রায়ে অন্তর্ভুক্ত করা হয়।
বিস্তারিত তথ্যের জন্য দেখানো হয়েছে। কখনো স্কোর করা হয় না।
SpamAssassin spam.spamassassin
প্রচলিত নিয়মভিত্তিক ফিল্টার, যা এখনও অধিকাংশ ইমেইল পরীক্ষার টুলের মূল ইঞ্জিন। সক্রিয় হওয়া প্রতিটি নিয়ম তার ওজনসহ তালিকাভুক্ত করা হয়।
ব্যর্থ হলে: মোট স্কোরের বদলে সক্রিয় হওয়া নিয়মগুলো পড়ুন। কোনগুলো সক্রিয় হয়েছে তা দেখতে পারলে অধিকাংশই সহজে ঠিক করা যায়।
ক্ষতি ক্লাসিক স্কোরে ১০-এর মধ্যে সর্বোচ্চ 3।
Google — Why Gmail marks messages as spam
Apache SpamAssassin — rule documentation
বিষয়বস্তু
বার্তাটি নিজেই: এর কাঠামো, লিঙ্ক, ছবি এবং সিদ্ধান্ত নেওয়ার আগে ফিল্টার যে বিষয়গুলো পড়ে।
ছবির বিকল্প টেক্সট content.alt_attributes
ছবিগুলোতে alt অ্যাট্রিবিউট আছে কি না। মেইল ক্লায়েন্ট ডিফল্টভাবে রিমোট ছবি ব্লক করে, তাই প্রথম কয়েক সেকেন্ড alt টেক্সটই আপনার বার্তা।
ব্যর্থ হলে: অর্থ প্রকাশ করে এমন alt টেক্সট লিখুন, এবং মূল ভিজ্যুয়ালটিকে কখনোই এটি ছাড়া রাখবেন না।
ক্ষতি আমাদের স্কোরে ১০০-এর মধ্যে সর্বোচ্চ 4 পয়েন্ট এবং ক্লাসিক স্কোরে ১০-এর মধ্যে সর্বোচ্চ 0.5।
Google — Email sender guidelines
লিংকের প্রাপ্যতা content.broken_links
বার্তার লিংকগুলো কাজ করে কি না। নিউজলেটারের একটি অচল লিংক তাৎক্ষণিকভাবে আস্থা নষ্ট করে, এবং ফিল্টারও তা শনাক্ত করে।
ব্যর্থ হলে: সেগুলো ঠিক করুন বা সরিয়ে দিন। ট্র্যাকিং ডোমেইনটিও পরীক্ষা করুন: সেটির মেয়াদ শেষ হলে সব লিংক একসঙ্গে অকার্যকর হয়ে যায়।
ক্ষতি আমাদের স্কোরে ১০০-এর মধ্যে সর্বোচ্চ 5 পয়েন্ট এবং ক্লাসিক স্কোরে ১০-এর মধ্যে সর্বোচ্চ 1।
Google — Why Gmail marks messages as spam
script ও iframe content.forbidden_tags
HTML-এ এমন ট্যাগ আছে কি না যা কোনো মেইল ক্লায়েন্ট চালাবে না। ভালো ক্ষেত্রে সেগুলো সরিয়ে ফেলা হয় এবং খারাপ ক্ষেত্রে ফাঁকি দেওয়ার সংকেত হিসেবে বিবেচনা করা হয়।
ব্যর্থ হলে: script, iframe, object এবং embed সরান। ইন্টারঅ্যাকটিভ যেকোনো কিছু একটি লিংকের পেছনে থাকা উচিত।
ক্ষতি আমাদের স্কোরে ১০০-এর মধ্যে সর্বোচ্চ 10 পয়েন্ট এবং ক্লাসিক স্কোরে ১০-এর মধ্যে সর্বোচ্চ 1।
Google — Email sender guidelines
টেক্সট ও HTML-এর ভারসাম্য content.html_text_ratio
বার্তাটিতে পাঠযোগ্য টেক্সটের তুলনায় কতটা মার্কআপ আছে। একটি বাক্যের চারপাশে মোড়ানো এক পৃষ্ঠা মার্কআপ এমন একটি ধরন যা ফিল্টার শনাক্ত করে।
ব্যর্থ হলে: প্লেসহোল্ডারের বদলে এমন একটি টেক্সট অংশ লিখুন যা HTML-এর একই কথা বলে।
ক্ষতি আমাদের স্কোরে ১০০-এর মধ্যে সর্বোচ্চ 3 পয়েন্ট এবং ক্লাসিক স্কোরে ১০-এর মধ্যে সর্বোচ্চ 0.3।
RFC 2046 §5.1.4 — Alternative Subtype
Systems should recognize that the content of the various parts are interchangeable.
Google — Why Gmail marks messages as spam
টেক্সট ও HTML অংশ content.html_version
বার্তাটিতে HTML-এর পাশাপাশি একটি প্লেইন টেক্সট বিকল্প আছে কি না। কিছু ফিল্টার এটির অনুপস্থিতিকে গুরুত্ব দেয়, এবং প্রতিটি স্ক্রিন রিডারের এটি প্রয়োজন।
ব্যর্থ হলে: একটি বাস্তব টেক্সট সংস্করণসহ multipart/alternative পাঠান, খালি অংশ বা ব্রাউজারে এটি দেখতে বলছে এমন কোনো লাইন নয়।
ক্ষতি আমাদের স্কোরে ১০০-এর মধ্যে সর্বোচ্চ 5 পয়েন্ট।
RFC 2046 §5.1.4 — Alternative Subtype
The "multipart/alternative" type is syntactically identical to "multipart/mixed", but the semantics are different. In particular, each of the body parts is an "alternative" version of the same information.
Google — Email sender guidelines
HTML-এর আকার content.html_weight
HTML অংশটি কত বড়। মোটামুটি ১০২ KB পেরিয়ে গেলে Gmail বার্তাটি কেটে দেয় এবং বাকিটা একটি লিংকের আড়ালে লুকিয়ে রাখে, যার সঙ্গে আপনার আনসাবস্ক্রাইব ফুটারও লুকিয়ে যায়।
ব্যর্থ হলে: ইনলাইন CSS এবং পুনরাবৃত্ত স্টাইল ব্লক কমান (অব্যবহৃত নিয়মগুলো সরানোর পর বেশিরভাগ টেমপ্লেট সীমার এক-তৃতীয়াংশের মধ্যে থাকে)।
ক্ষতি আমাদের স্কোরে ১০০-এর মধ্যে সর্বোচ্চ 3 পয়েন্ট এবং ক্লাসিক স্কোরে ১০-এর মধ্যে সর্বোচ্চ 0.3।
Google — Email sender guidelines
ছবির আকার content.images_weight
বার্তাটি যে ছবিগুলো লোড করে সেগুলোর মোট আকার। ভারী ছবি ফোনে বার্তাকে ধীর করে, এবং শুধু ছবি দিয়ে তৈরি মেইলের কাঠামোকে ফিল্টার সন্দেহের চোখে দেখে।
ব্যর্থ হলে: ছবিগুলো কমপ্রেস করুন এবং ছবি বন্ধ থাকলেও বার্তাটি পড়া যায় কি না নিশ্চিত করুন।
ক্ষতি আমাদের স্কোরে ১০০-এর মধ্যে সর্বোচ্চ 3 পয়েন্ট এবং ক্লাসিক স্কোরে ১০-এর মধ্যে সর্বোচ্চ 0.3।
Google — Email sender guidelines
লিংকের সুনাম content.malicious_links
কোনো লিংক হুমকি-সংক্রান্ত ফিডে তালিকাভুক্ত কি না। অন্য সবকিছু ঠিক থাকলেও তালিকাভুক্ত একটি লিংক বার্তাটি ব্লক করে।
ব্যর্থ হলে: এটি সরিয়ে দিন। এটি আপনার নিজের ডোমেইন হলে, অন্য কিছু পাঠানোর আগে আপনাকে নিরাপত্তা লঙ্ঘনের সমাধান করতে হবে।
ক্ষতি আমাদের স্কোরে ১০০-এর মধ্যে সর্বোচ্চ 40 পয়েন্ট।
Google — Why Gmail marks messages as spam
অ্যাটাচমেন্ট স্ক্যানিং content.malware
অ্যাটাচমেন্টে পরিচিত ম্যালওয়্যার আছে কি না। যেসব ডেপ্লয়মেন্টে স্ক্যানার বন্ধ থাকে, সেখানে পরিষ্কার বলে রিপোর্ট করার বদলে এটি জানায় যে স্ক্যানারটি চলেনি।
ব্যর্থ হলে: এটি শনাক্ত হলে পাঠানো বন্ধ করুন এবং যে মেশিনে বার্তাটি তৈরি হয়েছে সেখানে কী আছে তা খুঁজে বের করুন।
ক্ষতি আমাদের স্কোরে ১০০-এর মধ্যে সর্বোচ্চ 60 পয়েন্ট।
Google — Why Gmail marks messages as spam
ClamAV — how detection works
বিষয় লাইন content.subject
দৈর্ঘ্য, বড় হাতের অক্ষরের ব্যবহার এবং ফিল্টার যে প্যাটার্নগুলোকে স্কোর করে। আমরা ডিকোড করা বিষয় লাইন পরিমাপ করি, তাই সিরিলিক বা CJK লাইনকে তার এনকোডিং হিসেবে নয়, টেক্সট হিসেবে বিচার করা হয়।
ব্যর্থ হলে: এটি প্রায় ৬০ অক্ষরের মধ্যে রাখুন, চিৎকারের মতো বড় হাতের অক্ষর এবং বিস্ময়চিহ্ন বাদ দিন।
ক্ষতি আমাদের স্কোরে ১০০-এর মধ্যে সর্বোচ্চ 3 পয়েন্ট।
RFC 5322 §2.2 — Header Fields
Header fields are lines beginning with a field name, followed by a colon (":"), followed by a field body, and terminated by CRLF.
RFC 2047 §2 — Syntax of encoded-words
An 'encoded-word' is defined by the following ABNF grammar.
Google — Why Gmail marks messages as spam
সংক্ষিপ্ত লিংক content.url_shortener
লিংকগুলো কোনো পাবলিক শর্টেনারের মাধ্যমে যায় কি না। শর্টেনার গন্তব্য লুকিয়ে রাখে, আর ঠিক এটিই অবিশ্বাস করতে ফিল্টারগুলোকে প্রশিক্ষণ দেওয়া হয়।
ব্যর্থ হলে: আপনার নিজস্ব ডোমেইনে লিংক করুন, অথবা আপনারই একটি সাবডোমেইনে আপনার প্ল্যাটফর্মের ট্র্যাকিং ডোমেইন ব্যবহার করুন।
ক্ষতি আমাদের স্কোরে ১০০-এর মধ্যে সর্বোচ্চ 5 পয়েন্ট এবং ক্লাসিক স্কোরে ১০-এর মধ্যে সর্বোচ্চ 0.5।
Google — Why Gmail marks messages as spam
বাল্ক প্রেরকের নিয়ম
বেশি পরিমাণে বার্তা পাঠানো ব্যক্তিদের জন্য Gmail ও Yahoo যে প্রয়োজনীয়তাগুলো প্রকাশ করে। এগুলো গণমেইলের ক্ষেত্রে প্রযোজ্য এবং গণমেইল বলে মনে হয় না এমন বার্তার ক্ষেত্রে এড়িয়ে যাওয়া হয়।
DMARC নীতি প্রকাশিত compliance.dmarc_present
From ডোমেইন আদৌ কোনো DMARC রেকর্ড প্রকাশ করে কি না, এই বার্তাটি সেটি পাস করেছে কি না তা থেকে আলাদাভাবে। Gmail এবং Yahoo বাল্ক প্রেরকদের কাছ থেকে এটি আবশ্যক করে।
ব্যর্থ হলে: একটি রেকর্ড প্রকাশ করুন। প্রয়োজনীয়তা পূরণের জন্য p=none যথেষ্ট এবং এটি আপনাকে কাজ করার জন্য রিপোর্ট দেয়।
ক্ষতি আমাদের স্কোরে ১০০-এর মধ্যে সর্বোচ্চ 6 পয়েন্ট।
RFC 7489 §6.3 — General Record Format
p: Requested Mail Receiver policy (plain-text; REQUIRED for policy records).
Google — Requirements for bulk senders (5,000+/day)
Yahoo — Sender requirements and recommendations
List-Unsubscribe compliance.list_unsubscribe
বার্তাটিতে এমন একটি আনসাবস্ক্রাইব হেডার আছে কি না, যার ভিত্তিতে একটি মেইল ক্লায়েন্ট কাজ করতে পারে। Gmail এবং Yahoo বাল্ক প্রেরকদের জন্য এটি আবশ্যক করে, এবং অন্য সবকিছু নির্বিশেষে এটি না থাকলে ফিল্টার করা হয়।
ব্যর্থ হলে: একটি HTTPS URI সহ List-Unsubscribe হেডার যোগ করুন। প্রতিটি প্রেরণ প্ল্যাটফর্ম এটি করতে পারে।
ক্ষতি আমাদের স্কোরে ১০০-এর মধ্যে সর্বোচ্চ 10 পয়েন্ট এবং ক্লাসিক স্কোরে ১০-এর মধ্যে সর্বোচ্চ 1।
RFC 2369 §3.2 — List-Unsubscribe
The List-Unsubscribe field describes the command (preferably using mail) to directly unsubscribe the user (removing them from the list).
Google — Requirements for bulk senders (5,000+/day)
Yahoo — Sender requirements and recommendations
এক-ক্লিক আনসাবস্ক্রাইব compliance.one_click_unsubscribe
আরও কঠোর রূপ: একটি HTTPS URI, একটি "List-Unsubscribe-Post" হেডার, এবং উভয় হেডার অন্তর্ভুক্তকারী একটি একক বৈধ DKIM স্বাক্ষর। তিনটিই থাকতে হবে, নইলে প্রাপক বোতামটি দেখায় না।
ব্যর্থ হলে: সাধারণত স্বাক্ষরটিই বাদ পড়ে: প্ল্যাটফর্মগুলো "List-Unsubscribe" স্বাক্ষর করে এবং "List-Unsubscribe-Post" ভুলে যায়। উভয় হেডারের নাম একই স্বাক্ষরের h= ট্যাগে থাকতে হবে।
ক্ষতি আমাদের স্কোরে ১০০-এর মধ্যে সর্বোচ্চ 8 পয়েন্ট।
RFC 8058 §4 — Additional Requirements
The List-Unsubscribe and List-Unsubscribe-Post headers MUST be covered by the signature and included in the "h=" tag of a valid DKIM-Signature header field.
RFC 8058 §3.1 — Mail Senders
The List-Unsubscribe header field MUST contain one HTTPS URI.
Google — Requirements for bulk senders (5,000+/day)
Yahoo — Sender requirements and recommendations
বাল্ক মেইলের জন্য TLS compliance.tls_required
বার্তাটি এনক্রিপ্ট করা অবস্থায় এসেছে কি না। অবকাঠামো পরীক্ষাটি আগে চালানো হয়ে থাকলে এর আওতায় এটি অন্তর্ভুক্ত থাকে।
ব্যর্থ হলে: উপরের পরিবহন এনক্রিপশন পরীক্ষাটি দেখুন।
ক্ষতি আমাদের স্কোরে ১০০-এর মধ্যে সর্বোচ্চ 5 পয়েন্ট।
Google — Require TLS for secure message transport
Google — Requirements for bulk senders (5,000+/day)
সুপারিশ
এগুলো করা উচিত এবং কখনো স্কোর করা হয় না। এই বিভাগের কোনো কিছুতেই পয়েন্ট কমতে পারে না, যা একটি পণ্যগত সিদ্ধান্ত এবং পরীক্ষাগুলো সেটিই কার্যকর করে।
BIMI advisory.bimi
ডোমেইনটি একটি BIMI রেকর্ড প্রকাশ করে কি না, যা কিছু ক্লায়েন্টে আপনার বার্তার পাশে একটি লোগো দেখায়। এর জন্য প্রথমে একটি কার্যকর DMARC নীতি এবং অর্থ খরচ করে পাওয়া একটি যাচাইকৃত মার্ক সার্টিফিকেট প্রয়োজন।
ব্যর্থ হলে: DMARC quarantine বা reject পর্যায়ে পৌঁছালে এবং ভলিউম সার্টিফিকেটের ব্যয়কে যৌক্তিক করলে এটি করা সার্থক।
পরামর্শমূলক। কোনো পয়েন্ট কমে না।
BIMI — draft specification, not yet an RFC
DKIM কী-এর বয়স ও দৈর্ঘ্য advisory.dkim_key_rotation
স্বাক্ষরকারী কী-এর দৈর্ঘ্য এবং সেটি কত দিন ধরে ব্যবহৃত হচ্ছে। প্রতি বছর অতিবাহিত হওয়ার সঙ্গে ছোট কী-তে অফলাইনে আক্রমণ করা কম ব্যয়বহুল হয়।
ব্যর্থ হলে: ২০৪৮ বিটে স্থানান্তর করুন এবং নির্ধারিত সময়সূচি অনুযায়ী কী পরিবর্তন করুন। নতুন সিলেক্টর প্রকাশ করুন, সেটি দিয়ে স্বাক্ষর করা শুরু করুন, তারপর পুরোনোটি অবসরে দিন।
পরামর্শমূলক। কোনো পয়েন্ট কমে না।
RFC 8301 §3.2 — Key Sizes
Since short RSA keys more easily succumb to off-line attacks, Signers MUST use RSA keys of at least 1024 bits for all keys. Signers SHOULD use RSA keys of at least 2048 bits.
Google — Turn on DKIM for your domain
DNSSEC advisory.dnssec
ডোমেইনটি স্বাক্ষরিত কি না। SPF, DKIM এবং DMARC সবই DNS-এ থাকে, তাই কোনো আক্রমণকারী DNS উত্তর জাল করতে পারলে তিনটিই জাল করতে পারে।
ব্যর্থ হলে: আপনার রেজিস্ট্রারে এটি সক্রিয় করুন। সাধারণত এটি একটি সুইচেই করা যায়, এবং বাকি কাজ রেজিস্ট্রার সম্পন্ন করে।
পরামর্শমূলক। কোনো পয়েন্ট কমে না।
RFC 4033 §2 — Definitions of Important DNSSEC Terms
Authentication Chain: An alternating sequence of DNS public key (DNSKEY) RRsets and Delegation Signer (DS) RRsets
MTA-STS advisory.mta_sts
ডোমেইনটি এমন একটি নীতি প্রকাশ করে কি না, যা অন্য সার্ভারগুলোকে আপনার কাছে এনক্রিপ্ট না করা ডেলিভারি প্রত্যাখ্যান করতে বলে। এটি আপনার পাঠানো মেইলের বদলে আপনাকে পাঠানো মেইল সুরক্ষিত করে।
ব্যর্থ হলে: HTTPS-এর মাধ্যমে TXT রেকর্ড এবং নীতি ফাইল প্রকাশ করুন (এক বিকেলের কাজ, এবং এটি একটি ডাউনগ্রেড আক্রমণের পথ বন্ধ করে)।
পরামর্শমূলক। কোনো পয়েন্ট কমে না।
RFC 8461 §3 — Policy Discovery
To discover if a recipient domain implements MTA-STS, a sender need only resolve a single TXT record.
TLS প্রতিবেদন advisory.tls_rpt
TLS-এর মাধ্যমে কেউ ডোমেইনটিতে বার্তা পৌঁছে দিতে ব্যর্থ হলে ডোমেইনটি প্রতিবেদন চায় কি না। MTA-STS-এর সঙ্গে এটি কাজ করে: প্রতিবেদন ছাড়া নীতিটি কার্যকর কি না তা বোঝার উপায় থাকে না।
ব্যর্থ হলে: দৈনিক প্রতিবেদন গ্রহণ করে এমন একটি ঠিকানাসহ TXT রেকর্ড যোগ করুন।
পরামর্শমূলক। কোনো পয়েন্ট কমে না।
RFC 8460 §3 — Reporting Policy
A domain publishes a record to its DNS indicating that it wishes to receive reports.