Bir web uygulaması, CRM sistemi veya muhasebe yazılımı geliştirdiğinizde e-posta göndermek kaçınılmaz bir gereksinim haline gelir. Ancak uygulamanızın doğrudan kendi sunucunuzdan posta göndermesi; SPF/DKIM hataları, IP itibar sorunları ve spam filtrelerine takılma gibi ciddi tuzaklara yol açar. Bu noktada devreye giren SMTP Relay (SMTP yönlendirme), hem teknik karmaşıklığı azaltır hem de e-postalarınızın güvenilir biçimde alıcıya ulaşmasını sağlar.
SMTP (Simple Mail Transfer Protocol), RFC 5321 ile tanımlanmış e-posta iletim standardıdır. "Relay" kavramı ise bir SMTP sunucusunun, kendisine gelen mesajı doğrudan son alıcıya teslim etmek yerine başka bir SMTP sunucusuna iletmesini ifade eder.
Uygulamanız bir SMTP Relay kullandığında şu süreç işler:
Böylece uygulamanızın IP adresinin internetteki "posta itibarı" hiç sorgulanmaz. Teslimata ilişkin tüm ağırlık, relay sağlayıcısının kurumsal IP bloklarına yüklenir.
Yeni bir sunucudan veya paylaşımlı hosting IP'sinden doğrudan posta göndermek çeşitli riskler barındırır:
Aşağıdaki adımlar, herhangi bir SMTP Relay sağlayıcısıyla uyumludur. Örneklerde Connect365 SMTP hizmeti kullanılmaktadır; ancak kavramlar sağlayıcıdan bağımsızdır.
| Parametre | Tipik Değer | Açıklama |
|---|---|---|
| SMTP Sunucusu (Host) | smtp.connect365.com.tr | Relay sağlayıcısının gönderim sunucusu adresi |
| Port (TLS) | 587 | STARTTLS şifrelemesi için standart port (RFC 6409) |
| Port (SSL) | 465 | TLS doğrudan bağlantı (SMTPS), eski sistemlerle uyumluluk |
| Şifreleme | STARTTLS / TLS | Plain text bağlantı asla kullanılmamalı |
| Kimlik Doğrulama | SMTP AUTH LOGIN | Kullanıcı adı + parola veya API anahtarı |
| Gönderen Domain | sizinalan.com | SPF ve DKIM kaydının eklendiği domain |
SMTP Relay çalışmadan önce gönderen domaininizin DNS bölgesine iki kritik kayıt eklenmesi gerekir:
SPF (Sender Policy Framework, RFC 7208): Hangi sunucuların sizin adınıza posta gönderebileceğini belirtir. Relay sağlayıcınız size hazır bir TXT kaydı verir; örnek:
v=spf1 include:spf.connect365.com.tr ~all
DKIM (DomainKeys Identified Mail, RFC 6376): Her mesaja kriptografik imza ekler. Sağlayıcınız bir public key verir; bunu DNS'e TXT kaydı olarak eklersiniz. İmzalama relay tarafında otomatik yapılır.
DMARC (RFC 7489): SPF ve DKIM başarısız olduğunda alıcı sunucuya ne yapması gerektiğini söyler. Başlangıç için izleme modunda bir politika yeterlidir:
v=DMARC1; p=none; rua=mailto:dmarc@sizinalan.com
Popüler programlama dillerinde SMTP Relay bağlantısı kurmak birkaç satır kodla mümkündür. Aşağıda Python ve PHP için örnek yapılandırmalar verilmiştir.
Python (smtplib):
import smtplib, ssl
from email.mime.text import MIMEText
msg = MIMEText("Merhaba!", "plain", "utf-8")
msg["Subject"] = "Test"
msg["From"] = "gonderici@sizinalan.com"
msg["To"] = "alici@hedef.com"
ctx = ssl.create_default_context()
with smtplib.SMTP("smtp.connect365.com.tr", 587) as s:
s.ehlo()
s.starttls(context=ctx)
s.login("API_KULLANICI_ADI", "API_PAROLASI")
s.sendmail(msg["From"], [msg["To"]], msg.as_string())
PHP (PHPMailer):
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
$mail = new PHPMailer(true);
$mail->isSMTP();
$mail->Host = 'smtp.connect365.com.tr';
$mail->SMTPAuth = true;
$mail->Username = 'API_KULLANICI_ADI';
$mail->Password = 'API_PAROLASI';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;
$mail->CharSet = 'UTF-8';
$mail->setFrom('gonderici@sizinalan.com', 'Gonderici Adı');
$mail->addAddress('alici@hedef.com');
$mail->Subject = 'Test';
$mail->Body = 'Merhaba!';
$mail->send();
Terminalde OpenSSL ile hızlı bir bağlantı testi yapabilirsiniz:
openssl s_client -starttls smtp -connect smtp.connect365.com.tr:587
Sunucu "220" ve ardından "250" kodları ile yanıt veriyorsa bağlantı başarılıdır. SMTP durum kodları RFC 5321, Bölüm 4.2'de tanımlanmıştır.
Türkiye'den ticari e-posta gönderimi yapan her yazılım veya platform, yalnızca teknik değil yasal gereksinimlere de uymakla yükümlüdür.
6563 Sayılı Elektronik Ticaretin Düzenlenmesi Hakkında Kanun (ETK): Ticari elektronik iletilerin önceden onay (opt-in) alınmadan gönderilmesini yasaklar. İlk onay kaydı, tarih, saat ve IP bilgisiyle birlikte tutulmalıdır. Kanun'un 6. maddesi, rıza olmaksızın gönderilen her ileti için idari para cezası öngörür.
6698 Sayılı Kişisel Verilerin Korunması Kanunu (KVKK): Alıcı e-posta adresi kişisel veri niteliği taşır. KVKK'nın 4. maddesi kapsamında bu veriler yalnızca rıza gösterilen amaçla işlenebilir; 12. madde ise teknik güvenlik tedbirlerini zorunlu kılar.
BTK Ticari Elektronik İletiler Hakkında Yönetmelik (2015 tarihli, 2022 yılında güncellendi): Her ticari iletide gönderen kimliği, açık adres ve abonelikten çıkma bağlantısı bulunması zorunludur. İletiyi alan kişi kolayca vazgeçme talebinde bulunabilmeli ve bu talep en geç üç iş günü içinde yerine getirilmelidir.
Doğrudan SMTP'de uygulamanız, alıcının posta sunucusuna doğrudan bağlanır; IP itibarı ve DNS yapılandırması tamamen size aittir. SMTP Relay'de ise mesaj bir aracı sunucu üzerinden iletilir; kimlik doğrulama, IP itibarı ve imzalama bu aracı tarafından yönetilir. Bu, teknik sorumluluğu önemli ölçüde azaltır.
Port 25, sunucular arası doğrudan iletim için tasarlanmıştır; bulut ortamlarında sıklıkla engellenir ve kimlik doğrulama gerektirmez. Port 587, RFC 6409 ile tanımlanmış "mail submission" (posta gönderim) portudur; STARTTLS ile şifreleme yapılır ve uygulamalar için önerilen seçenektir. Port 465, geçmişte SMTPS için kullanılmıştır; bazı sağlayıcılar desteklemeye devam eder ancak 587 tercih edilmelidir.
SPF ve DKIM birbirini tamamlar; ikisi birden olmadan DMARC tam koruma sağlayamaz. Gmail ve diğer büyük sağlayıcılar, DKIM imzası olmayan mesajları spam olarak değerlendirebilir ya da "gönderen kimliği doğrulanamadı" uyarısı gösterebilir. DKIM, relay sağlayıcısı tarafından otomatik eklenir; yalnızca DNS'e public key kaydını girmeniz yeterlidir.
Test ortamlarında Mailhog veya Mailpit gibi yerel SMTP stub araçları kullanın; bu araçlar gerçek iletim yapmadan mesajları yakalar ve web arayüzünde gösterir. Alternatif olarak relay kimlik bilgilerinizi ortam değişkenlerine (environment variables) taşıyın ve test ortamında bu değişkenleri boş bırakın ya da stub sunucusuna yönlendirin.
Limit, relay sağlayıcısının planına ve gönderim altyapısına göre değişir. Teknik olarak SMTP'de yerleşik bir sınır yoktur; ancak sağlayıcılar hız sınırı (rate limit) uygular. Bunun yanı sıra alıcı sunucular da bağlantı başına mesaj sayısını ve dakikadaki bağlantıyı kısıtlayabilir. Yüksek hacimli gönderimler için sağlayıcının toplu gönderim API'sini kullanmak SMTP bağlantısından daha verimlidir.
Kimlik bilgilerini kaynak koduna veya sürüm kontrol sistemine (Git) asla gömmeyeceğiniz, bir .env dosyası ya da ortam değişkeni aracılığıyla çalışma zamanında yükleyeceğiniz teknik standart haline gelmiştir. Sunucu tarafında kimlik bilgilerini şifreli secret yönetim araçlarıyla (HashiCorp Vault, AWS Secrets Manager, Azure Key Vault vb.) saklayabilirsiniz. KVKK'nın 12. maddesi de bu tür teknik önlemleri yasal zorunluluk haline getirmektedir.
Önce SPF, DKIM ve DMARC kayıtlarınızı mail-tester.com veya Google Postmaster Tools ile kontrol edin. Ardından gönderim IP'nizin kara listede olup olmadığını MXToolbox Blacklist Check ile doğrulayın. İçerikte aşırı büyük harf, ünlem işareti ve şüpheli bağlantılar varsa düzeltin. Listenizde aktif olmayan alıcı oranı yüksekse önce bir temizlik kampanyası gönderin.
Türkiye'de 6563 sayılı ETK'ya göre evet, ticari elektronik ileti (reklam, tanıtım, kampanya vb.) göndermeden önce alıcının açık onayı alınmalıdır. Bu onay kayıtlarını tarihi, kaynağı ve içeriğiyle birlikte saklamak zorunludur. İstisnalar mevcuttur: hâlihazırda ticari ilişki içinde olan müşterilere belirli koşullarla ve sınırlı süreyle önceden onay aranmaksızın gönderilebilir; ancak her durumda vazgeçme hakkı tanınmalıdır.
6563 sayılı ETK'nın 9. maddesi kapsamında çıkarılan yönetmelik, ticari elektronik iletiye ilişkin kayıtların (onay tarihi, gönderim zamanı, alıcı bilgisi) üç yıl süreyle saklanmasını zorunlu kılar. BTK denetimlerinde bu kayıtlar talep edilebilir.
Yeni sağlayıcının SPF ve DKIM kayıtlarını DNS'e ekleyin, eski sağlayıcıya ait include: referansını SPF kaydından çıkarın ve eski DKIM selector'ını silin. Geçiş sırasında her iki sağlayıcının SPF kaydını birlikte tutup DNS TTL süresi geçtikten sonra eskisini kaldırabilirsiniz. Uygulama yapılandırmasında yalnızca host, port ve kimlik bilgilerini güncelleyin.
Reklamsız, KVKK uyumlu; kurulum ve geçiş ücretsiz, mailleri biz taşırız.