Gelen E-posta Genel Bakış
Mail.Land'ın gelen ağ geçidiyle gelen e-postaları alın ve işleyin
MailLand'ın gelen ağ geçidi, alan adlarınıza gelen e-postaları alır ve bunları webhook'lar aracılığıyla uygulamanıza iletir ya da daha sonra alınmak üzere depolar. Destek gelen kutuları oluşturmak, makine tarafından üretilen e-postaları ayrıştırmak veya yanıtları uygulamanıza yönlendirmek için gelen işlemeyi kullanın.
Nasıl Çalışır
Alan adınızı yapılandırın
Alan adınızın MX kayıtlarını MailLand'ın gelen sunucularına yönlendirin. Alan adının inboundEnabled ve aktif bir kiracıya ihtiyacı vardır. MailLand yalnızca etkin bir rotayla eşleşen bir alıcı için posta kabul eder, veya catchAllEnabled açıksa herhangi bir adres için; diğer her şey RCPT aşamasında reddedilir.
Yönlendirme kuralları oluşturun
Alıcı adresinin yerel kısmıyla eşleşen rotalar tanımlayın ve bunlara bir eylem atayın (yönlendirme, webhook veya depolama).
Ayrıştırılmış e-postaları alın
MailLand e-postayı işler; başlıkları, gövdeyi ve ekleri ayrıştırır ve sonucu webhook uç noktanıza iletir veya API ile alınmak üzere depolar.
Gelen Ayarları
Ayarlar tüm çalışma alanı genelinde değil, alan adı bazında geçerlidir:
GET https://api.mail.land/v1/transactional/inbound/domains/{domainId}/settings
PUT https://api.mail.land/v1/transactional/inbound/domains/{domainId}/settingsAuthorization: Bearer <token> veya X-API-Key: <api key> ile kimlik doğrulayın.
curl https://api.mail.land/v1/transactional/inbound/domains/k3v9x2m8q1w7z4/settings \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."{
"isEnabled": true,
"catchAllEnabled": true,
"maxMessageSizeBytes": 26214400,
"retentionDays": 30,
"dailyLimit": 10000,
"storeEmails": true
}Ayarları güncelleyin:
PUT https://api.mail.land/v1/transactional/inbound/domains/k3v9x2m8q1w7z4/settings{
"isEnabled": true,
"catchAllEnabled": true,
"maxMessageSizeBytes": 26214400,
"retentionDays": 30,
"dailyLimit": 10000,
"storeEmails": true
}curl -X PUT https://api.mail.land/v1/transactional/inbound/domains/k3v9x2m8q1w7z4/settings \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{
"isEnabled": true,
"catchAllEnabled": true,
"maxMessageSizeBytes": 26214400,
"retentionDays": 30,
"dailyLimit": 10000,
"storeEmails": true
}'| Alan | Tür | Açıklama |
|---|---|---|
isEnabled | bool | Bu alan adı için gelen işlemeyi etkinleştir/devre dışı bırak |
catchAllEnabled | bool | Yalnızca etkin bir rotayla eşleşen alıcılar değil, alan adındaki herhangi bir alıcı için postayı kabul et |
maxMessageSizeBytes | int | Bu alan adı için bayt cinsinden kabul edilen maksimum ileti boyutu; SMTP 552 5.3.4 ile uygulanır. Ayarlar API'si 50 MiB'ye kadar değer kabul eder, ancak platform bu ayardan bağımsız olarak asla 25 MiB'nin üzerini kabul etmez |
dailyLimit | int | Bu alan adı için günde kabul edilen maksimum gelen ileti sayısı |
retentionDays | int | Depolanan e-postaların saklanacağı gün sayısı. Varsayılan 30, izin verilen 1–90 |
storeEmails | bool | Ayrıştırılmış tam e-postanın daha sonra alınmak üzere depolanıp depolanmayacağı |
routeCount | int | Bu alan adı için yapılandırılmış rota sayısı |
Virüs taraması yoktur ve tüm çalışma alanı için tek bir webhookUrl/webhookSecret yoktur; webhook'lar webhookId üzerinden rota bazında eklenir (bkz. Rotalar).
maxMessageSizeBytes, dailyLimit ve retentionDays uygulanmaktadır. Postalar, MX kaydının işaret ettiği ana bilgisayar olan <inboundSubdomain>.<domain> adresinde alınır; kök alan adı da almaya devam eder. Alan adının maxMessageSizeBytes değerini aşan bir ileti, SMTP 552 5.3.4 ile reddedilir ve daha büyük bir değer ayarlansa bile platformun 25 MiB sınırının hiçbir zaman üzerine çıkılmaz (ayarlar API'si 50 MiB'ye kadar kabul eder, ancak yalnızca 25 MiB uygulanır). Günlük dailyLimit (varsayılan 10.000) değerine ulaşıldığında, gönderenler geçici bir 452 4.2.2 alır ve daha sonra tekrar denemesi beklenir; posta kaybolmaz. Saklanan iletiler, retentionDays (varsayılan 30, izin verilen 1–90) süresi dolduğunda silinir.
E-posta Durumları
Sayı olarak değil, dize (string) olarak döndürülür:
| Durum | Açıklama |
|---|---|
Received | E-posta alındı, işlenmeyi bekliyor |
Processing | İşleniyor (ayrıştırma, spam kontrolü, yönlendirme) |
Processed | İşlendi ve eylemi tamamlandı |
Delivered | Başarıyla teslim edildi (yönlendirildi veya webhook gönderildi) |
Failed | İşleme başarısız oldu |
Expired | Saklama süresi doldu; e-posta silindi |
Ayrı bir Quarantined durumu yoktur; spam, status'tan bağımsız olarak e-posta üzerindeki bir boole isSpam bayrağıdır.
Gelen E-postaları Listele
GET https://api.mail.land/v1/transactional/inbound/emailscurl https://api.mail.land/v1/transactional/inbound/emails \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."| Parametre | Tür | Varsayılan | Açıklama |
|---|---|---|---|
cursor | string | - | Önceki sayfanın nextCursor değerinden gelen opak imleç. İlk sayfa için atlayın. |
limit | int | 20 | Sayfa başına öğe sayısı (maks. 100), reddedilmek yerine sınırlandırılır |
domainId | string | - | Alan adının genel kimliğine göre filtrele |
status | string | - | E-posta durumuna göre filtrele (Received, Processing, Processed, Delivered, Failed, Expired) |
routeId | string | - | Eşleşen rotaya göre filtrele |
isSpam | bool | - | Spam bayrağına göre filtrele. isSpam belirtmek (true veya false) spam boyutuna tek başına karar verir ve varsayılan excludeQuarantined filtresini devre dışı bırakır, bu yüzden isSpam=true spam satırlarını döndürür (yine de aşağıdaki yalnızca-depolanmış kuralına tabidir). Spam'i gizleyen gelen kutusu varsayılanını korumak için isSpam'i belirtmeyin. |
from | datetime | - | Bu tarihten sonra alınan e-postalar |
to | datetime | - | Bu tarihten önce alınan e-postalar |
search | string | - | Konu ve gönderende arama yapar (adres veya ad); alıcıyla eşleşmez |
sortBy | string | - | Sıralama alanı: subject, from veya varsayılan receivedAt |
sortDesc | bool | true | Azalan sırada sırala |
excludeQuarantined | bool | true | Spam olarak işaretlenmiş e-postaları listeden hariç tutar. isSpam belirtildiğinde yok sayılır. |
includeWebhookOnly | bool | false | Alınırken depolanmamış e-postaları dahil eder (yalnızca webhook veya bırakma rotaları). Varsayılan olarak gizlidir, bu yüzden tüm rotaları yalnızca webhook olan bir kiracı burada boş bir liste görür. |
Yalnızca subject araması yoktur, tek başına gönderen/alıcı adres filtresi yoktur ve buradaki from/to adres değil tarihtir (gönderen/konu metin eşleşmesi için search kullanın).
{
"items": [
{
"id": "k7m2x9q4p1w8z3",
"domainId": "k3v9x2m8q1w7z4",
"domainName": "yourdomain.com",
"matchedRouteId": "r7k3m9q2p4w8x1",
"matchedRouteName": "Support inbox",
"fromAddress": "[email protected]",
"fromName": "Customer Name",
"subject": "Need help with my account",
"textPreview": "Hi, I need help with...",
"hasHtml": true,
"hasText": true,
"attachmentCount": 1,
"sizeBytes": 45230,
"status": "Delivered",
"spfResult": "Pass",
"dkimResult": "Pass",
"dmarcResult": "Pass",
"isSpam": false,
"spamScore": 1.2,
"receivedAt": "2026-02-17T14:30:00Z",
"expiresAt": "2026-03-19T14:30:00Z"
}
],
"nextCursor": "eyJ2IjoxLCJzIjoiY3JlYXRlZGF0OmRlc2MiLCJrIjoi...",
"hasMore": true
}Liste öğesinde to alanı yoktur; alıcılar detay yanıtındaki envelopeRecipients/headerRecipients içinde bulunur. status bir sayı değil, dizedir.
E-posta Ayrıntılarını Al
GET https://api.mail.land/v1/transactional/inbound/emails/{id}curl https://api.mail.land/v1/transactional/inbound/emails/{id} \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."Ayrıştırılmış e-postanın meta verilerini, başlıklarını, bir metin önizlemesini ve ek meta verilerini döndürür; tam HTML/metin gövdesini döndürmez. Bunun için ham iletiyi alın (aşağıya bakın).
{
"id": "k7m2x9q4p1w8z3",
"domainId": "k3v9x2m8q1w7z4",
"domainName": "yourdomain.com",
"matchedRouteId": "r7k3m9q2p4w8x1",
"matchedRouteName": "Support inbox",
"fromAddress": "[email protected]",
"fromName": "Customer Name",
"subject": "Need help with my account",
"textPreview": "Hi, I need assistance with...",
"hasHtml": true,
"hasText": true,
"attachmentCount": 1,
"sizeBytes": 45230,
"status": "Delivered",
"spfResult": "Pass",
"dkimResult": "Pass",
"dmarcResult": "Pass",
"isSpam": false,
"spamScore": 1.2,
"receivedAt": "2026-02-17T14:30:00Z",
"expiresAt": "2026-03-19T14:30:00Z",
"envelopeFrom": "[email protected]",
"replyTo": "[email protected]",
"messageId": "<[email protected]>",
"inReplyTo": null,
"dateHeader": "2026-02-17T14:30:00Z",
"authResultsHeader": "spf=pass dkim=pass dmarc=pass",
"spamReason": null,
"sourceIp": "203.0.113.5",
"heloHostname": "mail.example.com",
"processingError": null,
"processedAt": "2026-02-17T14:30:01Z",
"envelopeRecipients": [
{ "address": "[email protected]", "localPart": "support", "matchedRouteId": "r7k3m9q2p4w8x1" }
],
"headerRecipients": [
{ "type": "To", "address": "[email protected]", "name": null }
],
"attachments": [
{ "id": "a3k7m2q9p4w1x8", "fileName": "screenshot.png", "contentType": "image/png", "sizeBytes": 34500, "isInline": false, "contentId": null }
],
"webhookAttempts": [
{ "attemptNumber": 1, "status": "Delivered", "webhookUrl": "https://yourapp.com/webhooks/inbound", "httpStatusCode": 200, "errorMessage": null, "durationMs": 145, "attemptedAt": "2026-02-17T14:30:02Z", "nextRetryAt": null }
]
}Kimlik Doğrulama Sonuçları
Her gelen e-posta, SPF, DKIM ve DMARC doğrulama sonuçlarını içerir. Olası değerler her kontrol için
farklıdır: headerRecipients[].type "To", "Cc" veya "Bcc" değerini alır (bu büyük/küçük harf
biçimiyle), ve dateHeader ham RFC 2822 başlık dizesi değil, ISO 8601 zaman damgasıdır.
spfResult | Açıklama |
|---|---|
None | SPF kaydı bulunamadı veya kontrol yapılmadı |
Pass | Gönderen yetkili |
Fail | Gönderen yetkili değil |
SoftFail | Gönderen yetkili olmayabilir |
Neutral | Yetkilendirme hakkında bir bildirim yok |
TempError | Geçici DNS hatası |
PermError | Kalıcı DNS hatası |
dkimResult | Açıklama |
|---|---|
None | DKIM imzası bulunamadı veya kontrol yapılmadı |
Pass | İmza doğrulandı |
Fail | İmza doğrulaması başarısız |
TempError | Geçici DNS hatası |
PermError | Kalıcı DNS hatası |
dmarcResult | Açıklama |
|---|---|
None | DMARC politikası bulunamadı veya kontrol yapılmadı |
Pass | Hizalama başarılı |
Fail | Hizalama başarısız |
Quarantine | Politika karantinayı öneriyor |
Reject | Politika reddi öneriyor |
Ham E-postayı İndir
GET https://api.mail.land/v1/transactional/inbound/emails/{id}/rawcurl https://api.mail.land/v1/transactional/inbound/emails/{id}/raw \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-o email.emlOrijinal ham e-postayı (RFC 5322 biçiminde) indirilebilir bir dosya olarak döndürür.
E-postaları Sil
Tek bir e-postayı sil:
DELETE https://api.mail.land/v1/transactional/inbound/emails/{id}curl -X DELETE https://api.mail.land/v1/transactional/inbound/emails/{id} \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."E-postaları toplu sil:
POST https://api.mail.land/v1/transactional/inbound/emails/bulk-delete{
"ids": ["k7m2x9q4p1w8z3", "p3q8w2x7m9k4z1", "w9k3p7m2q8x4z6"]
}curl -X POST https://api.mail.land/v1/transactional/inbound/emails/bulk-delete \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{
"ids": ["k7m2x9q4p1w8z3", "p3q8w2x7m9k4z1", "w9k3p7m2q8x4z6"]
}'Aynı e-posta grubunu tek bir çağrıda spam olarak işaretlemek için aynı {"ids": [...]} gövdesine sahip POST /v1/transactional/inbound/emails/bulk-mark-spam de mevcuttur.
Karantina
isSpam: true olan e-postalar burada görünür (virüs taraması yoktur ve ayrı bir Quarantined durumu yoktur; spam yalnızca bir boole bayrağıdır). Karantinadaki e-postaları görüntüle:
GET https://api.mail.land/v1/transactional/inbound/quarantinecurl https://api.mail.land/v1/transactional/inbound/quarantine \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."Bir e-postayı karantinadan serbest bırak:
POST https://api.mail.land/v1/transactional/inbound/quarantine/{id}/releasecurl -X POST https://api.mail.land/v1/transactional/inbound/quarantine/{id}/release \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."Bir e-postayı serbest bırakmak yalnızca isSpam bayrağını temizler. Yönlendirmeyi yeniden çalıştırmaz ve webhook'ları yeniden göndermez. Serbest bırakılan (veya herhangi bir) e-posta için webhook'u yeniden teslim etmek üzere POST /v1/transactional/inbound/emails/{id}/replay-webhook çağrısı yapın: bu, eşleşen rotanın webhook'una tek bir kalıcı teslimatı sıraya alır ve 202 Accepted döndürür (bkz. Inbound Webhooks). İsteğe bağlı bir ?addToAllowlist=true sorgu parametresi, serbest bırakma sırasında gönderen kişiyi de izin listesine ekler.
İzin Listesi ve Engelleme Listesi
İzin Listesi
İzin listesindeki gönderenlerden gelen e-postalar spam filtrelemesini atlar:
GET https://api.mail.land/v1/transactional/inbound/allowlistcurl https://api.mail.land/v1/transactional/inbound/allowlist \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."POST https://api.mail.land/v1/transactional/inbound/allowlist{
"pattern": "[email protected]",
"matchType": "ExactEmail",
"description": "Trusted partner"
}curl -X POST https://api.mail.land/v1/transactional/inbound/allowlist \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{
"pattern": "[email protected]",
"matchType": "ExactEmail",
"description": "Trusted partner"
}'Sayı olarak değil, dize olarak döndürülür ve gönderilir:
| Eşleşme Türü | Açıklama |
|---|---|
ExactEmail | Tam e-posta adresiyle eşleşir |
Domain | Bir alan adından gelen tüm e-postalarla eşleşir |
WildcardPattern | Joker karakter deseniyle eşleşme |
Engelleme Listesi
Engelleme listesindeki gönderenlerden gelen e-postalar otomatik olarak işlenir:
GET https://api.mail.land/v1/transactional/inbound/blocklistcurl https://api.mail.land/v1/transactional/inbound/blocklist \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."POST https://api.mail.land/v1/transactional/inbound/blocklist{
"pattern": "[email protected]",
"matchType": "ExactEmail",
"action": "RejectAtSmtp",
"description": "Known spammer"
}curl -X POST https://api.mail.land/v1/transactional/inbound/blocklist \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{
"pattern": "[email protected]",
"matchType": "ExactEmail",
"action": "RejectAtSmtp",
"description": "Known spammer"
}'Sayı olarak değil, dize olarak döndürülür ve gönderilir. Belirtilmezse varsayılan eylem MarkAsSpam'dır:
| Engelleme Eylemi | Açıklama |
|---|---|
RejectAtSmtp | SMTP düzeyinde reddet (550 yanıtı) |
MarkAsSpam | Kabul et ancak spam olarak işaretle (varsayılan) |
Drop | E-postayı sessizce düşür |
İzin listesinden veya engelleme listesinden sil:
DELETE https://api.mail.land/v1/transactional/inbound/allowlist/{id}
DELETE https://api.mail.land/v1/transactional/inbound/blocklist/{id}# Delete from allowlist
curl -X DELETE https://api.mail.land/v1/transactional/inbound/allowlist/{id} \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
# Delete from blocklist
curl -X DELETE https://api.mail.land/v1/transactional/inbound/blocklist/{id} \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."Gelen İstatistikleri
GET https://api.mail.land/v1/transactional/inbound/statscurl https://api.mail.land/v1/transactional/inbound/stats \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."| Parametre | Tür | Açıklama |
|---|---|---|
domainId | string | Alan adının genel kimliğine göre filtrele |
from | datetime | Bu andan itibaren receivedAt alanına göre filtrele |
to | datetime | Bu günün sonundan önce receivedAt alanına göre filtrele |
{
"totalEmails": 1500,
"todayEmails": 42,
"receivedCount": 1500,
"processingCount": 5,
"processedCount": 1345,
"failedCount": 20,
"spamCount": 80,
"webhookFailedCount": 3,
"storageUsedBytes": 52428800,
"byDomain": [
{ "domainId": "k3v9x2m8q1w7z4", "domainName": "yourdomain.com", "count": 1500 }
],
"byStatus": { "Received": 5, "Processing": 5, "Processed": 1345, "Delivered": 1300, "Failed": 20, "Expired": 50 },
"dailyStats": [
{ "date": "2026-02-17", "total": 120, "processed": 115, "spam": 8 }
]
}spamRate/averageSizeBytes alanı yoktur; yukarıdaki yapı eksiksizdir.
Hata Yanıtları
| Durum | Kod | Açıklama |
|---|---|---|
400 | VALIDATION_FAILED | Geçersiz istek parametreleri |
403 | FORBIDDEN | Yetersiz izinler |
404 | RESOURCE_NOT_FOUND | E-posta bulunamadı |
Sonraki Adımlar
- Rotalar: gelen e-postalar için yönlendirme kurallarını yapılandırın
- Webhook'lar: ayrıştırılmış e-posta verilerini webhook ile alın
- Alan Adları: gelen işleme için MX kayıtlarını ayarlayın