Geri Dönüş Adresi Nedir?
Geri dönüş adresi, return path veya envelope sender olarak da adlandırılır ve bir e-posta teslim edilemediğinde teslim edilememe raporlarını (NDR) alan e-posta adresidir. Bu adres, alıcıların gördüğü "From" adresinden ayrıdır ve yalnızca otomatik teslimat bildirimleri için kullanılır.
Geri Dönüş Adresleri Nasıl Çalışır?
E-posta iletimi iki adres kümesini kullanır:
Header From (alıcıya görünür):From: John Doe <[email protected]>
Envelope From (SMTP düzeyinde, geri dönüşler için kullanılır):
MAIL FROM: <[email protected]>
Teslimat başarısız olduğunda alıcı sunucu geri dönüşü header From adresine değil, envelope sender adresine gönderir.
SMTP Görüşmesi Örneği
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]
E-posta Geri Dönüş Türleri
Kalıcı Geri Dönüşler
Kalıcı teslimat hataları:
- Kullanıcı mevcut değil: 550 No such user
- Alan adı mevcut değil: 550 Domain not found
- Politika nedeniyle reddedildi: 550 Spam blocked
Geçici Geri Dönüşler
Geçici hatalar:
- Posta kutusu dolu: 452 Insufficient system storage
- Sunucu geçici olarak kullanılamıyor: 421 Service not available
- İleti çok büyük: 552 Message size exceeds limit
Engelleme Geri Dönüşleri
Teslim edilebilirlik sorunları:
- IP adresi kara listede: 554 Service unavailable; Sender IP blocked
- İçerik spam olarak filtrelendi: 550 Spam score too high
- Hız sınırlaması: 450 Too many emails
Geri Dönüş Adresi Yapılandırması
E-posta Başlıklarında Return Path Ayarlama
PHP (mail işlevi):$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
Özel Geri Dönüş Yönetimi Hizmetleri
Çoğu e-posta hizmet sağlayıcısı geri dönüş yönetimi sunar:
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'
};
Geri Dönüş Adresi Adlandırma Kuralları
Alt Alan Adı Yaklaşımı
[email protected] # General bounces
[email protected] # No-reply emails
[email protected] # Returns/receipts
Kampanyaya Özel
Kampanya başına geri dönüşleri izleyin:
[email protected]
Değişken Envelope Return Path (VERP)
Alıcıyı geri dönüş adresinde kodlayın:
Sending to: [email protected]
Return path: [email protected]
When bounce arrives at bounces+*, parse to identify failed recipient
Geri Dönüş İletilerini İşleme
Otomatik Geri Dönüş Ayrıştırma
Python Örneği: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 Tabanlı Geri Dönüş Yönetimi
Modern ESP'ler webhook sağlar:
SendGrid Webhook'u:POST /bounce-webhook
{
"email": "[email protected]",
"event": "bounce",
"reason": "550 5.1.1 User unknown",
"type": "blocked",
"status": "5.0.0"
}
İşlem: E-postayı geri dönmüş olarak işaretlemek için veritabanını güncelleyin.
SPF ve Geri Dönüş Adresleri
SPF, From başlığını değil envelope sender'ı (geri dönüş adresini) denetler:
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
Geri Dönüş Alan Adı SPF Yapılandırması
bounces.example.com. IN TXT "v=spf1 include:_spf.sendgrid.net ~all"
Geri dönüş alt alan adınızın gönderim altyapınız için uygun SPF kayıtlarına sahip olduğundan emin olun.
Geri Dönüş Adresi İçin En İyi Uygulamalar
Özel Bir Geri Dönüş Adresi Kullanın
Geri dönüşler için hiçbir zaman birincil e-posta adresinizi kullanmayın:
# Bad
Return-Path: [email protected]
# Good
Return-Path: [email protected]
Geri Dönüş Oranlarını İzleyin
| Geri dönüş oranı | Değerlendirme | İşlem |
|---|---|---|
| < 2% | Sağlıklı | İzlemeye devam edin |
| 2-5% | Endişe verici | E-posta listesi kalitesini denetleyin |
| 5-10% | Kötü | Liste hemen temizlenmeli |
| > 10% | Kritik | Teslim edilebilirlik risk altında |
Geri Dönüş İşlemeyi Uygulayın
Kalıcı geri dönüşlerin çıkarılmasını otomatikleştirin:
-- 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;
İşlemsel ve Pazarlama Geri Dönüşlerini Ayırın
[email protected] # Order confirmations, receipts
[email protected] # Newsletters, campaigns
Her tür için farklı geri dönüş oranları beklenir.
Geri Dönüş İşleme Otomasyonu Kurun
Cron İşi Örneği:#!/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
Backscatter ve Geri Dönüş Güvenliği
Backscatter Sorunu
Sunucunuz spam'i kabul edip ardından geri döndürdüğünde sahte adreslere ileti gönderirsiniz:
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)
Çözüm: Kabul edip geri döndürmek yerine SMTP zamanında reddedin:
# Postfix: Reject unknown users at SMTP time
smtpd_recipient_restrictions = reject_unauth_destination
local_recipient_maps = hash:/etc/postfix/local_recipients
Geri Dönüş Sahteciliği
Saldırganlar geri dönüş iletilerini şu amaçlarla sahteleyebilir:
- Geçerli adresleri toplamak
- Geri dönüş gibi görünen spam göndermek
- Sahte teslimat raporlarıyla kimlik bilgilerini ele geçirmek
- Geri dönüşün MX sunucusundan kaynaklandığını kontrol edin
- Geri dönüşün gerçekten gönderdiğiniz bir e-postaya ait olduğunu doğrulayın
- Teslimat durumu başlıklarını dikkatle ayrıştırın
Yaygın Geri Dönüş Senaryoları
Senaryo 1: Tüm E-postalar Geri Dönüyor
Neden: SPF hatası, IP kara listesi veya sunucu itibarı Kontrol: SPF kayıtları, gönderen IP itibarı, DMARC raporlarıSenaryo 2: Geri Dönüşler Alınamıyor
Neden: Geri dönüş adresi yanlış yapılandırılmış veya mevcut değil Kontrol: Geri dönüş alan adı için MX kayıtları, posta kutusunun varlığıSenaryo 3: Yüksek Geçici Geri Dönüş Oranı
Neden: Alıcı sunucuların aşırı yüklenmesi, hız sınırlaması, büyük iletiler Kontrol: Gönderim hızı, ileti boyutu, alıcı sunucusu hatalarıSenaryo 4: Geri Dönüş Döngüleri
Neden: Geri dönüş adresi otomatik yanıtı tetikliyor, bu da başka bir geri dönüş oluşturuyor Kontrol: Geri dönüş adreslerindeki otomatik yanıtlayıcıları devre dışı bırakınGeri Dönüş İşlemeyi Test Etme
Geçersiz alıcıyla test e-postası gönderin:# Test bounce to invalid address
swaks --to [email protected] \
--from [email protected] \
--server mx.test-domain.com
# Check if bounce arrives at [email protected]
Geri dönüş alan adı için SPF'yi doğrulayın:
dig bounces.example.com TXT
# Should show SPF record with authorized senders
Uygun geri dönüş adresi yönetimi, gönderen itibarını, liste temizliğini ve teslim edilebilirliği korumak için kritik öneme sahiptir.