Güvenli, IMAP, e-posta sunucusu kurmanın en basit yolu? [kapalı]


17

Bir e-posta sağlayıcısı olarak Google'dan kurtulmak ve özel sunucumda eksiksiz bir e-posta çözümü kurmak istiyorum. Sorun: Kurulumun mümkün olduğunca basit olmasını diliyorum, böylece bir sorun varsa her şeyi tekrar ayarlamak acı çekmeyecek.

Ön şartlar

  • Makinede yalnızca bir kullanıcı hesabı.
    • (ad diti; ana e-posta kra@diti.me; diğer takma adlar yeniden yönlendirilir ancak bir e-posta istemcisi farklı takma adları yönetebilir ve buna göre tepki verebilir)
  • Tercihen MySQL kullanmaz.
    • (veri yedekleme ve geri yükleme ve basitlik uğruna, işlevsel bir e-posta sunucusu almadan önce MySQL'i kurmak ve güvence altına almak zorunda değilse daha iyidir)
  • E-postalara dışarıdan (IMAP ve SMTP) erişilebilir.
  • IMAP ve SMTP kimlik doğrulaması için SSL / TLS şifrelemesi ( CAcert sertifikaları kullanıyorum , önemli mi?).

Basitliğin, IMAP / SMTP erişiminin ve güvenli kimlik doğrulamasının, herkesin Google'dan / başka bir şekilde istediği gibi bırakmak istediği “temel” özellikler olduğuna inanıyorum. Yanılıyorsam ve daha basit bir çözüm varsa (örneğin, her şey dahil olmak üzere ownCloud benzeri bir çözüm), duymaktan mutluluk duyarım.

Bence Postfix ve Dovecot kombinasyonu bir yol olacak. Bu arada Debian'ı çalıştırıyorum.

Şimdiye kadar bulduğum bilgi

  • Bir Fransız makale içinde açıklanır çok uzun tam, güvenli e-posta çözümü nasıl ayarlanacağı ayrıntıları. Uzun, bakımı zor, yedekleme ve geri yükleme zor, vb. Ayrıca bir DNS önbelleği gerekli mi?
  • Gentoo Complete_Virtual_Mail_Server/SSL_Certificateswiki'si ( sayfa) CAcert sertifikalarının kullanımından bahseder, ancak bu konuda ne açıktır (tüm bu SubjectAltNamealt alan adları gerekli midir?) Ne de Postfix'i kullanmaz (Courier'in daha zor olduğunu okudum).
  • Kendini barındırma ile ilgili çeşitli öğreticiler, hepsi farklı, ne yaptıklarını ve nedenini nadiren açıklıyorlar (uzaktan erişimli kendinden barındırılan e-postaların kurulumu karmaşık görünüyor, bu yüzden neden “aptallar” için açıklama yapmadan komutların bir listesini sunalım?) .

Umarım doğru şeyleri sordum ve çok saçma olmadıklarını umuyorum.


1
Bu sorunun nasıl yeniden ifade edilebileceği ve yeniden açılabileceği hakkında bir fikrin var mı?
Mart'ta Diti

Yanıtlar:


19
  • Hayır, sunucuda bir DNS önbelleği ayarlamanız gerekmez. Sunucu , yakınlarda bir yerde olan bir önbellek DNS çözümleyicisi kullanmalıdır, ancak çoğu barındırma şirketi zaten tüm veri merkezi için kendi çözümleyicilerini çalıştırır ve sunucuları varsayılan olarak kullanacak şekilde yapılandırır.

  • Varsayılan olarak, Postfix ve Dovecot her şey için yerel hesapları kullanır. ditiAdında bir Linux hesabınız varsa, bununla Dovecot'ta oturum açabilir ve Postfix'i Dovecot'a karşı SMTP oturum açmalarını doğrulayacak şekilde ayarlayabilirsiniz .

  • Aynı hesaba tüm posta gitmek yapmak için sorun varsa (olduğu gibi, düz adlar ayarlayabilirsiniz /etc/aliasesiçin posta yönlendirmek için) kra@veya postmaster@hiç ditihesapta.

  • Tüm bu topicAltNames gerekli değildir. İhtiyacınız olan tek şey, gerçekte kullanacağınız alan adları içindir , örneğin mail.diti.meveya glaux.diti.me. Etki alanının kendisini (yani diti.me) eklemeniz gerekip gerekmediğinden emin değilim .


Aşağıda, alan adının zaten bu sunucuya işaret edecek şekilde yapılandırılmış MX kayıtları olduğu varsayılmaktadır. Konfigürasyonumu genel olarak makul bir şekilde açık tutmaya çalışıyorum, çünkü her zaman birkaç ay sonra "bunun ne için olduğunu" merak ediyorum.

1. İlk olarak postfixve dovecot-imapdpaketlerini kurun . Postfix yapılandırması sorulduğunda, "İnternet Sitesi" seçeneğini seçin ve diti.meposta adı olarak girin . Bu noktada, zaten posta gönderip alabilir diti@diti.meve hatta IMAP'e bağlanabilirsiniz.

Bununla birlikte, henüz SSL'ye sahip değildir, dışarıdan SMTP üzerinden posta göndermeye veya postaları depolamak için akıllı bir yere izin verilmez (varsayılan /var/mail, güvenilir olmayan ve özellikle IMAP ile kötü performans veren bir mbox dosyasıdır ).

2. Zaten bir SSL sertifikanız varsa, sertifikayı /etc/ssl/private/diti.me.pemve özel anahtarı girin /etc/ssl/private/diti.me.key. Kesin konum aslında önemli değil, ama /etc/ssl/privateDebian'ın onları tuttuğu yer.

ssl-certPostfix ve Dovecot dosyalarının erişebilmesi için her iki dosyanın da gruba ait olduğundan ve grubun okuyabildiğinden emin olun . Ayrıca kullanarak her iki cin hesabını da bu gruba ekleyin gpasswd -a.

3. Debian'ın otomatik oluşturulan Postfix'i main.cfde biraz karışık, bu yüzden sadece temizlenmiş minimal bir versiyon yayınlayacağım:

# Sunucu bilgileri
etkialanim = diti.me
myorigin = $ alanim
  # Diğer çeşitli parametreler bu iki değişkeni varsayılan değer olarak kullanır.

# SMTP hizmeti
smtpd_tls_security_level = mayıs
smtpd_tls_cert_file = /etc/ssl/private/diti.me-mail.pem
smtpd_tls_key_file = /etc/ssl/private/diti.me-mail.key
  # Bu, STARTTLS'nin gelen tüm SMTP bağlantılarında kullanılmasına izin verir.
  # `Ssl-cert` grubuna` postfix` eklenmelidir.
  # / etc / ssl / private içindeki dosyalara erişmek için.

# Politikalar
mynetworks = [:: 1] / 128, 127.0.0.0/8, [::ffff:127.0.0.0 yetersiz/104
  # Bu, "güvenilir" olarak kabul edilen ve kullanabilen IP adreslerini listeler
  # dışarıya (yani diğer alanlara) posta göndermek için bu sunucu. Tarafından
  # varsayılan, yalnızca "localhost" a izin verilir. Diğer herkesin yalnızca posta
  $ mydestination içindeki # alan adı kabul edilecektir.
mydestination = $ alan adım, localhost
  # Herhangi bir IP adresinden posta kabul edilecek alanların listesi. 
# Teslimat
alias_maps = karma: / etc / aliases
  # Bu, sistem genelinde takma adları tutar. Açıkça ayarlamak iyi çünkü
  # varsayılan değer bazen anlamlı olmayan NIS içerir.
recipient_delimiter = +
  # Postfix'e adreslerin yerel kısmını ilk '+' da bölmesini söyler,
  # sözde "artı adresleme": diti + foo @ adresine gönderilen postalar teslim edilecektir
  # diti @ posta kutusuna.

Dovecot için Debian yalnızca varsayılan örnek yapılandırmaları kullanır ve açıklanan her seçenekle birlikte yeterince iyidir.

Yapılandırmayı her değiştirdiğinizde, arka plan pencerelerini postfix reloadve / veya ile yeniden yükleyin doveadm reload.

4. Varsayılan olarak, Postfix posta teslim /var/mail/$USERiçinde Mbox bir hareket olduğunda tüm dosya yeniden yazılması gerekiyor çünkü özellikle IMAP ile, yeterince basit (kolayca bir metin editörü ile de görüntüleyebilir) ama pek çok sorun vardır biçimi, hatta "okundu" veya "okunmadı" olarak işaretleyin.

Her iki cin'i Maildir'i kullanmak için değiştirin. (Başka formatlar da vardır, ancak MTA veya MDA veya IMAP sunucusuna veya herhangi bir şeye özgü olma eğilimindedirler; Maildir yaygın olarak desteklenmektedir.)

Alanında /etc/postfix/main.cf, "Yayınlama" bölümüne aşağıdakileri ekleyin:

home_mailbox = Posta /

Dovecot'u aynı yolu kullanacak şekilde yapılandırın /etc/dovecot/conf.d/10-mail.conf:

mail_location = maildir: ~ / Posta

5. Bir noktada Dovecot'a SSL kullanmasını da söylemeniz gerekir. İlgili ayarlar /etc/dovecot/conf.d/10-ssl.conf. Aslında, Dovecot için Debian paketi zaten SSL'yi kullanıyor, ancak çoğunlukla işe yaramaz olan kendinden imzalı bir sertifikaya sahip. Kendi sertifikanızı kullanacak şekilde yapılandırın:

ssl = evet

ssl_cert = </etc/ssl/private/diti.me-mail.pem
ssl_key = </etc/ssl/private/diti.me-mail.key

6. Artık dışarıya posta gönderebilir ve alabilirsiniz. Yapılandırmak Postfix göndermek için izin için hala gerekli dan SMTP üzerinden mail istemcisi ile bağlanarak dışarıdan.

İlk olarak Postfix'e girişleri doğrulamak için Dovecot kullanmasını söyleyin. Aşağıdaki talimatlar çoğunlukla Dovecot'un wiki'sinden alınmıştır .

Dovecot'un /etc/dovecot/conf.d/10-master.confPostfix'in erişebileceği bir soketi dinlemesi gerekiyor; varsayılan yapılandırmanın zaten açıklanmış bir örneği vardır:

hizmet yetkisi {
    ...
    unix_listener / var / spool / postfix / private / auth {
        mod = 0660
        kullanıcı = postfix
        grup = postfix
    }
    ...
}

Ve Postfix'in /etc/postfix/main.cftekrar kullanması gerekiyor :

# Kimlik Doğrulama
smtpd_sasl_type = güvercin
smtpd_sasl_path = private / auth
  # Diğer olası tip Cyrus SASL 'saslauthd' için "cyrus"
  # daemon. SASL sunucusu olarak iyi çalıştığı için burada Dovecot'u seçiyorum ve
  # her iki cin için kimlik doğrulaması yapmasına izin vermek daha basittir.

7. Yukarıdakilerin hiçbir smtpd_sasl_auth_enableyere ayarlanmadığına dikkat edin . Geçerli kongre etmektir değil global olarak SMTP kimlik doğrulama sağlar, ancak bir "sunucu sunucuya" SMTP bağlantı noktası olarak tamamen / 25 tcp tutmak. Bu arada, kullanıcılardan gelen yeni iletiler kimlik doğrulaması gerektiren "posta gönderme" bağlantı noktası olan tcp / 587'de SMTP üzerinden kabul edilir. Bazı ISS'ler spam nedeniyle tcp / 25'i bile engeller, ancak genellikle daha güvenli olduğundan tcp / 587'yi açık tutun.

/etc/postfix/master.cfSASL yetkilendirmesi ile "Gönderme" bağlantı noktasını etkinleştirin . Varsayılan, master.cfzaten yorumlanması gereken gerekli satırlara sahiptir, ancak bazıları hala dışarıda bırakılmalıdır.

gönderme inet n - - - - smtpd
  -o syslog_name = postfix / gönderim
  -o smtpd_tls_security_level = şifreleme
    # "Gönderme" bağlantı noktası, isteğe bağlı yapmak yerine TLS gerektirir
  -o smtpd_sasl_auth_enable = evet
    # ... ve kullanıcıların oturum açmasına izin ver.
# -o smtpd_reject_unlisted_recipient = hayır
# -o smtpd_client_restrictions = $ mua_client_restrictions
# -o smtpd_helo_restrictions = $ mua_helo_restrictions
# -o smtpd_sender_restrictions = $ mua_sender_restrictions
    # Bu dört seçenek yorumda bırakılabilir; etkinleştirilirse,
    # 'main.cf' dosyasında özel kısıtlama kuralları belirlemenizi bekler, ancak
    # varsayılan olanlar gayet iyi.
  -o smtpd_recipient_restrictions = permit_sasl_authenticated, reddet
    # Varsayılan recipient_restrictions IP adresini kontrol eder ve
    # $ mydestination. "Gönderme" bağlantı noktası için, her şeye izin verin
    # kullanıcı oturum açtığında anonim postaları reddet.
  -o milter_macro_daemon_name = ORİJİNAT
    # Daha sonra bir DKIM proxy veya benzeri bir yöntem kurmaya karar verirseniz,
    # kullanıcı tarafından gönderilen postaları gelen gelenlerden ayırmak için.
    # Varsayılan yapılandırmanın bir parçasıdır, bu nedenle buraya da dahildir.

Eski bir tarzı "örtük SSL" portu (tcp / 465) gerektiren bir posta istemcisi varsa, uncomment, smtpsçizgi master.cf- bunu yaparsanız, benzer ayarları saklamak submissionliman olanlar.

8. Son olarak, düzenleyerek hesabınız için takma adlar ayarlayın /etc/aliases. Diğer postmasterad temel olarak gereklidir; posta sunucunuzla ilgili sorunlar varsa iletişim noktasıdır. İşaret rootve diğer benzer takma adlar da iyidir.

Temel biçim diğer adlarda (5) belgelenmiştir:

postmaster: root
admin:      root
root:       diti
kra:        diti

Bu dosyayı her düzenlediğinizde karma veritabanını güncelleştirmek için postaliasveya newaliasesdüğmesini kullanın /etc/aliases.db.

Artık ditiPostfix ve Dovecot ile ilgili olarak adlandırılan bir hesabınız var , ancak adresine gönderilen postalar kra@...da yönlendiriliyor. Bazı posta istemcileri (örn. Thunderbird) tek bir posta sunucusu için birden çok "kimliği" veya "kişiyi" destekler, böylece farklı "Kimden:" adresleri arasından seçim yapabilirsiniz.

Bu kadar. Daha sonra procmail, sanal etki alanları, SPF ve / veya DKIM için talimatlarla geri dönebilirim.


1
Bu harika ! Gerçekten e-posta kendini barındırma hakkında en basit öğretici. Beni en çok şaşırtan kısım, 1. noktada, gerçekten de sunucumdan / sunucuma e-posta gönderip alabileceğimi görmekti. Her neyse, bazı noktaları netleştirmek için mesajınızı da düzenleyeceğim! Ancak, e-postamı dışarıdan kurmayı başaramıyorum (yani Thunderbird). Ben kullanıyorum mail.diti.mebenim etki alanı zaten MX kayıtlarına sahip, (= benim sunucunun IP adresini) IMAP ve SMTP ikisi için. Sunucumun kurulumu sırasında yanlış bir şey yaptım mı yoksa Thunderbird sorunları mı var?
Haziran'da Diti

@Diti: Görünüşe göre tüm ilgili portlar (tcp / 25 hariç) sunucunuzda güvenlik duvarına sahip .
user1686

Çıktısı ne olmalı ps auxw | grep "dovecot"? Arkadaşlarımın karmaşık kurulumlarından biriyle karşılaştırdım ve o var dovecot-authve imap-loginbenim yok. Bağlantı noktalarının gerçekten açık olması mümkün olabilir (bir güvenlik duvarı kullanarak kendimi hatırlamıyorum), ancak dışarıdan bu bağlantı noktalarını dinlemek için herhangi bir arka plan ayarlamamış olabilir mi? Ben çalıştırdığınızda openssl s_client -connect mail.diti.me:993sunucuda, çalışır (ve “Dovecot hazır.” Diyor), ancak dışarıdan bir şey yok. Belki bir güvenlik duvarı kurmaya çalışmalıyım ve bu portlara açıkça izin vermeliyim?
Diti

@Diti: - v2, orada olacağım farklı süreçleri göreceksiniz böylece Dovecot mimarisi, v1 ve v2 arasında oldukça değiştiğini dovecot, dovecot/anvil, dovecot/log, ve diğerleri. Ayrıca, bazı işlemler yalnızca biri bağlandığında veya yalnızca kimlik doğrulama ayrıntılarını doğrularken başlatılır.
user1686

1
@Diti: Hayır, her iki arka plan da varsayılan olarak tüm arabirimleri ve tüm adresleri dinler. Ancak bağlantılar reddedilmiyor - bunun yerine, sunucu bir yerde güvenlik duvarının kesin bir işareti olan tüm bağlantı girişimlerini sessizce düşürüyor (bağlandığım nmap taramasına bakın). iptables -n -v -LPaketleri bırakmak için herhangi bir kural olup olmadığını kontrol etmek için kullanmayı deneyin .
user1686
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.