Kendi Kendine Barındırılan
Başlarken
Kendi barındırdığımız e-posta çözümümüz, tüm ürünlerimiz gibi, hem ön uç hem de arka uç olarak %100 açık kaynaklıdır. Bu da şu anlama gelir:
- Tam Şeffaflık: E-postalarınızı işleyen her kod satırı kamunun incelemesine açıktır.
- Topluluk Katkıları: Herkes iyileştirmeler sunabilir veya sorunları giderebilir.
- Açıklık Yoluyla Güvenlik: Güvenlik açıkları küresel bir topluluk tarafından tespit edilip giderilebilir.
- Tedarikçiye Bağlılık Yok: Şirketimizin varlığına asla bağımlı değilsiniz.
Tüm kod tabanı GitHub'da https://github.com/forwardemail/forwardemail.net, adresinde MIT Lisansı altında lisanslı olarak mevcuttur.
Mimaride şunlar için kapsayıcılar bulunur:
- Giden e-posta için SMTP sunucusu
- E-posta alımı için IMAP/POP3 sunucuları
- Yönetim için web arayüzü
- Yapılandırma depolama için veritabanı
- Önbelleğe alma ve performans için Redis
- Güvenli, şifreli posta kutusu depolaması için SQLite
Note
kendi kendine barındırılan blog'imize göz atmayı unutmayın
Daha ayrıntılı, adım adım bir versiyonla ilgilenenler için Ubuntu veya Debian tabanlı kılavuzlarımıza göz atın.
Gereksinimleri
Kurulum betiğini çalıştırmadan önce aşağıdakilere sahip olduğunuzdan emin olun:
- İşletim Sistemi: Linux tabanlı bir sunucu (şu anda Ubuntu 22.04+ sürümünü desteklemektedir).
- Kaynaklar: 1 sanal işlemci ve 2 GB RAM
- Kök Erişimi: Komutları çalıştırmak için yönetici ayrıcalıkları.
- Alan Adı: DNS yapılandırmasına hazır özel bir alan adı.
- Temiz IP: Kara listeleri kontrol ederek sunucunuzun daha önce spam geçmişi olmayan temiz bir IP adresine sahip olduğundan emin olun. Daha fazla bilgi için Burada adresini ziyaret edin.
- 25 numaralı bağlantı noktasını destekleyen genel IP adresi
- ters PTR adresini ayarlayabilme
- IPv4 ve IPv6 desteği
Tip
harika posta sunucusu sağlayıcıları listemize bakın
Bulut başlatma / Kullanıcı verileri
Çoğu bulut sağlayıcısı, sanal özel sunucu (VPS) sağlandığında bir bulut başlatma yapılandırmasını destekler. Bu, komut dosyasının ilk kurulum mantığı tarafından kullanılmak üzere bazı dosyaları ve ortam değişkenlerini önceden ayarlamanın harika bir yoludur ve komut dosyası çalışırken ek bilgi isteme ihtiyacını ortadan kaldırır.
Seçenekler
EMAIL
- certbot son kullanma tarihi hatırlatmaları için kullanılan e-postaDOMAIN
- kendi barındırma kurulumu için kullanılan özel alan adı (ör.example.com
)AUTH_BASIC_USERNAME
- siteyi korumak için ilk kurulumda kullanılan kullanıcı adıAUTH_BASIC_PASSWORD
- siteyi korumak için ilk kurulumda kullanılan parola/root/.cloudflare.ini
- (Yalnızca Cloudflare kullanıcıları) certbot tarafından DNS yapılandırması için kullanılan Cloudflare yapılandırma dosyası. API belirtecinizidns_cloudflare_api_token
aracılığıyla ayarlamanızı gerektirir. Burada hakkında daha fazla bilgi edinin.
Örnek:
#cloud-config
write_files:
- path: /root/.cloudflare.ini
content: |
dns_cloudflare_api_token = "xxx"
owner: root:root
permissions: '0600'
- path: /etc/profile.d/env.sh
content: |
export EMAIL="test@myemail.com"
export DOMAIN="mydomain.com"
runcmd:
- chmod +x /etc/profile.d/env.sh
{#install}'i yükleyin
Kurulum betiğini indirmek ve çalıştırmak için sunucunuzda aşağıdaki komutu çalıştırın:
bash <(curl -fsSL https://raw.githubusercontent.com/forwardemail/forwardemail.net/master/self-hosting/setup.sh)
Hata ayıklama yükleme betiği
Ayrıntılı çıktı için kurulum betiğinin önüne DEBUG=true
ekleyin:
DEBUG=true bash <(curl -fsSL https://raw.githubusercontent.com/forwardemail/forwardemail.net/master/self-hosting/setup.sh)
İstemleri
1. Initial setup
2. Setup Backups
3. Setup Auto Upgrades
4. Renew certificates
5. Restore from Backup
6. Help
7. Exit
- İlk kurulum: En son yönlendirme e-posta kodunu indirin, ortamı yapılandırın, özel alan adınızı isteyin ve gerekli tüm sertifikaları, anahtarları ve gizli anahtarları ayarlayın.
- Yedekleme Kurulumu: Güvenli ve uzak depolama için S3 uyumlu bir depolama alanı kullanarak MongoDB ve Redis'i yedeklemek üzere bir cron kurulacaktır. Ayrıca, güvenli ve şifreli yedeklemeler için oturum açıldığında SQLite yedeklenecektir.
- Yükseltme Kurulumu: Altyapı bileşenlerini güvenli bir şekilde yeniden oluşturup yeniden başlatacak gecelik güncellemeleri arayacak bir cron kurulacaktır.
- Sertifikaları Yenile: SSL sertifikaları için Certbot / Lets Encrypt kullanılır ve anahtarların süresi her 3 ayda bir dolar. Bu, alan adınız için sertifikaları yenileyecek ve ilgili bileşenlerin kullanması için gerekli klasöre yerleştirecektir. Bkz. önemli dosya yolları
- Yedekten Geri Yükle: MongoDB ve Redis'in yedek verilerden geri yükleme yapmasını tetikleyecektir.
İlk Kurulum (Seçenek 1)
Başlamak için 1. Initial setup
seçeneğini seçin.
Tamamlandığında, bir başarı mesajı görmelisiniz. Bileşenlerin nasıl çalıştığını görmek için docker ps
komutunu bile çalıştırabilirsiniz. Bileşenler hakkında daha fazla bilgi aşağıda.
Hizmetleri
Hizmet Adı | Varsayılan Bağlantı Noktası | Tanım |
---|---|---|
Web | 443 |
Tüm yönetici etkileşimleri için web arayüzü |
API | 4000 |
Veritabanlarını soyutlamak için API katmanı |
Bree | Hiçbiri | Arka plan işi ve görev yürütücüsü |
SMTP | 465/587 |
Giden e-posta için SMTP sunucusu |
SMTP Bree | Hiçbiri | SMTP arka plan işi |
MX | 2525 |
Gelen e-posta ve e-posta yönlendirme için posta değişimi |
IMAP | 993/2993 |
Gelen e-posta ve posta kutusu yönetimi için IMAP sunucusu |
POP3 | 995/2995 |
Gelen e-posta ve posta kutusu yönetimi için POP3 sunucusu |
SQLite | 3456 |
SQLite veritabanı(ları) ile etkileşimler için SQLite sunucusu |
SQLite Bree | Hiçbiri | SQLite arka plan işi |
CalDAV | 5000 |
Takvim yönetimi için CalDAV sunucusu |
CardDAV | 6000 |
Takvim yönetimi için CardDAV sunucusu |
MongoDB | 27017 |
Çoğu veri yönetimi için MongoDB veritabanı |
Redis | 6379 |
Önbelleğe alma ve durum yönetimi için Redis |
SQLite | Hiçbiri | Şifrelenmiş posta kutuları için SQLite veritabanı(ları) |
Önemli dosya yolları
Not: Aşağıdaki Ana bilgisayar yolu /root/forwardemail.net/self-hosting/
'a göredir.
Bileşen | Ana bilgisayar yolu | Konteyner yolu |
---|---|---|
MongoDB | ./mongo-backups |
/backups |
Redis | ./redis-data |
/data |
Sqlite | ./sqlite-data |
/mnt/{SQLITE_STORAGE_PATH} |
Çevre dosyası | ./.env |
/app/.env |
SSL sertifikaları/anahtarları | ./ssl |
/app/ssl/ |
Özel anahtar | ./ssl/privkey.pem |
/app/ssl/privkey.pem |
Tam zincir sertifikası | ./ssl/fullchain.pem |
/app/ssl/fullchain.pem |
Sertifikalı CA'lar | ./ssl/cert.pem |
/app/ssl/cert.pem |
DKIM özel anahtarı | ./ssl/dkim.key |
/app/ssl/dkim.key |
Important
.env
dosyasını güvenli bir şekilde kaydedin. Arıza durumunda kurtarma için kritik öneme sahiptir.
Bunu /root/forwardemail.net/self-hosting/.env
dosyasında bulabilirsiniz.
Yapılandırması
İlk DNS kurulumu
Tercih ettiğiniz DNS sağlayıcınızda uygun DNS kayıtlarını yapılandırın. Parantez içindekilerin (<>
) dinamik olduğunu ve sizin değerinizle güncellenmesi gerektiğini unutmayın.
Tip | İsim | İçerik | TTL |
---|---|---|---|
A | "@", "." veya boş | <ip_adresi> | otomatik |
CNAME | API | <alan_adı> | otomatik |
CNAME | caldav | <alan_adı> | otomatik |
CNAME | kartdav | <alan_adı> | otomatik |
CNAME | fe-sıçramaları | <alan_adı> | otomatik |
CNAME | imap | <alan_adı> | otomatik |
CNAME | mx | <alan_adı> | otomatik |
CNAME | pop3 | <alan_adı> | otomatik |
CNAME | smtp | <alan_adı> | otomatik |
MX | "@", "." veya boş | mx.<alan_adı> (öncelik 0) | otomatik |
TXT | "@", "." veya boş | "v=spf1 a -all" | otomatik |
Ters DNS / PTR kaydı
Ters DNS (rDNS) veya ters işaretçi kayıtları (PTR kayıtları), e-posta sunucuları için önemlidir çünkü e-postayı gönderen sunucunun meşruiyetini doğrulamaya yardımcı olurlar. Her bulut sağlayıcısı bunu farklı şekilde yapar, bu nedenle ana bilgisayarı ve IP'yi ilgili ana bilgisayar adına eşlemek için "Ters DNS" eklemenin nasıl yapılacağını araştırmanız gerekir. Büyük olasılıkla sağlayıcının ağ bölümünde bulunur.
Port 25 Engellendi
Bazı İSS'ler ve bulut sağlayıcıları, kötü niyetli kişileri engellemek için 25 numaralı portu engeller. SMTP/giden e-posta için 25 numaralı portu açmak üzere bir destek talebi göndermeniz gerekebilir.
Katılım
-
Açılış Sayfasını Açın https://<alan_adı> adresine gidin ve <alan_adı> kısmını DNS ayarlarınızda yapılandırdığınız alan adıyla değiştirin. "E-postayı İlet" açılış sayfasını görmelisiniz.
-
Giriş Yapın ve Alan Adınızı Ekleyin
- Geçerli bir e-posta ve parola ile giriş yapın.
- Kurmak istediğiniz alan adını girin (bu, DNS yapılandırmasıyla eşleşmelidir).
- Doğrulama için gerekli MX ve TXT kayıtlarını eklemek üzere talimatları izleyin.
- Kurulumu Tamamlayın
- Doğrulamanın ardından, ilk takma adınızı oluşturmak için Takma Adlar sayfasına erişin.
- İsteğe bağlı olarak, Alan Adı Ayarları'nda Giden e-postalar için SMTP'yi yapılandırın. Bu, ek DNS kayıtları gerektirir.
Note
Sunucunuzun dışına hiçbir bilgi gönderilmez. Kendi kendine barındırma seçeneği ve ilk hesap, yalnızca yönetici girişi ve alan adlarını, takma adları ve ilgili e-posta yapılandırmalarını yönetmek için web görünümü içindir.
{#testing} test ediliyor
İlk takma adınız {#creating-your-first-alias} oluşturuluyor
- Takma Adlar Sayfasına gidin Takma ad yönetimi sayfasını açın:
https://<domain_name>/en/my-account/domains/<domain_name>/aliases
- Yeni Bir Takma Ad Ekleyin
- Takma Ad Ekle'ye tıklayın (sağ üst).
- Takma adı girin ve e-posta ayarlarınızı gerektiği gibi düzenleyin.
- (İsteğe bağlı) Onay kutusunu seçerek IMAP/POP3/CalDAV/CardDAV desteğini etkinleştirin.
- Takma Ad Oluştur'a tıklayın.
- Bir Parola Belirleyin
- Güvenli bir parola oluşturmak için Parola Oluştur'a tıklayın.
- Bu parola, e-posta istemcinize giriş yapmak için gerekli olacaktır.
- E-posta İstemcinizi Yapılandırın
- Thunderbird gibi bir e-posta istemcisi kullanın.
- Takma adınızı ve oluşturulan parolayı girin.
- IMAP ve SMTP ayarlarını uygun şekilde yapılandırın.
E-posta sunucusu ayarları
Kullanıcı adı: <alias name>
Tip | Ana bilgisayar adı | Liman | Bağlantı Güvenliği | Kimlik doğrulama |
---|---|---|---|---|
SMTP | smtp.<alan_adı> | 465 | SSL / TLS | Normal Şifre |
IMAP | imap.<alan_adı> | 993 | SSL / TLS | Normal Şifre |
İlk e-postanızı gönderme / alma
Yapılandırıldıktan sonra, yeni oluşturduğunuz ve kendi barındırdığınız e-posta adresinize e-posta gönderebilmeli ve alabilmelisiniz!
Sorun Giderme
Bu neden Ubuntu ve Debian dışında çalışmıyor?
Şu anda macOS'u desteklemeyi düşünüyoruz ve diğer platformlara da yöneleceğiz. Başka platformların da desteklenmesini istiyorsanız lütfen tartışma sayfasını açın veya katkıda bulunun.
Certbot acme challenge'ı neden başarısız oluyor?
En sık karşılaşılan hata, certbot / letsencrypt'in bazen 2 sorgu talep etmesidir. HER İKİ txt kaydını da eklediğinizden emin olmalısınız.
Örnek: Şuna benzer iki meydan okuma görebilirsiniz: _acme-challenge.example.com -> "randomstring1" _acme-challenge.example.com -> "randomstring2"
DNS yayılımının tamamlanmamış olması da mümkündür. https://toolbox.googleapps.com/apps/dig/#TXT/_acme-challenge.<your_domain>
gibi araçları kullanabilirsiniz. Bu, TXT kaydınızdaki değişikliklerin yansıtılıp yansıtılmayacağı konusunda size fikir verecektir. Ayrıca, ana bilgisayarınızdaki yerel DNS önbelleğinin hala eski, güncel olmayan bir değer kullanıyor olması veya son değişiklikleri algılamamış olması da mümkündür.
Diğer bir seçenek ise, ilk VPS kurulumunda cloud-init/user-data'nızdaki API belirteciyle /root/.cloudflare.ini
dosyasını ayarlayarak otomatik cerbot DNS değişikliklerini kullanmak veya bu dosyayı oluşturup betiği tekrar çalıştırmaktır. Bu, DNS değişikliklerini ve meydan okuma güncellemelerini otomatik olarak yönetecektir.
Temel kimlik doğrulama kullanıcı adı ve şifresi nedir?
Kendi barındırma hizmetiniz için, basit bir kullanıcı adı (admin
) ve parola (ilk kurulumda rastgele oluşturulur) içeren, tarayıcıya özgü ilk kimlik doğrulama açılır penceresi ekliyoruz. Bunu, otomasyon/kazıyıcıların web deneyimine ilk kaydolmanızı bir şekilde engellemesi ihtimaline karşı bir koruma olarak ekliyoruz. Bu parolayı, ilk kurulumdan sonra .env
dosyanızda AUTH_BASIC_USERNAME
ve AUTH_BASIC_PASSWORD
altında bulabilirsiniz.
{#how-do-i-know-what-is-running}'in ne çalıştırdığını nasıl bilebilirim?
docker-compose-self-hosting.yml
dosyasından çalıştırılan tüm çalışan kapsayıcıları görmek için docker ps
komutunu çalıştırabilirsiniz. Her şeyi (çalışmayan kapsayıcılar dahil) görmek için docker ps -a
komutunu da çalıştırabilirsiniz.
{#how-do-i-know-if-something-isnt-running-that-should-be} olması gereken bir şeyin çalışmadığını nasıl anlarım?
Her şeyi (çalışmayan kapsayıcılar dahil) görmek için docker ps -a
komutunu çalıştırabilirsiniz. Bir çıkış günlüğü veya notu görebilirsiniz.
{#how-do-i-find-logs} günlüklerini nasıl bulabilirim?
docker logs -f <container_name>
aracılığıyla daha fazla günlük alabilirsiniz. Herhangi bir şey çıktıysa, büyük olasılıkla .env
dosyasının yanlış yapılandırılmasıyla ilgilidir.
Web kullanıcı arayüzünde, giden e-posta günlükleri ve hata günlükleri için sırasıyla /admin/emails
ve /admin/logs
değerlerini görüntüleyebilirsiniz.
Giden e-postalarım neden zaman aşımına uğruyor?
MX sunucusuna bağlanırken bağlantı zaman aşımına uğradı... gibi bir mesaj görüyorsanız, 25 numaralı bağlantı noktasının engellenip engellenmediğini kontrol etmeniz gerekebilir. İSS'lerin veya bulut sağlayıcılarının bunu varsayılan olarak engellemesi yaygındır; bu durumda, bağlantının açılması için destek ekibiyle iletişime geçmeniz veya bir destek talebi oluşturmanız gerekebilir.
E-posta yapılandırma en iyi uygulamalarını ve IP itibarını test etmek için hangi araçları kullanmalıyım?
SSS burada'ımıza bir göz atın.