Yuva’ya taşı’yı kendi sunucunuzda çalıştırmak için: yönlendirme alan adı, ayarlar, eski posta kutusunun yalnızca okunduğuna güvenmek için neyin denetleneceği ve çok çalışma alanlı bir sunucunun sınırları. Şimdilik yalnızca IMAP posta kutuları taşınabilir.
Yönlendirme alan adı
Posta kutusunu taşımak onsuz da çalışır: ekipler MX kayıtlarını değiştirerek geçer. Bir yönlendirme alan adıyla
her e-posta kanalı ayrıca <belirteç>@<yönlendirme alan adı> biçiminde bir
yönlendirme adresi alır; ekip eski posta kutusunu oraya yönlendirebilir.
-
Başka hiçbir posta sunucusunun işlemediği bir ad seçin, örneğin
forward.example.com, ve sunucuda ayarlayın:YUVA_FORWARDING_DOMAIN=forward.example.com -
Bu alan adının tüm e-postasını, bir kanalın kendi alan adıyla aynı biçimde Yuva’ya yönlendirin (Gelen e-posta altındaki üç yol). Belirteç
@işaretinden öncesidir, bu yüzden alan adının her adresi Yuva’ya ulaşmalı: Cloudflare Email Worker ile alan adında Email Routing’i açın ve catch-all kuralını Worker’a yönlendirin. Worker’da yeni bir şey gerekmez: iletiyi her zamanki gibi/ingress/emailiçin imzalar, kanalı Yuva belirteçten bulur. Bilinmeyen belirteçler reddedilir. -
Yeniden başlatın, Ayarlar → gelen kutusu → Müşteriler nereden yazıyor → E-posta’yı açın ve kanalın adresini gösterdiğini kontrol edin.
Sızan bir yönlendirme adresi yenilenerek değiştirilebilir; eskisine gelen e-posta o andan sonra reddedilir.
Ayarlar
Hepsi yapılandırma başvurusunda. Neyi sınırladıkları:
| Ayar | Sınırladığı |
|---|---|
YUVA_MIGRATION_SOURCES |
Ekiplerin başlatabileceği kaynaklar; başka kaynak istemek 422 hosted_limit olur. |
YUVA_MIGRATION_WORKERS |
Süreç başına aynı anda kopyalanan taşıma sayısı. Kopyalamaması gereken süreçlerde 0 yapın. |
YUVA_MIGRATION_MAX_ACTIVE |
Bir çalışma alanının aynı anda taradığı, kopyaladığı ya da eşitlediği taşımalar. |
YUVA_MIGRATION_MAX_BYTES |
Bir çalışma alanının ayda aktardığı bayt; sınıra gelince kopya sonraki aya kadar bekler. |
YUVA_MIGRATION_MAX_MESSAGE_BYTES |
Tek bir ileti; daha büyükler atlanır ve sayılır. |
YUVA_MIGRATION_SYNC_MAX_DAYS |
Bir taşımanın kopyadan sonra eski posta kutusunu ne kadar okumaya devam edeceği; sonra durur ve kimlik bilgilerini siler. |
YUVA_MIGRATION_AUDIT_DAYS |
Bir taşımanın etkinliğinin bittikten sonra ne kadar tutulacağı. |
YUVA_FORWARDING_DOMAIN |
Kanalların yönlendirme adresi olup olmadığı. |
YUVA_MIGRATION_ALLOW_PRIVATE |
Özel ağlardaki posta sunucularına izin verilip verilmediği (aşağıda). |
Her bağlantı denemesi taşıma başına saatte 10, çalışma alanı başına saatte 30 ile sınırlıdır; art arda üç başarısız oturum açma denemeleri 15 dakika durdurur, böylece sunucu bir sağlayıcıda şifre tahmin etmek için kullanılamaz.
Özel adresler
Yuva bir posta sunucusunun adını bir kez çözer ve adreslerden biri özel, loopback ya da yerel ağdaysa
reddeder; web kancalarında ve SMTP sunucularında olduğu gibi. Link-local ve bulut metadata adreslerine hiçbir
zaman izin verilmez. Kendi ağınızdaki bir sunucudan taşımak ya da Yuva’ya taşımayı yerel bir test sunucusunda
denemek için YUVA_MIGRATION_ALLOW_PRIVATE=true yapın; sunucu açılışta uyarı yazar. Paylaşılan bir
sunucuda kapalı bırakın.
Eski posta kutusunun yalnızca okunduğunu denetleme
Söz üç katmana dayanır (Yuva ne yapar). Her birini deponun bir kopyasında kendiniz denetleyebilirsiniz.
-
Koruma.
api/içindego test ./...,TestIMAPGuardRefusesWrites(yazan her komut, her yazılışıyla, soketa tek bayt ulaşmadan reddedilir) veTestOnlyImapreadImportsClient(IMAP istemcisini yalnızcaimapreadpaketi, yalnızca salt okunur açışlarla vePEEKile kullanabilir) testlerini çalıştırır. Biri başarısız olursa derleme başarısız olur. Koruma çalışma anında bir posta kutusuna giden bir komutu durdurursa taşımasource_write_refusedkaydeder. -
Her şeyi kaydeden bir posta kutusu.
deploy/compose.yaml’ınmigrate-testprofili, test posta kutularıyla Dovecot çalıştırır ve her oturumu<fixtures>/<user>/rawlogiçine yazar:cd api && go run ./internal/migrate/testdata/gen -out /tmp/yuva-migrate-fixtures cd ../deploy && docker compose --profile migrate-test up -d dovecot export YUVA_TEST_IMAP_URL=imaps://:migrate-test-only@127.0.0.1:59993Bir geliştirme sunucusundan test posta kutusunu taşıyın (
YUVA_MIGRATION_ALLOW_PRIVATEaçık), sonra sunucunun aldığı komutları listeleyin. YalnızcaCAPABILITY,NOOP,LOGOUT,STARTTLS,LOGIN,AUTHENTICATE,LIST,STATUS,EXAMINE,UNSELECT,SEARCHveFETCH(UID …olarak da) görünebilir:cat /tmp/yuva-migrate-fixtures/<user>/rawlog/*.in | tr -d '\r' \ | awk 'NF >= 3 { c = toupper($3); if (c == "UID") c = c " " toupper($4); print c }' | sort -u -
Posta kutusunun kendisi.
YUVA_TEST_IMAP_URLayarlıykengo test ./internal/migrate/imapread -run TestDovecotSourceUnchanged, bir test posta kutusunu taşır ve her iletiyi, bayrağı ve sayacı öncesiyle sonrasıyla karşılaştırır.
Kimlik bilgileri ve denetim
Bir posta kutusunun kullanıcı adı ve şifresi girildiği anda YUVA_MASTER_KEY ile mühürlenir ve yalnızca bir iş
diliminde açılır. Hiçbir iş argümanında, olayda, günlükte ya da yanıtta görünmez. Yuva onları taşıma
tamamlandığında ya da iptal edildiğinde, YUVA_MIGRATION_SYNC_MAX_DAYS dolduğunda, değiştirildiklerinde ve
çalışma alanıyla birlikte siler. Ana anahtarı diğerleri gibi yedekleyin (kurulum rehberi):
onsuz duraklatılmış bir taşıma sürdürülemez.
Bir taşımadaki her eylem (kim, hangi istemciden, ne) bittikten sonra YUVA_MIGRATION_AUDIT_DAYS boyunca
etkinlik olarak tutulur ve saklama işi tarafından silinir. Günlükler taşımanın ve çalışma alanının kimliklerini,
durumları, hata kodlarını ve sayıları yazar; konu, adres ya da gövde yazmaz.
Barındırılan sınırlar
Yuva’ya taşımayı birçok çalışma alanına sunan bir sunucuda, planlarınıza uyan sınırları ayarlayın. Bir sınırın
aşılması 422 hosted_limit ile reddedilir ve sorunun limit alanı ayarı adlandırır:
limit |
Ne zaman |
|---|---|
YUVA_MIGRATION_SOURCES |
Çalışma alanı sunucunun sunmadığı bir kaynak seçti. |
YUVA_MIGRATION_MAX_ACTIVE |
Çalışma alanı izin verilen kadar taşıma çalıştırırken bir tane daha başlatıyor. |
YUVA_MIGRATION_MAX_BYTES |
Çalışma alanı bu ay izin verilen kadar bayt aktardı. Kopya bir hosted_limit hatası kaydeder, sonraki ayın birine (UTC) kadar bekler ve kendiliğinden sürer. |
Kapasite
Bir taşıma tek bağlantıyla okur ve kaynağının bütçesi hızında kopyalar: Gmail ve Google Workspace için günde
1.500 MB, diğerleri için saniyede 4 MB. Büyük bir posta kutusunun ne kadar süreceğini sunucunuz değil yavaş
kaynaklar belirler; her süreç aynı anda YUVA_MIGRATION_WORKERS taşıma çalıştırır, bu yüzden aynı anda
taşınmasını beklediğiniz çalışma alanı sayısıyla artırın. Aktarılan e-posta canlı e-postayla aynı depolamayı
kullanır; “Özgün mesajları sakla” her iletinin kaynağını ayrıca saklar.