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, %100 açık kaynaklıdır—hem ön uç hem de arka uç. Bu ş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ştirmelere katkıda bulunabilir veya sorunları düzeltebilir
- Açıklıktan Gelen Güvenlik: Güvenlik açıkları küresel bir topluluk tarafından tespit edilebilir ve düzeltilebilir
- Satıcıya Bağlılık Yok: Şirketimizin varlığına asla bağımlı değilsiniz
Tüm kod tabanı GitHub'da şu adreste mevcuttur: https://github.com/forwardemail/forwardemail.netMIT Lisansı altında lisanslanmıştır.
Mimari şu kapsayıcıları içerir:
- 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 depolaması için veritabanı
- Önbelleğe alma ve performans için Redis
- Güvenli, şifrelenmiş posta kutusu depolaması için SQLite
Gereksinimler
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+'ı destekliyor).
- kaynaklar: 1 vCPU ve 2GB RAM
- Kök Erişimi: Komutları yürütmek 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 Burada.
- 25 port desteğine sahip genel IP adresi
- Ayarlama yeteneği ters PTR
- IPv4 ve IPv6 desteği
[!TIP] Listemize bakın harika posta sunucusu sağlayıcıları
Bulut-init / Kullanıcı-verileri
Çoğu bulut satıcısı, sanal özel sunucu (VPS) sağlandığında bir bulut başlatma yapılandırmasını destekler. Bu, komut dosyaları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 için istemde bulunma ihtiyacını ortadan kaldırır.
Seçenekler
EMAIL
- certbot son kullanma tarihi hatırlatıcıları için kullanılan e-postaDOMAIN
- özel alan adı (örn.example.com
) kendi kendine barındırma kurulumu için kullanılırAUTH_BASIC_USERNAME
- Siteyi korumak için ilk kurulumda kullanılan kullanıcı adıAUTH_BASIC_PASSWORD
- Siteyi korumak için ilk kurulumda kullanılan şifre/root/.cloudflare.ini
- (Yalnızca Cloudflare kullanıcıları) DNS yapılandırması için certbot tarafından kullanılan cloudflare yapılandırma dosyası. API belirtecinizi şu şekilde ayarlamanızı gerektirir:dns_cloudflare_api_token
. Devamını oku Burada.
Ö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
Düzenlemek
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 kurulum betiği
Eklemek DEBUG=true
Ayrıntılı çıktı için kurulum betiğinin önünde:
DEBUG=true bash <(curl -fsSL https://raw.githubusercontent.com/forwardemail/forwardemail.net/master/self-hosting/setup.sh)
İstemler
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 e-posta yönlendirme kodunu indirin, ortamı yapılandırın, özel alan adınızı isteyin ve gerekli tüm sertifikaları, anahtarları ve sırları ayarlayın.
- Yedekleme Kurulumu: Güvenli, uzak depolama için S3 uyumlu bir depo kullanarak mongoDB ve redis'i yedeklemek için bir cron kuracağım. Ayrı olarak, güvenli, şifreli yedeklemeler için değişiklikler varsa sqlite oturum açıldığında yedeklenecek.
- Kurulum Yükseltme: Altyapı bileşenlerini güvenli bir şekilde yeniden oluşturacak ve yeniden başlatacak gecelik güncellemeleri arayacak bir cron kurun.
- Sertifikaları yenile: Certbot / lets encrypt, SSL sertifikaları için kullanılır ve anahtarlar her 3 ayda bir sona erer. Bu, alan adınız için sertifikaları yeniler ve bunları ilgili bileşenlerin tüketmesi için gerekli klasöre yerleştirir. Bkz. önemli dosya yolları
- Yedeklemeden geri yükle: Yedek verilerden geri yükleme yapmak için mongodb ve redis'i tetikler.
İlk Kurulum (Seçenek 1)
Seçeneği seçin 1. Initial setup
başlamak için.
Tamamlandığında, bir başarı mesajı görmelisiniz. Hatta çalıştırabilirsiniz docker ps
görmek için , bileşenler döndürüldü. Bileşenler hakkında daha fazla bilgi aşağıda.
Hizmetler
Hizmet Adı | Varsayılan Bağlantı Noktası | Açıklama |
---|---|---|
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 |
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: Ana bilgisayar yolu Aşağıda buna göre /root/forwardemail.net/self-hosting/
.
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 |
[!ÖNEMLİ] Kaydet
.env
güvenli bir şekilde dosyalayın. Başarısızlık durumunda kurtarma için kritik öneme sahiptir. Bunu şurada bulabilirsiniz/root/forwardemail.net/self-hosting/.env
.
Yapılandırma
İlk DNS kurulumu
Tercih ettiğiniz DNS sağlayıcınızda, uygun DNS kayıtlarını yapılandırın. Parantez içindeki herhangi bir şeye dikkat edin (<>
) dinamiktir ve sizin değerlerinizle güncellenmesi gerekir.
tip | ad | İçerik | TTL |
---|---|---|---|
A | "@", "." veya boş | <ip_adresi> | otomatik |
CNAME | API'si | <alan_adı> | otomatik |
CNAME | kaldav | <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 -tümü" | 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şruluğunu doğrulamaya yardımcı olurlar. Her bulut sağlayıcısı bunu farklı şekilde yapar, bu nedenle ana bilgisayarı ve IP'yi karşılık gelen ana bilgisayar adına eşlemek için "Ters DNS"in nasıl ekleneceğini araştırmanız gerekir. Büyük olasılıkla sağlayıcının ağ bölümünde.
25 Nolu Bağlantı Noktası Engellendi
Bazı İSS'ler ve bulut sağlayıcıları kötü aktörleri önlemek için 25'i engeller. SMTP / giden e-posta için 25 numaralı portu açmak üzere bir destek bileti göndermeniz gerekebilir.
Gemiye binme
-
Açılış Sayfasını Açın https://<domain_name> adresine gidin, <domain_name> adresini DNS ayarlarınızda yapılandırdığınız alan adıyla değiştirin. Forward Email açılış sayfasını görmelisiniz.
-
Giriş Yapın ve Alan Adınızı Ekleyin
- Geçerli bir e-posta ve şifre ile giriş yapın.
- Kurmak istediğiniz alan adını girin (DNS yapılandırmasıyla eşleşmelidir).
- Gerekli olanı eklemek için istemleri izleyin MX ve TXT Doğrulama için kayıtlar.
- Kurulumu Tamamla
- Doğrulama yapıldıktan sonra ilk takma adınızı oluşturmak için Takma Adlar sayfasına erişin.
- İsteğe bağlı olarak yapılandırın Giden e-posta için SMTP içinde Alan Adı AyarlarıBu, ek DNS kayıtları gerektirir.
[!NOTE] Sunucunuzun dışına hiçbir bilgi gönderilmez. Kendi kendine barındırılan seçenek ve ilk hesap yalnızca yönetici girişi ve etki alanlarını, takma adları ve ilgili e-posta yapılandırmalarını yönetmek için web görünümü içindir.
Test
İlk takma adınızı oluşturma
- 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 Ekle
- Tıklamak Takma Ad Ekle (sağ üstte).
- Takma adınızı girin ve e-posta ayarlarınızı gerektiği gibi düzenleyin.
- (İsteğe bağlı) Etkinleştir IMAP/POP3/CalDAV onay kutusunu seçerek destekleyebilirsiniz.
- Tıklamak Takma ad oluştur.
- Bir Şifre Belirleyin
- Tıklamak Şifre oluştur güvenli bir şifre oluşturmak için.
- Bu şifre e-posta istemcinize giriş yapmanız 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şturduğunuz şifreyi girin.
- Yapılandırın IMAP ve SMTP ayarlarını buna göre yapı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 dışında çalışmıyor?
Şu anda Debian, MacOS'u desteklemeyi düşünüyoruz ve diğerlerine de bakacağız. Lütfen bir tartışma veya başkalarının da desteklenmesini istiyorsanız katkıda bulunun.
Certbot acme challenge neden başarısız oluyor?
En sık karşılaşılan tuzak, certbot / letsencrypt'in bazen istekte bulunmasıdır 2 zorluklar. Eklediğinizden emin olmanız gerekir BOTH txt kayıtları.
Örnek: Bunun gibi 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. Şu araçları kullanabilirsiniz: https://toolbox.googleapps.com/apps/dig/#TXT/_acme-challenge.<your_domain>
. Bu, TXT kayıt değişiklikleriniz yansıtılıp yansıtılmaması gerektiği konusunda size bir fikir verecektir. Ayrıca, ana bilgisayarınızdaki yerel DNS önbelleğinin hala eski, bayat bir değer kullanıyor olması veya son değişiklikleri almamış olması da mümkündür.
Başka bir seçenek de, otomatik cerbot DNS değişikliklerini kullanarak /root/.cloudflare.ini
ilk VPS kurulumunda cloud-init / user-data'nızdaki api token'lı dosyayı oluşturun veya bu dosyayı oluşturun ve betiği tekrar çalıştırın. 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 kendine barındırma için, basit bir kullanıcı adı ile ilk kez tarayıcıda yerel kimlik doğrulama açılır penceresi ekliyoruz (admin
) ve şifre (ilk kurulumda rastgele oluşturulur). Bunu sadece otomasyon/kazıyıcıların web deneyiminde ilk kaydolmanızı bir şekilde geçmesi durumunda bir koruma olarak ekliyoruz. Bu şifreyi ilk kurulumdan sonra şurada bulabilirsiniz: .env
dosya altına koy AUTH_BASIC_USERNAME
ve AUTH_BASIC_PASSWORD
.
Neyin çalıştığını nasıl bilebilirim?
Koşabilirsin docker ps
dönen tüm çalışan konteynerleri görmek için docker-compose-self-hosting.yml
Dosya. Ayrıca çalıştırabilirsiniz docker ps -a
her şeyi (çalışmayan konteynerlar dahil) görmek için.
Çalışması gereken bir şeyin çalışmadığını nasıl anlarım?
Koşabilirsin docker ps -a
her şeyi görmek için (çalışmayan konteynerlar dahil). Bir çıkış günlüğü veya notu görebilirsiniz.
Günlükleri nasıl bulabilirim?
Daha fazla günlük almak için şu yolu kullanabilirsiniz: docker logs -f <container_name>
. Eğer bir şey çıktıysa, bunun büyük ihtimalle bununla ilgili olması muhtemeldir. .env
dosya yanlış yapılandırılıyor.
Web kullanıcı arayüzünde şunları görüntüleyebilirsiniz: /admin/emails
ve /admin/logs
Sırasıyla giden e-posta kayıtları ve hata kayıtları için.
Giden e-postalarım neden zaman aşımına uğruyor?
MX sunucusuna bağlanırken Connection timed out gibi bir mesaj görürseniz, 25 numaralı portun engellenip engellenmediğini kontrol etmeniz gerekebilir. İSS'lerin veya bulut sağlayıcılarının bunu varsayılan olarak engellemesi yaygındır; bunun açılması için desteğe ulaşmanız/bir bilet göndermeniz gerekebilir.
E-posta yapılandırma en iyi uygulamalarını ve IP itibarını test etmek için hangi araçları kullanmalıyım?
Bizimkine bir göz atın SSS burada.