Kendi alan adınız

Tek bir catch-all alan adında sınırsız test hesabı

Her çalıştırma için yeni bir kullanıcıya ihtiyaç duyan bir test paketi, her çalıştırma için yeni bir e-posta adresine ihtiyaç duyar ve posta kutularını birer birer dağıtan bir posta sağlayıcısı bunun için yanlış bir şekildir. Tek bir MX kaydı, sahibi olduğunuz bir alan adını bir catch-all gelen kutusuna dönüştürür: üzerindeki her adres çalışır, hiçbirinin oluşturulması gerekmez ve bir QA ekibi, kimse hiçbir şey sağlamadan günde binini tüketebilir.

  • Orta düzey
  • 11 dk okuma
Gri bir posta kutusunu besleyen geniş gri bir huniye dökülen düzinelerce küçük mavi zarf

Bir posta sağlayıcısı QA için neden yanlış bir şekildir

Bir test paketine e-posta adresi vermenin her yolu denenmiştir ve her biri farklı bir yerden sızdırır:

YaklaşımBedeliNerede bozulur
Tek bir paylaşılan gelen kutusu (qa@company.com)Kurulacak hiçbir şey yok.Her test, diğer her testin postasını okur. Yeni bir çalıştırmanın ilk yoklaması, önceki çalıştırmanın kodunu bulur. Paralel çalıştırmalar imkansızdır.
Artı işaretli adresleme (qa+run42@company.com)Sağlayıcı destekliyorsa, kurulacak hiçbir şey yok.Yine de tek bir posta kutusudur: tek bir kota, tüm ekip tarafından paylaşılan tek bir IMAP girişi ve etiketi kaldıran ya da +'yı reddeden bir kayıt formu.
Sağlayıcıdan test uzmanı başına bir posta kutusuHer biri için bir koltuk ve bir tane oluşturmak için bir talep.Kimse test çalıştırması başına bir posta kutusu sağlamaz. Test uzmanları kendilerinkini yeniden kullanır ve paylaşılan gelen kutusu sorunu bir seferde bir kişi olarak geri döner.
Buraya yönlendirilmiş bir catch-all alan adıBir kez, tek bir DNS kaydı.Posta kutusu, adresi bilen herkese açıktır ve posta 5 gün yaşar. İkisi de on bir saniye önemli olan bir kod için sorun değildir; ikisi de gerçek müşteri postası için sorun teşkil eder.

Dördüncü satır bu rehberdir. Bu, genel tek kullanımlık alan adlarının çalıştığı aynı mekanizmadır — bir posta kutusu listesi yerine bir alan adı üzerindeki her adresi kabul eden bir sunucu — sizden başka kimsenin kullanmadığı bir isme uygulanmış.

Tek DNS kaydı

DNS sağlayıcınızda, sahibi olduğunuz bir alan adının kökünde tek bir MX kaydı ekleyin. Burada başka bir kayıt yok, bir şeyi kanıtlayacak bir TXT yok, bu sitede bir hesap yok:

Alan adı için MX kaydı10 smtp.grabmail.io

  1. MX'i yayımlayın. Öncelik 10, smtp.grabmail.io'i gösteriyor. Alan adındaki başka her MX'i silin — posta yalnızca tek bir yere teslim edilebilir ve geride kalan bir kayıt bir kısmını başka bir yere gönderir.
  2. DNS'i bekleyin. Genellikle dakikalar sürer; bazen daha önce orada olan kaydın TTL'si kadar. dig MX qa-example.com, ne zaman geçerli olduğunu gösterir.
  3. Üzerindeki herhangi bir adrese bir mesaj gönderin. Alan adını bağlayan şey ilk teslimattır: sunucu o anda MX'e bakar, kendini görür ve kabul eder. O andan itibaren alan adı üzerindeki her adres bir posta kutusudur.
A sendermail for your domainYour DNSMX 10 smtp.grabmail.ioGrabMailchecks the MX itselfThe only thing you publishand keeps the messageNo account, no token, no verification page. The record is the proof.
Tek bir MX kaydı, kurulumun tamamıdır. Gönderen sunucu, DNS'e alan adına gelen postanın nereye gittiğini sorar ve yanıt, üzerindeki her adresi kabul eden bir sunucudur.

Posta kutusunu kimin yaptığını söyleyen bir adlandırma şeması

Her adres geçerliyken, yerel kısım bilgi taşımakta özgürdür — ve sabahın ikisinde, başarısız bir çalıştırma ve açık bir posta kutusuyla, bunu isteyeceksiniz. Tirelerle birleştirilmiş üç parça, şu sırayla:

ParçaÖrnekSize kazandırdığı
Onu ne yaptısignup, reset, e2e, aliceTek bakış, posta kutusunun hangi akışa ya da hangi kişiye ait olduğunu söyler.
Hangi çalıştırma1234567890 (CI çalıştırma kimliği), bir dal adı, bir tarihBir pipeline çalıştırmasından gelen her posta kutusu, arayabileceğiniz bir token'ı paylaşır.
Rastgelelik3f9a1c2eSekiz karakteri. Bu, iki testin, iki shard'ın ya da iki yeniden denemenin bir posta kutusunu asla paylaşmamasını sağlayan kısımdır.
Asla: gerçek olan hiçbir şeybir müşteri adı, gerçek bir kullanıcı kimliği, bir müşteriyi adlandıran bir talep numarasıPosta kutusu, adresi bilen herkese açıktır. Adreste bilinmeye değer hiçbir şey olmamalıdır.
tests/address.ts
// one helper, every runner: who made it, which run, and eight random characters
export const testAddress = (who: string, run = process.env.GITHUB_RUN_ID ?? 'local') =>
  `${who}-${run}-${crypto.randomUUID().slice(0, 8)}@qa-example.com`;

testAddress('signup');        // signup-1234567890-3f9a1c2e@qa-example.com

Herhangi bir adresi okumak, aynı üç çağrı

Kendi alan adınız için API hakkında hiçbir şey değişmez. Aynı listeleme çağrısı, aynı mesaj çağrısı, aynı silme — genel katmanda anahtar yok, ve adresteki alan adı farklılaşan tek şeydir:

kendi alan adınızda bir posta kutusunu listeleme
$ curl -sG https://grabmail.io/api/v1/mailbox --data-urlencode "address=signup-1234567890-3f9a1c2e@qa-example.com"

Bu da bu sitedeki her yardımcının, tek bir sabit düzenlendikten sonra değişmeden çalıştığı anlamına gelir: Playwright fixture'ı, Cypress task'ı, Python ve Node modülleri. Genel alan adlarının sizi düşündürmediği, bilinmeye değer üç şey vardır:

Bir 404, MX'in henüz orada olmadığı anlamına gelir
Listeleme, burada barındırılmayan bir alan adı için 404 yanıtı verir. Kendi alan adınızda bu, bir API sorunu değil, bir DNS sorunudur — kayıt henüz yayılmamıştır ya da başka bir yeri gösteriyordur. Önce dig MX.
Takma ad kendi alan adınızda da çalışır
Herhangi bir alan adındaki her posta kutusunun, ona teslimat yapan ama onu okuyamayan, ayrı bir alan adında ikinci bir adresi vardır. Gelen kutusunu açamamasını tercih ettiğinizde bunu bir siteye verin; kendi adresinizi yoklayın.
Yoğun bir adres sayfalanır
Geri dönen postaları ya da bir günlük bildirimi toplayan bir catch-all adresi, 200'lük birden fazla sayfayı tutabilir. next'i null olana kadar before olarak geri geçirin.

Bir test alan adını kullanılabilir tutmak

Kendi alan adınız hiçbir tek kullanımlık posta kara listesinde değildir; birini kullanmanın en baştaki nedeni de genellikle budur: test edilen uygulama, tam olarak olması gerektiği gibi, grabmail.io'i ve diğer her genel alan adını reddeder. Dört alışkanlık bunu böyle tutar:

  • Özel bir alan adı kullanınqa-example.com, production'ın bir alt alan adı değil ve müşterilerin yazdığı alan adı değil. Hizmet yalnızca kaydedilebilir alan adlarını kabul eder (example.com, asla mail.example.com değil) ve bir test alan adının başka bir işi olmamalıdır.
  • Onu yayımlamayın. Listeler, genel geçici e-posta sitelerinde ve paylaşılan adres dökümlerinde görünenlerden oluşturulur. Yalnızca kendi test paketinizde görünen bir alan adının bunlara girmesinin bir yolu yoktur.
  • SPF ve DMARC ile kilitleyin. SPF'si olmayan yalnızca alıcı bir alan adı, herkesin adına posta sahteciliği yapabileceği bir alan adıdır; iki kayıt bunu kapatır ve hiçbir bedeli yoktur.
  • Ona gerçek posta yönlendirmeyin. Bir staging sisteminin müşteri bildirimlerini bir catch-all adresine gönderdiği anda, genel bir posta kutusu müşteri verisi tutar. Test alan adları, test postası taşır.

Uygulama tüm catch-all alan adlarını reddediyorsa — bazı dolandırıcılık kontrolleri, alan adı üzerinde rastgele bir adresin kabul edilip edilmediğini yoklayarak bunu yapar — fiyatlandırma sayfasında anlatılan, listelerin dışında tutulan, sıradan görünümlü .com alan adlarından oluşan ücretli bir havuz vardır. Kayıt formları neden tek kullanımlık e-postayı engeller rehberi, her tür kontrolün ne gördüğünü anlatır.

Bir ekip için: bir alan adı, birçok test uzmanı, birçok pipeline

Tek bir catch-all alan adı herkese hizmet eder, çünkü farklı olması gereken tek şey yerel kısımdır ve bu ücretsizdir. Bir ekibin ihtiyaç duyduğu şey, yukarıdaki adlandırma üzerinde anlaşma ve üç küçük kuraldır:

Pipeline başına ve kişi başına bir önek
e2e-, nightly-, alice-. Bir job günlüğünde öneki aramak, onun yaptığı her posta kutusunu bulur; bir meslektaşınızınkini aramak, onların baktığı hatayı bulur.
Asla hiçbir şey paylaşılmaz
Alan adında bir "ekip gelen kutusu" yoktur ve sabit bir adres dağıtan bir fixture yoktur. İki kişinin aynı posta kutusuna ihtiyacı varsa, biri diğerine adresi gönderir.
Hız sınırları istemci başınadır
Adres başına saniyede bir okuma, istemci başına dakikada 1200 istek — bir CI runner'ı bir istemcidir, bir dizüstü bilgisayar başka bir istemcidir. Aynı anda paket çalıştıran on kişilik bir ekip, bir değil on istemcidir.

Geçerli olan sınırlar

Kendi alan adınız, genel olanlarla aynı hizmeti, aynı üst sınırlarla alır. Hiçbiri ayarlanabilir değildir ve hiçbiri bir test paketi için sorun değildir:

SınırDeğerQA için anlamı
Saklama süresiMesaj başına 5 günHer çalıştırma kendi postasını oluşturur; hiçbir şey önceki bir haftadan hiçbir zaman alınmaz. Tam kurallar.
EklerMesaj başına 5 MBBir fatura PDF'i ya da bir CSV dışa aktarımı için yeterli; daha büyük bir mesaj SMTP anında reddedilir, bu yüzden gönderene bildirilir.
OkumalarAdres başına saniyede 1, istemci başına dakikada 1200Tek bir runner'dan, saniyede bir kez yoklanan yirmi posta kutusu. Ötesinde, Retry-After ile 429.
GizlilikYok — bir adresi bilen herkes onu okuyabilirRastgele yerel kısımlar, yayımlanmamış bir alan adı ve gerçek müşteri postası yok.
GönderimYokAlan adı yalnızca alır. Uygulamanız, production'daki gibi kendi sağlayıcısı üzerinden gönderir.

Bitti demeden önce

  • Tek bir MX kaydı olan özel, kaydedilebilir bir alan adı: 10 smtp.grabmail.io, ve başka MX yok.
  • Üzerindeki herhangi bir adrese gönderilen ve API üzerinden geri okunan bir mesaj.
  • Kimsenin alan adı olarak gönderim yapamaması için yayımlanmış SPF ve DMARC.
  • Her paket tarafından kullanılan bir adlandırma yardımcısı — kim, hangi çalıştırma, sekiz rastgele karakter.
  • Kodda, ekran görüntülerinde ya da taleplerde asla değil, ortam yapılandırmasında tutulan alan adı.
  • Gerçek müşteri postası gönderen hiçbir şeyin ona yönlendirilmemesi.

Buradan sonra paketler zaten yazılmış olanlardır: fixture'ında alan adı olan Playwright, test çalıştırıcısından bağımsız disiplin ve bir değişkende alan adı olan GitHub Actions workflow'u.

Sorular

test.company.com gibi bir alt alan adı kullanabilir miyim?

Hayır — hizmet yalnızca kaydedilebilir alan adlarını kabul eder (company.com, ya da company.co.uk), çünkü bir alan adını kim kontrol ederse altındaki her ismi de kontrol eder ve iki taraf tek bir ad alanının çakışan yarılarını elinde bulunduramamalıdır. Test için ucuz, özel bir alan adı kaydedin; zaten daha iyi uygulama budur.

MX kaydının çalışması ne kadar sürer?

DNS onu sunar sunmaz, ki bu genellikle dakikalar sürer. Önceki bir MX varsa, onun TTL'si geçerlidir. Alan adı, bundan sonra ulaşan ilk mesajla bağlanır — başka hiçbir şeyin olması gerekmez ve dig MX size kaydın ne zaman canlı olduğunu söyler.

Herhangi bir bedeli var mı?

Hayır. Bir alan adını bağlamak, üzerindeki her adres ve API, hesap olmadan ücretsizdir. Bu sitedeki tek ücretli şey, kendi alan adını kullanamayanlar için tek kullanımlık posta kara listelerinin dışında tutulan bir alan adı havuzudur.

Alan adımdaki postayı başka biri okuyabilir mi?

Tam olarak genel alan adlarında olduğu gibi, bir adresi bilen herkes okuyabilir. Kendi alan adınızın değiştirdiği şey tahmin edilebilirliktir: adresleri, başka kimsenin kullanmadığı bir isim üzerindedir. Rastgele yerel kısımlar ve yayımlanmamış bir alan adı, tahmin etmeyi pratik olmaktan çıkarır; posta kutusunu özel yapmazlar ve burada hiçbir şey yapmaz.

Alan adını bağlamadan önce ona gönderilen postaya ne olur?

MX buraya işaret etmeden hiçbir şey buraya ulaşmaz. Eski kayıt canlıyken gönderilen posta, eski sunucuya gitti ya da geri döndü; DNS değiştikten sonra gönderilen posta ulaşır ve alan adını bağlar.

Alan adının bağlantısını nasıl keserim?

MX kaydını kaldırın. Yeni posta anında ulaşmayı durdurur; posta kutularında zaten olan her şeyin süresi kendiliğinden 5 gün içinde dolar. Bundan sonra alan adına dair hiçbir şey saklanmaz.

Uygulama test alan adımı da reddediyor. Şimdi ne olacak?

Bazı dolandırıcılık kontrolleri, bir listeyi kontrol etmek yerine, rastgele bir adresi kabul eden herhangi bir alan adını — bir catch-all yoklaması — reddeder. Bunlar için, sıradan bir posta kutusu sağlayıcısı gibi davranan bir alan adı gerekir, ki ücretli havuzun sağladığı da budur; kayıt formları neden tek kullanımlık e-postayı engeller rehberi, hangi kontrolle karşı karşıya olduğunuzu anlatır.

Henüz tazeyken deneyin

Bir adres tek tıkla alınır, hesap ve kart gerekmez. Bu rehberdeki her şey onunla hemen çalışır.

Tekrar hoş geldiniz

Kutularınız ve alan adlarınız tek bir yerde.