ما عنوان الارتداد؟
عنوان الارتداد، ويُسمى أيضاً مسار الإرجاع أو مرسل الظرف، هو عنوان البريد الإلكتروني الذي يستقبل تقارير عدم التسليم (NDR) عندما يتعذر إيصال رسالة. ينفصل هذا العنوان عن عنوان «From» الظاهر للمستلمين، ويُستخدم حصراً لإشعارات التسليم الآلية.
كيف تعمل عناوين الارتداد؟
يستخدم نقل البريد مجموعتين من العناوين:
From في الترويسة (يظهر للمستلم):From: John Doe <[email protected]>
From في الظرف (على مستوى SMTP ويُستخدم للارتداد):
MAIL FROM: <[email protected]>
عند فشل التسليم، يرسل الخادم المستلم رسالة الارتداد إلى مرسل الظرف، لا إلى عنوان From الموجود في الترويسة.
مثال على محادثة SMTP
Client: MAIL FROM: <[email protected]>
Server: 250 OK
Client: RCPT TO: <[email protected]>
Server: 550 No such user here
Client: QUIT
# Later, server sends bounce to [email protected]
أنواع ارتداد البريد الإلكتروني
الارتداد الدائم
حالات فشل التسليم الدائمة:
- المستخدم غير موجود: 550 لا يوجد مستخدم بهذا الاسم
- النطاق غير موجود: 550 تعذر العثور على النطاق
- مرفوض وفق السياسة: 550 تم حظر الرسالة المزعجة
الارتداد المؤقت
حالات الفشل المؤقتة:
- صندوق البريد ممتلئ: 452 سعة التخزين في النظام غير كافية
- الخادم غير متاح مؤقتاً: 421 الخدمة غير متاحة
- الرسالة كبيرة جداً: 552 حجم الرسالة يتجاوز الحد
ارتداد الحظر
مشكلات قابلية التسليم:
- عنوان IP مدرج في قائمة حظر: 554 الخدمة غير متاحة، حُظر عنوان IP للمرسل
- تمت تصفية المحتوى بوصفه رسالة مزعجة: 550 درجة الرسائل المزعجة مرتفعة جداً
- تقييد المعدل: 450 رسائل كثيرة جداً
إعداد عنوان الارتداد
ضبط مسار الإرجاع في ترويسات البريد
PHP (دالة mail):$to = "[email protected]";
$subject = "Test Email";
$message = "Email body";
$headers = "From: [email protected]\r\n";
$headers .= "Return-Path: [email protected]\r\n";
mail($to, $subject, $message, $headers, "-f [email protected]");
PHPMailer:
$mail = new PHPMailer();
$mail->From = "[email protected]";
$mail->Sender = "[email protected]"; // Return path
$mail->addAddress("[email protected]");
$mail->Subject = "Test Email";
$mail->send();
Postfix (SMTP):
# /etc/postfix/main.cf
sender_canonical_maps = hash:/etc/postfix/sender_canonical
# /etc/postfix/sender_canonical
@example.com [email protected]
# Apply changes
postmap /etc/postfix/sender_canonical
systemctl reload postfix
خدمات مخصصة لمعالجة الارتداد
تقدم معظم خدمات البريد إدارة للارتدادات:
Amazon SES:{
"Message": {
"Subject": "Test",
"From": "[email protected]",
"ReturnPath": "[email protected]"
}
}
SendGrid:
const msg = {
to: '[email protected]',
from: '[email protected]',
replyTo: '[email protected]',
return_path: '[email protected]',
subject: 'Test Email',
text: 'Email body'
};
اصطلاحات تسمية عناوين الارتداد
استخدام نطاق فرعي
[email protected] # General bounces
[email protected] # No-reply emails
[email protected] # Returns/receipts
التسمية الخاصة بالحملة
تتبّع الارتدادات لكل حملة:
[email protected]
مسار الإرجاع المتغير للظرف (VERP)
ضمّن المستلم داخل عنوان الارتداد:
Sending to: [email protected]
Return path: [email protected]
When bounce arrives at bounces+*, parse to identify failed recipient
معالجة رسائل الارتداد
التحليل الآلي للارتداد
مثال بلغة Python:import email
from email import policy
def parse_bounce(raw_email):
msg = email.message_from_string(raw_email, policy=policy.default)
# Extract bounce type
if "550" in msg.get_payload():
return "hard_bounce"
elif "452" in msg.get_payload():
return "soft_bounce"
# Extract failed recipient
for part in msg.walk():
if part.get_content_type() == "message/delivery-status":
# Parse delivery status
pass
return bounce_info
# Integrate with mailing list to remove hard bounces
معالجة الارتداد عبر Webhook
توفر خدمات مزودي البريد الحديثة Webhooks:
Webhook من SendGrid:POST /bounce-webhook
{
"email": "[email protected]",
"event": "bounce",
"reason": "550 5.1.1 User unknown",
"type": "blocked",
"status": "5.0.0"
}
الإجراء: حدّث قاعدة البيانات لوضع علامة «مرتد» على العنوان.
SPF وعناوين الارتداد
يتحقق SPF من مرسل الظرف (عنوان الارتداد)، لا من عنوان From في الترويسة:
Message:
From: [email protected] (header)
Return-Path: [email protected] (envelope)
SPF Check:
Queries: mail-server.com TXT record (not example.com)
Must include sending IP in mail-server.com's SPF
إعداد SPF لنطاق الارتداد
bounces.example.com. IN TXT "v=spf1 include:_spf.sendgrid.net ~all"
تأكد من أن نطاق الارتداد الفرعي يملك سجلات SPF المناسبة لبنية الإرسال لديك.
أفضل ممارسات عنوان الارتداد
استخدم عنوان ارتداد مخصصاً
لا تستخدم عنوان بريدك الأساسي للارتدادات:
# Bad
Return-Path: [email protected]
# Good
Return-Path: [email protected]
راقب معدلات الارتداد
| معدل الارتداد | التقييم | الإجراء |
|---|---|---|
| < 2% | سليم | واصل المراقبة |
| 2-5% | مقلق | راجع جودة قائمة البريد |
| 5-10% | ضعيف | يلزم تنظيف القائمة فوراً |
| > 10% | حرج | قابلية التسليم معرضة للخطر |
طبّق معالجة الارتداد
أتمت إزالة الارتدادات الدائمة:
-- Mark emails with hard bounces
UPDATE mailing_list
SET status = 'bounced', bounce_count = bounce_count + 1
WHERE email IN (SELECT email FROM recent_hard_bounces);
-- Remove after 3 hard bounces
DELETE FROM mailing_list
WHERE bounce_count >= 3;
افصل ارتدادات الرسائل التشغيلية عن التسويقية
[email protected] # Order confirmations, receipts
[email protected] # Newsletters, campaigns
من الطبيعي أن تختلف معدلات الارتداد بين النوعين.
أعد أتمتة معالجة الارتداد
مثال على مهمة Cron:#!/bin/bash
# Process bounces every hour
# Fetch bounces from IMAP
fetchmail -c /etc/fetchmailrc
# Parse and update database
/usr/local/bin/process-bounces.py
# Clean up processed bounces older than 30 days
find /var/mail/bounces -mtime +30 -delete
الرسائل المرتدة إلى جهات مزورة وأمن الارتداد
مشكلة الارتداد غير المقصود
عندما يقبل خادمك رسالة مزعجة ثم يعيد ارتدادها، فإنه يرسلها إلى عناوين مزورة:
1. Spammer sends email with forged From
2. Your server accepts it
3. Your server realizes it's spam/invalid
4. Your server bounces to forged From address
5. Innocent party receives bounce (backscatter)
الحل: ارفض الرسالة أثناء SMTP، ولا تقبلها ثم ترسل ارتداداً:
# Postfix: Reject unknown users at SMTP time
smtpd_recipient_restrictions = reject_unauth_destination
local_recipient_maps = hash:/etc/postfix/local_recipients
تزوير الارتداد
قد يزوّر المهاجمون رسائل الارتداد من أجل:
- جمع العناوين الصالحة
- تسليم رسائل مزعجة متخفية في هيئة ارتدادات
- التصيد للحصول على بيانات الاعتماد عبر تقارير تسليم مزيفة
- تحقق من أن الارتداد صدر من خادم MX
- تحقق من أن الارتداد يخص رسالة أرسلتها فعلاً
- حلّل ترويسات حالة التسليم بعناية
سيناريوهات الارتداد الشائعة
السيناريو 1: كل الرسائل ترتد
السبب: فشل SPF أو وجود عنوان IP في قائمة حظر أو تضرر سمعة الخادم الفحص: سجلات SPF وسمعة عنوان IP للمرسل وتقارير DMARCالسيناريو 2: لا تصل رسائل الارتداد
السبب: عنوان الارتداد غير مضبوط أو غير موجود الفحص: سجلات MX لنطاق الارتداد ووجود صندوق البريدالسيناريو 3: ارتفاع معدل الارتداد المؤقت
السبب: خوادم المستلمين مثقلة أو تفرض تقييداً للمعدل أو الرسائل كبيرة الفحص: معدل الإرسال وحجم الرسالة وأخطاء خادم المستلمالسيناريو 4: حلقات الارتداد
السبب: عنوان الارتداد يشغّل رداً آلياً، فيؤدي ذلك إلى ارتداد آخر الفحص: عطّل الردود الآلية على عناوين الارتداداختبار معالجة الارتداد
أرسل رسالة اختبار إلى مستلم غير صالح:# Test bounce to invalid address
swaks --to [email protected] \
--from [email protected] \
--server mx.test-domain.com
# Check if bounce arrives at [email protected]
تحقق من SPF لنطاق الارتداد:
dig bounces.example.com TXT
# Should show SPF record with authorized senders
تُعد إدارة عنوان الارتداد إدارة سليمة أمراً أساسياً للحفاظ على سمعة المرسل ونظافة القائمة وقابلية التسليم.