Kendi kendine barındırılan

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:

  1. Tam Şeffaflık: E-postalarınızı işleyen her kod satırı kamunun incelemesine açıktır
  2. Topluluk Katkıları: Herkes iyileştirmelere katkıda bulunabilir veya sorunları düzeltebilir
  3. Açıklıktan Gelen Güvenlik: Güvenlik açıkları küresel bir topluluk tarafından tespit edilebilir ve düzeltilebilir
  4. 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

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-posta
  • DOMAIN - özel alan adı (örn. example.com) kendi kendine barındırma kurulumu için kullanılır
  • 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 ş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

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.

Hizmet AdıVarsayılan Bağlantı NoktasıAçıklama
Web443Tüm yönetici etkileşimleri için web arayüzü
API4000Veritabanlarını soyutlamak için API katmanı
BreeHiçbiriArka plan işi ve görev yürütücüsü
SMTP465/587Giden e-posta için SMTP sunucusu
SMTP BreeHiçbiriSMTP arka plan işi
MX2525Gelen e-posta ve e-posta yönlendirme için posta değişimi
IMAP993/2993Gelen e-posta ve posta kutusu yönetimi için IMAP sunucusu
POP3995/2995Gelen e-posta ve posta kutusu yönetimi için POP3 sunucusu
SQLite3456SQLite veritabanı(ları) ile etkileşimler için SQLite sunucusu
SQLite BreeHiçbiriSQLite arka plan işi
CalDAV5000Takvim yönetimi için CalDAV sunucusu
MongoDB27017Çoğu veri yönetimi için MongoDB veritabanı
Redis6379Önbelleğe alma ve durum yönetimi için Redis
SQLiteHiç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şenAna bilgisayar yoluKonteyner 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.

İ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.

tipadİçerikTTL
A"@", "." veya boş<ip_adresi>otomatik
CNAMEAPI'si<alan_adı>otomatik
CNAMEkaldav<alan_adı>otomatik
CNAMEfe-sıçramalar<alan_adı>otomatik
CNAMEimap<alan_adı>otomatik
CNAMEmx<alan_adı>otomatik
CNAMEpop3<alan_adı>otomatik
CNAMEsmtp<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.

  1. 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.

  2. 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.
  1. 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.

İlk takma adınızı oluşturma

  1. Takma Adlar Sayfasına gidin Takma ad yönetimi sayfasını açın:
https://<domain_name>/en/my-account/domains/<domain_name>/aliases
  1. 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.
  1. 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.
  1. 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>

tipAna bilgisayar adıLimanBağlantı GüvenliğiKimlik Doğrulama
SMTPsmtp.<alan_adı>465SSL / TLSNormal Şifre
IMAPimap.<alan_adı>993SSL / TLSNormal Ş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!

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.