Najprostszy sposób na skonfigurowanie bezpiecznego serwera e-mail IMAP? [Zamknięte]

17

Chciałbym pozbyć się Google jako dostawcy poczty e-mail i skonfigurować kompletne rozwiązanie poczty e-mail na moim serwerze dedykowanym. Problem: Chciałbym, aby konfiguracja była tak prosta, jak to możliwe, aby nie było problemu z ponownym skonfigurowaniem wszystkiego, jeśli wystąpi problem.

Wymagania wstępne

  • Tylko jedno konto użytkownika na komputerze.
    • (name diti; główny e-mail [email protected]; przekierowywane są inne aliasy, ale klient e-mail może zarządzać różnymi aliasami i odpowiednio reagować)
  • Najlepiej nie używa MySQL.
    • (w przypadku tworzenia kopii zapasowych i przywracania danych oraz dla uproszczenia lepiej jest, jeśli nie trzeba instalować i zabezpieczyć MySQL przed uzyskaniem funkcjonalnego serwera e-mail)
  • Dostęp do poczty e-mail (IMAP i SMTP) można uzyskać z zewnątrz.
  • Szyfrowanie SSL / TLS do uwierzytelniania IMAP i SMTP (używam certyfikatów CAcert , czy to ma znaczenie?).

Uważam, że prostota, dostęp IMAP / SMTP i bezpieczne uwierzytelnianie to „podstawowe” funkcje, które każdy chciałby opuścić Google / cokolwiek innego, chciałby. Jeśli się mylę i istnieje prostsze rozwiązanie (na przykład rozwiązanie typu ownCloud, ze wszystkim zawartym), chętnie to usłyszę.

Myślę, że połączenie Postfix i Dovecot byłoby dobrym rozwiązaniem. Nawiasem mówiąc, używam Debiana.

Informacje, które znalazłem do tej pory

  • Artykuł francuski opisuje bardzo długo detale jak skonfigurować kompletne, bezpieczne rozwiązanie e-mail. Jest długi, trudniejszy w utrzymaniu, trudniejszy do tworzenia kopii zapasowych i przywracania itp. Poza tym, czy potrzebna jest pamięć podręczna DNS?
  • Wiki Gentoo ( Complete_Virtual_Mail_Server/SSL_Certificatesstrona) wspomina o użyciu certyfikatów CAcert, ale nie jest do końca jasne (czy wszystkie te SubjectAltNamesubdomeny są potrzebne?), Ani nie używa Postfix (czytałem, że Kurier jest trudniejszy).
  • Różne samouczki na temat samodzielnego hostingu, wszystkie inne, rzadko opisujące, co robią i dlaczego (samodzielna poczta e-mail ze zdalnym dostępem wydaje się skomplikowana w konfiguracji, więc po co podawać listę poleceń bez wyjaśnienia dla „manekinów”) .

Mam nadzieję, że zapytałem o właściwe rzeczy i że nie są one zbyt głupie.

Diti
źródło
1
Wiesz, jak można sformułować to pytanie i otworzyć je ponownie?
Diti

Odpowiedzi:

19
  • Nie, konfiguracja pamięci podręcznej DNS na serwerze nie jest wymagana. Serwer powinien korzystać z buforującego mechanizmu rozpoznawania nazw DNS, który jest gdzieś w pobliżu, ale większość firm hostingowych już uruchomiła własne programy tłumaczące dla całego centrum danych i skonfigurowała serwery, aby domyślnie z nich korzystały.

  • Domyślnie zarówno Postfix, jak i Dovecot używają do wszystkich kont lokalnych. Jeśli masz konto Linux o nazwie diti, możesz zalogować się do niego za pomocą Dovecot i możesz skonfigurować Postfix do sprawdzania poprawności logowania SMTP do Dovecot .

  • Jeśli nie chcesz, aby cała poczta trafiała na to samo konto, możesz skonfigurować zwykłe aliasy (jak w, /etc/aliases), aby przekierowywać pocztę na konto kra@lub postmaster@do niego diti.

  • Wszystkie te nazwy podmiotowe nie są konieczne. Jedyne, czego potrzebujesz, to nazwy domen, których faktycznie będziesz używać , np . mail.diti.meLub glaux.diti.me. Nie jestem pewien, czy musisz dołączyć samą domenę (tj diti.me.).


Poniżej założono, że domena ma już rekordy MX skonfigurowane do wskazywania tego serwera. Zasadniczo staram się utrzymywać moją konfigurację dość wyraźnie, ponieważ zawsze kończę się zastanawiając „po co to, do diabła”, kilka miesięcy później.

1. Najpierw zainstaluj pakiety postfixi dovecot-imapd. Po wyświetleniu monitu o konfigurację Postfix wybierz opcję „Witryna internetowa” i wprowadź diti.menazwę poczty. W tym momencie możesz już wysyłać i odbierać pocztę jako [email protected], a prawdopodobnie nawet łączyć się z IMAP.

Jednak nie ma jeszcze protokołu SSL, ani nie pozwala na wysyłanie poczty przez SMTP z zewnątrz, ani rozsądnego miejsca do przechowywania poczty (domyślnie jest to plik mbox /var/mail, który jest niewiarygodny i daje złą wydajność, szczególnie w przypadku IMAP).

2. Jeśli masz już certyfikat SSL, włóż go /etc/ssl/private/diti.me.pemi wprowadź klucz prywatny /etc/ssl/private/diti.me.key. Dokładna lokalizacja w rzeczywistości nie ma znaczenia, ale /etc/ssl/privatejest to miejsce, w którym Debian je przechowuje.

Upewnij się, że oba pliki są własnością grupy i można ją odczytać ssl-cert, aby Postfix i Dovecot miały do ​​nich dostęp. Dodaj również konta obu demonów do tej grupy, używając gpasswd -a.

3. Automatycznie generowany Postfix Debiana również main.cfjest trochę bałaganem, więc zamierzam po prostu opublikować oczyszczoną minimalną wersję:

# Informacje o serwerze
mojadomena = diti.me
myorigin = $ mojadomena
  # Różne inne parametry używają tych dwóch zmiennych jako wartości domyślnych.

# Usługa SMTP
smtpd_tls_security_level = może
smtpd_tls_cert_file = /etc/ssl/private/diti.me-mail.pem
smtpd_tls_key_file = /etc/ssl/private/diti.me-mail.key
  # Pozwala to na użycie STARTTLS na wszystkich przychodzących połączeniach SMTP.
  # Zauważ, że `postfix` musi być dodany do grupy` ssl-cert`, aby było możliwe
  #, aby uzyskać dostęp do plików w / etc / ssl / private.

# Zasady
mynetworks = [:: 1] / 128, 127.0.0.0/8, [::ffff:127.0.0.0]/104
  # Zawiera listę adresów IP, które są uważane za „zaufane” i mogą z nich korzystać
  # ten serwer, aby wysyłać pocztę na zewnątrz (tj. do innych domen). Przez
  # default, dozwolony jest tylko „localhost”. Od wszystkich innych tylko poczta do
  # domeny w $ mydestination zostanie zaakceptowane.
mydestination = $ mojadomena, localhost
  # Lista domen, dla których przyjmuje się pocztę, z dowolnego adresu IP. 
# Dostawa
alias_maps = hash: / etc / aliases
  # Zachowuje to systemowe aliasy. Dobrze jest ustawić to wyraźnie, ponieważ
  # wartość domyślna czasami obejmuje NIS, co nie ma sensu.
recipient_delimiter = +
  # Mówi postfiksowi, aby podzielił lokalną część adresów na pierwszym „+”,
  # tzw. „plus-adresowanie”: poczta wysłana do diti + foo @ zostanie dostarczona
  # do skrzynki pocztowej diti @.

W przypadku Dovecot Debian korzysta tylko z domyślnych przykładowych konfiguracji i są one wystarczająco dobre, z każdą opcją opisaną.

Ilekroć zmienisz konfigurację, przeładuj demony za pomocą postfix reloadi / lub doveadm reload.

4. Domyślnie Postfix dostarcza pocztę /var/mail/$USERw formacie mbox , który jest dość prosty (można go łatwo wyświetlić za pomocą edytora tekstu), ale ma wiele problemów, szczególnie z IMAP, ponieważ cały plik musi zostać przepisany za każdym razem, gdy przenosisz wiadomość, a nawet oznacz jedną jako „przeczytaną” lub „nieprzeczytaną”.

Zmień oba demony, aby korzystały z Maildir. (Istnieją inne formaty, ale zazwyczaj są one specyficzne dla serwera MTA, MDA lub IMAP, lub cokolwiek innego; Maildir jest szeroko obsługiwany).

W /etc/postfix/main.cfdodaj następujące polecenie do sekcji „Dostawa”:

home_mailbox = Mail /

Skonfiguruj Dovecot, aby używał tej samej ścieżki w /etc/dovecot/conf.d/10-mail.conf:

mail_location = maildir: ~ / Mail

5. W pewnym momencie musisz powiedzieć Dovecot, aby również używał protokołu SSL. Odpowiednie ustawienia są w /etc/dovecot/conf.d/10-ssl.conf. W rzeczywistości pakiet Debian dla Dovecot używa już protokołu SSL, chociaż z samopodpisanym certyfikatem, który jest w większości bezużyteczny. Skonfiguruj go, aby używał własnego certyfikatu:

ssl = tak

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

6. Teraz możesz wysyłać pocztę na zewnątrz i odbierać ją. Nadal konieczne jest skonfigurowanie Postfix, aby umożliwić wysyłanie z zewnątrz, łącząc się z klientem poczty za pośrednictwem SMTP.

Najpierw powiedz Postfixowi, aby używał Dovecot do weryfikacji logowania. Poniższe instrukcje pochodzą głównie z wiki Dovecot .

Dovecot /etc/dovecot/conf.d/10-master.confmusi nasłuchiwać na gnieździe, do którego Postfix mógłby uzyskać dostęp; domyślna konfiguracja ma już skomentowany przykład:

autoryzacja usługi {
    ...
    unix_listener / var / spool / postfix / private / auth {
        tryb = 0660
        użytkownik = postfiks
        grupa = postfiks
    }
    ...
}

I Postfix musi go użyć - /etc/postfix/main.cfponownie:

# Uwierzytelnianie
smtpd_sasl_type = dovecot
smtpd_sasl_path = private / auth
  # Innym możliwym typem jest „cyrus”, dla „saslauthd” Cyrus SASL
  # demon. Wybieram tutaj Dovecot, ponieważ działa dobrze jako serwer SASL i
  # po prostu łatwiej jest pozwolić na obsługę uwierzytelniania dla obu demonów.

7. Zauważ, że powyższe smtpd_sasl_auth_enablenigdzie nie ustalono . Obecna konwencja nie włącza globalnego uwierzytelniania SMTP, ale utrzymuje tcp / 25 wyłącznie jako port SMTP typu „serwer-serwer”. Tymczasem nowe wiadomości od użytkowników są akceptowane przez SMTP na tcp / 587, porcie „wysyłania poczty”, który wymaga uwierzytelnienia. Niektórzy dostawcy usług internetowych nawet blokują tcp / 25 z powodu spamu, ale tcp / 587 pozostają otwarte, ponieważ zazwyczaj są lepiej zabezpieczone.

Włącz port „Submission” /etc/postfix/master.cfz uwierzytelnianiem SASL. Domyślne master.cfma już niezbędne wiersze, które po prostu muszą zostać skomentowane, chociaż niektóre z nich nadal powinny zostać pominięte.

submission inet n - - - - smtpd
  -o syslog_name = postfix / submission
  -o smtpd_tls_security_level = szyfruj
    # Port „Przesyłanie” będzie wymagał TLS, zamiast uczynić go opcjonalnym
  -o smtpd_sasl_auth_enable = tak
    # ... a także pozwala użytkownikom się zalogować.
# -o smtpd_reject_unlisted_recipient = nie
# -o smtpd_client_restrictions = $ mua_client_restrictions
# -o smtpd_helo_restrictions = $ mua_helo_restrictions
# -o smtpd_sender_restrictions = $ mua_sender_restrictions
    # Te cztery opcje można pozostawić bez komentarza; jeśli włączone, to zrobiliby
    # oczekuję, że ustawisz niestandardowe reguły ograniczeń w 'main.cf', ale
    # domyślne są w porządku.
  -o smtpd_recipient_restrictions = zezwolenie_sasl_authenticated, odrzucenie
    # Domyślne ograniczenia_odbiorcy sprawdzają adres IP i
    # $ mydestination. W przypadku portu „Prześlij” zezwól na wszystko tak długo
    # gdy użytkownik jest zalogowany, ale odrzuca wszystkie anonimowe wiadomości.
  -o milter_macro_daemon_name = POCHODZENIE
    # Jeśli później zdecydujesz się skonfigurować proxy DKIM lub podobny, pozwoli to
    # to, aby odróżnić wiadomości wysłane od użytkowników od otrzymanych wiadomości przychodzących.
    # Jest to część domyślnej konfiguracji, dlatego też tutaj została uwzględniona.

Jeśli masz klienta pocztowego, który wymaga starego typu „niejawnego portu SSL” (tcp / 465), możesz cofnąć komentarz do smtpslinii master.cf- jeśli tak, zachowaj ustawienia podobne do tych w submissionporcie.

8. Na koniec skonfiguruj aliasy dla swojego konta, edytując /etc/aliases. postmasterAlias jest w zasadzie konieczne; jest to punkt kontaktowy, jeśli występują problemy z serwerem pocztowym. Wskazanie rooti inne podobne aliasy też są dobre.

Podstawowy format jest udokumentowany w aliasach (5):

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

Użyj postaliaslub, newaliasesaby zaktualizować zaszyfrowaną bazę danych przy /etc/aliases.dbkażdej edycji tego pliku.

Teraz nadal masz jedno konto o nazwie ditiPostfix i Dovecot, ale poczta wysyłana na kra@...ten adres również jest tam przekazywana. Niektóre klienty poczty (np. Thunderbird) obsługują wiele „tożsamości” lub „osobowości” dla jednego serwera pocztowego, więc możesz wybierać między różnymi adresami „Od:”.

O to chodzi. Mogę później wrócić z instrukcjami dla procmaila, domen wirtualnych, SPF i / lub DKIM.

użytkownik1686
źródło
1
To wspaniale ! To naprawdę najprostszy samouczek na temat hostingu poczty e-mail. Najbardziej zadziwiło mnie to, że w punkcie 1 mogłem rzeczywiście wysyłać i odbierać wiadomości e-mail z / na mój serwer. W każdym razie zmodyfikuję twoją wiadomość, aby wyjaśnić niektóre punkty! Nie mogę jednak skonfigurować poczty e-mail z zewnątrz (mam na myśli Thunderbirda). Używam mail.diti.me(= adres IP mojego serwera) zarówno dla IMAP, jak i SMTP, moja domena ma już rekordy MX. Czy zrobiłem coś złego podczas konfiguracji mojego serwera, czy po prostu mam problemy z Thunderbirdem?
Diti
@Diti: Wygląda na to, że wszystkie odpowiednie porty (oprócz tcp / 25) są firewall na twoim serwerze.
user1686
Jaka powinna być wydajność ps auxw | grep "dovecot"? Porównałem ze złożoną konfiguracją jednego z moich przyjaciół, a on ma dovecot-authi imap-logintego nie mam. Czy to możliwe, że porty są rzeczywiście otwarte (nie przypominam sobie, że korzystam z zapory ogniowej), ale bez demona ustawionego na nasłuchiwanie tych portów z zewnątrz, czy coś w tym rodzaju? Kiedy uruchamiam openssl s_client -connect mail.diti.me:993na serwerze, działa (i mówi „Gotowy Dovecot”), ale nic z zewnątrz. Może powinienem spróbować zainstalować zaporę ogniową i wyraźnie zezwolić na te porty?
Diti
@Diti: architektura Dovecot zmienił się znacząco pomiędzy V1 i V2, więc można zobaczyć różne procesy - w v2, że nie będzie dovecot, dovecot/anvil, dovecot/log, i inne. Ponadto niektóre procesy są uruchamiane tylko wtedy, gdy ktoś się łączy lub tylko podczas sprawdzania szczegółów uwierzytelnienia.
user1686
1
@Diti: Nie, oba demony domyślnie nasłuchują na wszystkich interfejsach i wszystkich adresach. Ale połączenia nie są odrzucane - serwer cicho odrzuca wszystkie próby połączenia (patrz skan nmap, z którym się połączyłem), co jest pewnym znakiem zapory ogniowej. Spróbuj użyć, iptables -n -v -Laby sprawdzić, czy istnieją jakieś reguły do ​​odrzucania pakietów.
user1686