1984’teki gibi e-posta sunucusunu kendin işletmek
(maxadamski.com)- E-posta sunucusunu doğrudan işletmek, otomasyon işleri ile mailing list yönetimini düşük maliyetle yapmayı mümkün kılar
- Teslimat güvenilirliği sorunu pratikte vardır; büyük servislerle e-posta gönderme/alma başarısız olabilir
- Postfix ve OpenDKIM yapılandırması ile temel bir SMTP ve kimlik doğrulamalı e-posta gönderim sistemi kurulabilir
- SSL sertifikası, DKIM, SPF, DMARC ayarlarıyla e-posta güvenilirliği ve iletim güvenliği artırılabilir
- PTR (ters DNS) kaydı da ayarlanırsa büyük e-posta servislerine teslim oranının yükselmesi beklenebilir
Genel bakış
E-posta sunucusunu doğrudan işletmek, mailing list, bülten, e-posta doğrulama API’si gibi otomasyon işleri için kullanışlıdır
Ancak en büyük pratik zorluk e-posta teslimat güvenilirliğidir; postaların düzgün ulaşmaması veya alımın başarısız olması riski vardır
Yazar, bu riskleri kabul etmek koşuluyla bu yaklaşımı kişisel projelerinde uyguluyor
Kendi başına işletmenin avantajı, neredeyse ek maliyet gerektirmemesidir; mevcut web sitesine yalnızca yazılım kurmak yeterlidir ve depolama ile enerji tüketimi de çok düşüktür
E-posta sunucusu işletmenin çok zor olduğu düşünülse de, gerçekte zorluk seviyesi SaaS tipi e-posta servisi kurmaktan çok farklı değildir
Ayar kolaylığı ve sadeleştirme için webmail ve çok kullanıcılı ortam şimdilik dışarıda bırakılmış; böylece kullanıcı hesabı, veritabanı ve web arayüzü kurulumuna gerek kalmamıştır
Bu kurulum tek hesapla kullanım için uygundur; gerektiğinde SSH ve mailx, sendmail, mutt üzerinden e-posta gönderip almak da mümkündür
İleride ihtiyaçlara göre genişletme ve webmail ekleme de düşünülebilir
Postfix
Temel olarak 25 numaralı portu açıp Postfix ve OpenDKIM kurup yapılandırmak, temel bir SMTP sunucusu oluşturmak için yeterlidir
Çoğu e-posta servisine (Gmail gibi) postaları güvenilir biçimde ulaştırmak için OpenDKIM (posta kimlik doğrulaması) gerekir
Yazar, master.cf dosyasını varsayılan haliyle bırakmış; ana yapılandırma (main.cf) örneğinde ise TLS şifreleme, DKIM entegrasyonu gibi yalnızca temel ayarlar gösterilir
POP3/IMAP yapılandırılmadan bırakılmış; gerekirse SSH ile doğrudan sunucuya bağlanıp mailx gibi komutlarla posta gönderip alınabilecek şekilde sadeleştirilmiştir
TLS (iletim şifrelemesi)
SSL sertifikası, SMTP sunucusuyla veri aktarımını şifrelemek için gereklidir
Her alan adı için ayrı sertifika almaya gerek yoktur; e-posta sunucusunun bulunduğu tek hostun (MX kaydı için) sertifikası olması yeterlidir
Örneğin MX kaydı mx.example.com ise, yalnızca bu alan adı için Let’s Encrypt’ten ücretsiz sertifika alıp uygulamak yeterlidir
TLS yalnızca sunucular arası gönderim/alım bölümünü şifreler; gerçek gönderici alan adının doğrulanmasından ayrıdır
Bu nedenle e-posta adresinin From başlığında istenen değer serbestçe ayarlanabilir
DKIM, SPF, DMARC
DKIM, postanın gerçekten size ait alan adından geldiğini kanıtlamak ve güvenilirlik sağlamak için kullanılır
OpenDKIM ile her alan adı için anahtar çifti oluşturulur ve açık anahtar DNS TXT kaydı olarak eklenir
Anahtarlar otomatik olarak süresi dolmaz, ancak düzenli rotasyon önerilir
Hangi hostların posta gönderebileceğini ve DMARC ilkesini (ör. doğrulama başarısızsa reddet) belirlemek için SPF ve DMARC TXT kayıtları da DNS’e eklenir
Örnek yapılandırma dosyalarında (opendkim.conf, KeyTable, SigningTable, TrustedHosts) her öğenin nasıl ayarlanacağı açıkça görülebilir
DNS’e yalnızca MX, SPF, DKIM ve DMARC ile ilgili kayıtları eklemek yeterlidir
Ters DNS (PTR)
PTR kaydı (ters DNS), e-posta sunucusunun güvenilirliğini artırarak büyük servislerin (Gmail vb.) postaları engelleme ihtimalini azaltır
ISS ile iletişime geçip e-posta sunucusu için PTR kaydı tanımlanmasını istemek gerekir
Gerçek dağıtım ortamında PTR kaydı olmadan da Gmail, GMX ve Outlook’ta normal teslim alındı ve mail-tester.com üzerinde 10/10 puan alındı
PTR ayarsız olduğu için puan kırıldı, ancak "trusted relay" ile ek puan kazanıldı
Kara listelerde de yer almadığından gönderim IP’sinin itibarı da iyi durumdadır
Gmail gönderim testi
sendmail komutuyla Gmail’e test e-postası (HTML mesajı) gönderildi
Gmail’de posta hemen ulaştı ve TLS şifrelemesi doğrulandı
"Show original" üzerinden ham ileti görüntülendiğinde SPF, DKIM ve DMARC doğrulamalarının geçtiği görüldü
Sunucuda yerel olarak alınan postanın içeriği mailx ile kontrol edilebilir
Yapılandırmada sorun varsa DNS, sertifika ve DKIM anahtar erişim izinlerini yeniden kontrol etmek gerekir; özellikle OpenDKIM yapılandırma dosyaları yazım hatalarına karşı hassastır
Sonraki adımlar
Bir sonraki yazıda Python ile e-posta uygulamaları oluşturma yöntemi tanıtılacak
Soru veya görüşler için max@idx.cy adresiyle iletişime geçilebilir
1 yorum
Hacker News görüşü
20 yılı aşkın süredir e-postayı kendim barındırmış olmaktan gurur duyuyorum, ve bunu yapmaya devam etmeyi planlıyorum. Asıl ilginç olan, hükümetin veya ilgili kurumların kendi e-posta sistemlerini işletememesi; yalnızca ulusal güvenlik birimi kendi sistemini barındırıyor. Şans eseri olsa gerek, gönderim tarafında neredeyse hiç sorun yaşamadım. Yakın zamanda hatırladığım tek örnek, Microsoft’un postalarımı yutmasıydı; sebep de eski bir exim sürümü ile outlook tarafındaki TLS kimlik doğrulama uyumsuzluğuydu. Tek bir ayarı değiştirerek çözdüm. Bakım işi de çok zahmetli değil; ne zaman bir şeye dokunsam bunu yeni bir şey öğrenme fırsatı olarak görüyorum. Bu yıl Debian jessie’den Arch Linux’a geçtim ve cron görevlerini tamamen systemd zamanlayıcılarına taşıdım. Önemli bir e-posta gönderdiğimde mutlaka sunucu günlüklerini kontrol ederim; bunu da loglara doğrudan bakma alışkanlığı açısından iyi buluyorum. Tavsiye verecek olursam, kendi kendine barındırmayı bir hobi olarak görüp bundan keyif alabiliyorsanız çok daha iyi. Son olarak, Debian’da Exim yapılandırmasını tasarlayan kişi çok zaman kaybettirdi. Exim’i Debian’da kuracaksanız, resmi Upstream yapılandırmasına geçip onu kendinize göre özelleştirmek en doğru yol
Bugünün sosyal ağları “merkeziyetsizlik” ya da “açıklık” gibi kavramlarla övünüyor, ama aslında bizim zaten bağımsız ve tamamen kendi kendine yetebilen araçlarımız var. UX’i iyileştirdiklerini söylerken, kullanıcıların kontrolü kaybettiğini sık sık gözden kaçırıyorlar. Sonunda aşırı basitleştirilmiş sistemlere alıştıkça, gelecekte uzaktaki birileri “işlemi” onaylamazsa tek bir uygulama bile kuramayacağınız bir dünyaya varıyoruz
Üniversite yıllarımda (WWW’den önce) ilk kez e-posta kullandım; sonra da ISP hesabımın çok sınırlı depolama alanı ve yalnızca POP desteği olduğu için kendi posta sunucumu çalıştırmaya başladım. Sürekli internete bağlı olmadığımız zamanlardı, bu yüzden relay ve dinamik DNS ile posta alıyordum. Şimdi bir VPS üzerinden evdeki sunucuma postaları alıp depoluyorum. Yıllar içinde Outlook gibi büyük posta servislerinden IP veya alan adı engelini kaldırmalarını istemem gerektiği oldu, ama çok sık değildi. Dünyanın e-postasını iki üç şirketin yönetmesini istemediğim için, bunu küçük bir direniş biçimi olarak görüyorum
Keşke 20 yıl önceki motivasyonumun yüzde 1’i bile bugün kalmış olsaydı diye düşünüyorum. Artık tam zamanlı iş ve ailem (eşim ve çocuğum) nedeniyle böyle işlere ayıracak vaktim yok
Ben de bir dönem kendi kendine barındırmadan uzaklaştım, ama zaman/maliyet dengesi değiştikçe tekrar yapmaya değip değmeyeceğini düşünüyorum. E-posta barındırmada en çok düşündüren konu spam yönetimi. Bugünlerde durum nasıl, varsa ipucu paylaşır mısınız
Benim için e-posta çok kritik bir hizmet. 15 yıl kendi kendime barındırdıktan sonra bırakma nedenlerim şunlardı: 1) düzenli yedekleme/kurtarma ve izleme işini iyi yapamıyordum, 2) felaket kurtarma planım olmadığı için diğer hizmetlere göre daha pahalıya geliyordu, 3) güvenliğe sürekli dikkat edemiyordum. Bir arkadaşımın sunucusu ransomware yüzünden tüm verisini kaybetti, ben ise FreeBSD kullandığım için kurtuldum (saldırının hedefi değildi). Genel olarak bakım karmaşık değil, ama bir kez işler karışırsa gerçekten çok yorucu ve hatta ölümcül olabilir
Eskiden e-postayı kendim barındırıyordum, ama bırakma nedenim itibar değil; %100 erişilebilirlik zorunluluğundan kaçamamak, bunun da posta kaybı veya kara liste riskine yol açmasıydı. E-posta protokolü teoride kesintilere dayanıklı olsa da, pratikte büyük sağlayıcılar tek bir sorun olduğunda hemen postayı reddediyor ve tekrar denemiyor. Eskiden GitHub da bir kez bounce alınca sizi “teslim edilemez” diye işaretliyor ve sonrasında hiç posta göndermiyordu. Şimdi düzelmiş olabilir ama modern e-posta sistemleri “her zaman çevrimiçi” varsayımıyla çalışıyor
Benim posta sunucum, özellikle ilk kez gelen postayı reddeden bir greylist özelliği kullanıyor. Çok sayıda posta aldım ama meşru bir postanın hiç teslim edilmediği bir örnek yaşamadım. Yeniden gönderim e-posta standardının içine gömülü, bu yüzden endişeniz varsa yedek bir gelen posta sunucusu ekleyip LMTP ile backhaul yapabilirsiniz. E-posta sistemi zaten 24 saat sürekli bağlı olunmayan bir dönem düşünülerek tasarlandı
Bunlar biraz abartı. Benim deneyimimde bir posta gelmezse birkaç saat ya da bir gün sonra yeniden ulaşıyordu ve sorunun tam olarak nerede patladığını bilmenin genelde bir yolu yoktu. Kimlik doğrulamayı düzgün yaparsanız (ör. dkim, spf), kendi kendine barındırmada da %99’un üzerinde teslim olasılığı sağlayabilirsiniz. Karmaşıklıktan korkmaya gerek yok. Bonus olarak caldav’ı da özel kullanım için değerlendirebilirsiniz
Sunucu birkaç saat kapalı kaldığında neden “posta kaybı” diye endişe edildiğini merak ediyorum. Benim sunucum 219 gündür aralıksız çalışıyor. Gündelik işlerde uğraştığımız şeylerle kıyaslayınca e-posta sunucusu işletmek gerçekten çok kolay
Modern e-posta sistemine gerçekten bakınca insana “oğluma ne yaptınız” dedirtiyor
Kendi e-posta barındırmasına başlamak isteyenlere tavsiyem: önce yalnızca hesap kayıtları için kullanılan bir adresi kendiniz barındırarak deneyin. Başlangıçta kişisel yazışmalar için kullanmanız şart değil. “Mail-in-a-box” ile https://mailinabox.email./ kurulum kılavuzunu izleyerek birkaç saat içinde sistemi ayağa kaldırabilir ve gayet iyi çalıştırabilirsiniz. Bunu 1-2 yıl kullanıp yeterince alıştıktan sonra ancak o zaman kişisel yazışmalarınızı taşımayı öneririm
Stalwart https://github.com/stalwartlabs/stalwart tavsiye ederim. Tek bir binary içinde tamamlanan bir posta hizmeti; bağımlılığı yok ve kurulum/güncelleme aşırı kolay. Birçok başka projeyi denedim ama Stalwart en rahatıydı ve tek bir sorun olmadan çalıştı
Yıllardır MIAB’i bulutta işletiyorum. IP itibarı temizse gönderimde sorun çıkmıyor, ama Outlook tarafına posta gitmediğinde çözmek için doğrudan Microsoft postmaster’a e-posta atıyorum. DKIM/SPF/DMARC gibi ayarları öğrenmek açısından eğitim değeri yüksek, o yüzden tavsiye ederim. Yalnız üyelik kayıt e-postalarını almak gerçekten zor. MIAB’in greylist özelliği ilk kez gelen göndericiyi reddedip yeniden denemesini bekliyor, ama normal siteler bile bazen yeniden denemiyor. Doğrulama veya 2FA kodu e-postaları çok geç geliyor ve spam filtresini geçici olarak kapatmanın da kolay bir yolu yok
Bugünlerde ISP’nin verdiği e-posta hizmetlerinde, hatta Google Gmail’de bile spam filtreleme gibi konularda zaman zaman sorun çıkıyor. Örneğin Shopify üzerinden sipariş verdiğimde, shopify e-postaları Gmail’de sürekli spam’e düşüyor. DMARC, SPF ve DKIM’in hepsi geçmesine rağmen neden olduğunu anlamak zor. E-posta alıp göndermek teknik olarak çok zor değil ve hangi hizmeti kullanırsanız kullanın hiçbir şey %100 kusursuz değil. Kötü niyetli kullanıcılar (spam gönderenler) o kadar fazla ki bu sistemin bu kadar iyi çalışması bile şaşırtıcı
DMARC, SPF, DKIM gibi şeyler yalnızca kimlik doğrulama ayarlarıdır; bir postanın spam olup olmamasıyla doğrudan ilgili değildir. Düzgün kimlik doğrulanmış çöp postalar da vardır, doğrulanmamış ama çok değerli postalar da
Shopify postalarının spam’e düşmesinin nedeni, Shopify’ın çok sayıda kişi tarafından spam olarak işaretlenmesi ya da ortak kullandığı posta sunucularında itibarı kötü kullanıcıların bulunmasıdır. Ben sürekli spam değil diye işaretlesem de, genel gönderici itibarı çok kötü olduğunda spam klasöründen çıkamaz
Yaklaşık 20 yıldır e-postayı kendim barındırıyorum. 10-15 yıl boyunca tüm postaları Gmail’e yönlendirdim, ama önemli iletileri bile yok eden spam filtresinden bıkınca doğrudan kendi imapd’mi çalıştırmaya başladım. SPF gibi şeyleri düzgün ayarlarsanız kendi kendine barındırma çok daha iyi hissettiriyor
Asıl sorun bu tür filtreleme politikaları. Kendi kendine barındırdığınızda ya da küçük bir e-posta hizmeti kullandığınızda, özellikle Gmail gibi katı filtreler yüzünden postanızın engellenme ihtimali çok daha düşük oluyor. Google, spam’in başlıca kaynaklarından biri olan çok sayıdaki Gmail kullanıcısına rağmen hâlâ saldırgan filtreleme politikalarını sürdürüyor
Son zamanlarda Gmail’in spam filtresi pazarlama e-postalarına karşı aşırı hassaslaştı. 10 yıl önce durum tersiydi, şimdi ise çok fazla ileti spam klasörüne düştüğü için can sıkıcı. Hatta günümüzde spam’in önemli bir kısmı küçük ve yeni adreslerden gelen soğuk e-postalar. Gmail’in pazarlama e-postaları için “abonelikten çık” özelliği iyi çalışıyor ama bu tür soğuk e-postalarda işe yaramıyor
Tam kurulumlu ve çeşitli istemcilerle entegre olabilen bir IMAP sunucusu istiyorsanız, https://workaround.org/ispmail-bookworm/ kılavuzu daha uygun. Ben veritabanı yerine düz metin dosyalarıyla basit bir yapı kullanıyorum. Tek kullanıcı bensem bu şekilde yeterli oluyor ve bu kılavuz büyük ölçekli kurumsal kullanım için de rahatça genişletilebilir
Küçük bir tanıtım: Kendi kendine barındırılan bir alternatif oluşturan Hyvor Relay https://github.com/hyvor/relay için beta test yapıyoruz. DKIM/SPF izleme ve DNS otomasyonu gibi görünürlük konularına odaklanıyoruz. Tek bir Docker compose up ile hemen çalıştırılabiliyor https://relay.hyvor.com/hosting/deploy-easy
10-15 yıldır ucuz bir kimsufi kutusunda opensmtp, dovecot ve rspamd ile e-postayı kendim barındırıyorum. Özel bir sorun yaşamadım; sadece bir kez telekom.de tarafında sunucum engellenmişti ama durumu resmi bir e-postayla açıklayınca hemen beyaz listeye aldılar. Sanırım aynı IP’yi uzun süredir kullanıyor olmamın da etkisi var; kişisel olarak herkesin anlattığı o büyük sorunları hiç yaşamadım. Yalnız sunucu ve IP benim adıma kayıtlı ve bana ait
Debian trixie tabanlı kendi e-posta barındırma üzerine Almanca bir yazıyı https://krei.se/Doc adresinde paylaşıyorum. Düzgün kurulduğunda gerçekten keyifli. Otomatik güncelleme ve yeniden başlatmalarla, özel systemd yapılandırması sayesinde her gün e-postayla durum raporu alıyorum. 2-3 yıl boyunca, trixie içinse en fazla 5 yıla kadar hiçbir şeye dokunmadan stabil kalıyor. E-posta sunucusu yazılımları artık yeterince olgun. Kendi kendine barındırmayı tavsiye ederim. Özerklik, huzur ve doğrudan kontrol gerçekten çok değerli
10 yıldan uzun süredir e-postayı kendim işletiyorum ve eski HN yorumlarımı da bazen bağlantı olarak bırakıyorum (ör. 39891262, 38471262). Digital Ocean IP’leri kötü niyetli olarak işaretlendiği için giden postayı Amazon SES ile değiştirdim; ayrıca Gmail’i ücretsiz bir spam eğitim aracı gibi kullanıp kendi filtremde değerlendiriyorum (38843288). Birçok kişinin söylediği gibi greylist çok yardımcı oluyor. Meşru posta sunucuları mutlaka yeniden denediği için, 2FA gibi durumlarda rahatsız edici olsa da sistem düzeyinde güvenilir. Birkaç günlük kesinti olsa da dert değil; alma ve depolama sunucularını ayırınca yedekleme de kolaylaşıyor (38512732). 2FA e-postaları için https://github.com/stevejenkins/postwhite ile birlikte kullanıyorum, ama aslında e-postayı 2FA amacıyla önermem (bu başlı başına ayrı bir tartışma konusu)
Yakın zamanda Amazon SES üzerinden gönderilen önemli bir e-postayı
bl.spamcop.netengeli yüzünden alamadım. Amazon birçok IP üzerinden yeniden denedi ve greylist’e takılınca sonunda bir deneme reddedildi. Büyük sağlayıcılar arasında (MX’ten MX’e) gönderimde bu çok sorun olmayabilir, ama bu yapı da %100 kusursuz bir çözüm değilSonuçta ne kadar uzun anlatırsak anlatalım, galiba varılan sonuç Gmail gibi büyük e-posta servislerini kullanmanın daha iyi olduğu
UUCP nerede, adresler neden bang path değil, sendmail.cf nereye gitti diye merak ediyorum
Aynen. 1984 usulü (klasik e-posta) kendi kendine barındırmaya kalkarsanız, tüm postaları ileten açık bir relay’e dönüşür ve türlü güvenlik açıklarına maruz kalırsınız
O günlerden söz açılmışken, üniversite laboratuvarında 6 Unix iş istasyonu arasında e-postaların bir sunucudan diğerine taşınmasını, diskten gelen seslerden postanın aktığını anlayarak yaşadığım günleri hatırlıyorum
Ben de başlığı görünce bang path ve “killer!jolet!” adresini düşündüm. Gerçekten özlenen zamanlardı
Katılıyorum. “1984” başlığına kanıp geldim ama karşıma sadece “postfix ayarı” konuşması çıktı, hayal kırıklığı oldu