MindShifter - nFire.eu   MindShifter - nFire.eu
  [ Zaloguj | Rejestracja ]     Dzisiaj jest : Niedziela, 14 Styczeń 2018 
Menu strony
 
Artykuły

Wszystkie artykuły » Linux » Sieć » Serwer pocztowy (Postfix + Dovecot + SASL + TLS/SSL + RoundCube Webmail)

Serwer pocztowy (Postfix + Dovecot + SASL + TLS/SSL + RoundCube Webmail)

Autor: Dariusz Jaskuła (MindShifter) | Niedziela, 09 Sierpień 2009 14:25


PocztaPostfix (www.postfix.org) to agent przesyłania poczty (MTA - Mail Transfer Agent), którego zadaniem jest przekazywanie do innych serwerów (relay) i dostarczanie do lokalnych skrzynek poczty elektronicznej (e-mail).

Dovecot (www.dovecot.org) jest usługą POP3/IMAP, umożliwiającą użytkownikom dostęp do skrzynek pocztowych. Dovecot wymaga MTA (np. Postfix, Exim) do poprawnej pracy.

SASL (Simple Authentication and Security Layer) - umożliwia implementację warstwy uwierzytelniania (autoryzacja SMTP).

TLS/SSL (Transport Layer Security/Secure Socket Layer) - zapewnia poufność i integralność transmisji danych oraz uwierzytelnianie. Opiera się na szyfrach asymetrycznych oraz certyfikatach standardu X.509.

RoundCube Webmail (roundcube.net) jest webowym klientem pocztowym (działa z poziomu przeglądarki) napisanym w PHP i technologii AJAX. Zapewnia wsparcie dla MIME, książkę adresową, manipulację folderami, wyszukiwanie wiadomości oraz sprawdzanie pisowni. Do poprawnego działania wymaga bazy danych MySQL lub Postgres.

Po ukończonej konfiguracji nasz serwer:

  • będzie mógł otrzymywać i przechowywać wiadomości e-mail dla naszych użytkowników,
  • będzie zezwalał na wysyłanie wiadomości po uwierzytelnieniu (połączenie SSL lub nieszyfrowane),
  • będzie zezwalał na dostęp do skrzynek pocztowych przez protokół POP3 i IMAP (TLS lub nieszyfrowany),
  • zapewni dostęp do skrzynek pocztowych przez interfejs webowy.



Dane serwera użyte w artykule


Obsługiwana domena pocztowa: dom.pl
Adres sieciowy: 11.22.33.44
FQDN serwera pocztowego (IMAP/POP3/SMTP): mail.dom.pl

OS: Debian Lenny
Postfix w wersji 2.5.5
Dovecot w wersji 1.0.15
RoundCube Webmail w wersji 0.2.2

Spis Treści:


Postfix
Dovecot
Test SMTP POP3 i IMAP
Uwierzytelnianie SASL
Test uwierzytelniania
TLS/SSL
Format skrzynek pocztowych
Konta specjalne
RoundCube Webmail

Postfix


Postfix


Na początek instalujemy Postfixa:

# aptitude install postfix

Podczas instalacji uruchomi się konfigurator Postfixa, w którym jako typ konfiguracji wybieramy "Internet Site" oraz nazwę naszej domeny (dom.pl).

Obsługa TLS powinna być zawarta w zainstalowanej paczce postfix, jednak jeśli by jej nie było to instalujemy jeszcze paczkę postfix-tls.

Dodajemy użytkownika postfix do grupy mail:

# adduser postfix mail

Główny plik konfiguracyjny Postfixa znajduje się w /etc/postfix/main.cf. Drugim plikiem jest /etc/postfix/master.cf - znajduje się w nim konfiguracja procesów związanych z pocztą (w tej części nie będziemy go edytować).

Konfigurację Postfixa możemy również zmieniać poleceniem postconf -e, np. aby ustawić mydomain = dom.pl wydajemy polecenie "postconf -e mydomain=dom.pl" (wpis ten zostanie zmieniony w main.cf).

W pliku /etc/postfix/main.cf zmieniamy następujące parametry:

mydomain = dom.pl
myhostname = mail.dom.pl
myorigin = /etc/mailname
mydestination = $mydomain, $myhostname, localhost
relayhost =
mynetworks = 127.0.0.0/8 127.0.0.1/32 11.22.33.44/32

mydomain - domena, którą obsługujemy,
myhostname - nazwa hosta SMTP (nazwa ta będzie się pojawiać w nagłówku wiadomości),
myorigin - nazwa serwera, z której pochodzą wysyłane i odbierane lokalne wiadomości,
mydestination - pocztę kierowaną na te domeny odbiera nasz serwer (nie będzie jej przekazywał dalej),
relayhost - adres hosta, do którego ma trafić poczta jeśli zaadresowana jest poza naszą domenę (jeśli chcemy przekazywać całą pocztę przez ten jeden serwer),
mynetworks - lista zaufanych sieci (z których można wysyłać wiadomości bez dodatkowego uwierzytelniania), ostatni wpis to adres naszego serwera (różne demony z serwera będą mogły wysyłać e-maile).

Edytujemy plik /etc/mailname:

dom.pl


Od tego momentu mamy już funkcjonującą usługę SMTP i możemy wysyłać pocztę (z ograniczeniami, o czym później). Uruchamiamy Postfixa

# /etc/init.d/postfix restart

Tworzymy użytkownika do testów POP3/SMTP.

# adduser testmail

Dovecot


Dovecot


Użytkownicy mogą już przesyłać pocztę (na razie jedynie wewnętrzną). Brakuje nam jeszcze mechanizmów pobierania poczty ze skrzynek pocztowych. Do realizacji tego zadania wykorzystamy Dovecot - bezpieczny i lekki serwer POP3/IMAP. Instalujemy odpowiednie paczki:

# aptitude install dovecot-imapd dovecot-pop3d dovecot-common

Konfiguracja Dovecot znajduje się w pliku /etc/dovecot/dovecot.conf. Zmieniamy w nim następujące ustawienia:

protocols = pop3 imap
disable_plaintext_auth = no

protocols - jakie protokoły ma oferować Dovecot,
disable_plaintext_auth - bez tego użytkownicy programów pocztowych nie będą mogli się zalogować.

Uruchamiamy Dovecot:

# /etc/init.d/dovecot restart

Test SMTP POP3 i IMAP


Na początek przetestujemy nasz serwer lokalnie. Testujemy protokół odpowiedzialny za wysyłanie wiadomości - SMTP (Simple Mail Transfer Protocol) pracujący na porcie 25. Z serwera wysyłamy testową wiadomość do użytkownika testmail@dom.pl:

$ telnet mail.dom.pl 25
Trying 11.22.33.44...
Connected to mail.dom.pl.
Escape character is '^]'.
220 mail.dom.pl ESMTP Postfix (Debian/GNU)
EHLO dom.pl
250-mail.dom.pl
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
MAIL FROM:root@dom.pl
250 2.1.0 OK
RCPT TO:testmail@dom.pl
220 2.1.5 OK
DATA
354 End data with <CR><LF>.<CR><LF>
Test SMTP
.

250 2.0.0 Ok: queued as D770D12507C6
quit
221 2.0.0 Bye
Connection closed by foreign host.

e-mail powinien trafić do pliku /var/mail/testmail (skrzynka pocztowa użytkownika testmail).

Teraz sprawdzimy protokół odpowiedzialny za dostęp do skrzynek pocztowych - POP3 (Post Office Protocol version 3) pracujący na porcie 110. Sprawdzamy skrzynkę użytkownika testmail:

$ telnet mail.dom.pl 110
Trying 11.22.33.44...
Connected to mail.dom.pl.
Escape character is '^]'.
+OK Dovecot ready.
USER testmail
+OK
PASS mypass
+OK Logged in.
LIST
+OK 1 messages:
1 480
RETR 1
+OK 480 octets
Return-Path: <root@dom.pl>
X-Original-To: testmail@dom.pl
Delivered-To: testmail@dom.pl
Received: from dom.pl (mail [11.22.33.44])
    by mail.dom.pl (Postfix) with ESMTP id D770D12507C6
    for <testmail@dom.pl>; Sun, 2 Aug 2009 09:58:49 +0200 (CEST)
Message-Id: <20090802075859.D770D12507C6@mail.dom.pl>
Date: Sun, 2 Aug 2009 09:58:49 +0200 (CEST)
From: root@dom.pl
To: undisclosed-recipients:;

Test SMTP
.

Do sprawdzenia pozostał kolejny protokół zapewniający dostęp do skrzynek pocztowych - IMAP (Internet Message Access Protocol) pracujący na porcie 143. Jeśli korzystamy ze skrzynki z różnych komputerów to IMAP jest korzystniejszym protokołem od POP3. Skrzynka pocztowa na kliencie pocztowym (na komputerze użytkownika) jest synchronizowana ze skrzynką na serwerze zapewniając identyczną zawartość skrzynki na wszystkich komputerach (w przypadku POP3 wiadomości ściągnięte są usuwane z serwera a wysyłane nie są zapisywane na serwerze). IMAP zapewnia także tworzenie folderów w skrzynkach pocztowych i dowolne przenoszenie wiadomości do różnych folderów (na serwerze poprzez IMAP).

Sprawdzamy skrzynkę użytkownika testmail (tym razem przez IMAP):

$ telnet mail.dom.pl 143
Trying 11.22.33.44...
Connected to mail.dom.pl.
Escape character is '^]'.
* OK Dovecot ready.
1 login testmail mypass
1 OK Logged in.
2 list "" "*"
* LIST (\NoInferiors \UnMarked) "/" "INBOX"
2 OK List completed.
3 select "INBOX"
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft \*)] Flags permitted.
* 1 EXISTS
* 0 RECENT
* OK [UIDVALIDITY 1249570836] UIDs valid
* OK [UIDNEXT 2] Predicted next UID
3 OK [READ-WRITE] Select completed.
4 fetch 1 body[]
* 1 FETCH (BODY[] {480}
Return-Path: <root@dom.pl>
X-Original-To: testmail@dom.pl
Delivered-To: testmail@dom.pl
Received: from dom.pl (mail [11.22.33.44])
    by mail.dom.pl (Postfix) with ESMTP id D770D12507C6
    for <testmail@dom.pl>; Sun, 2 Aug 2009 09:58:49 +0200 (CEST)
Message-Id: <20090802075859.D770D12507C6@mail.dom.pl>
Date: Sun, 2 Aug 2009 09:58:49 +0200 (CEST)
From: root@dom.pl
To: undisclosed-recipients:;

Test SMTP
)
4 OK Fetch completed.
5 logout
* BYE Logging out
5 OK Logout completed.
Connection closed by foreign host.

Jeśli wszystkie testy lokalne przeszły pomyślnie (w razie jakichkolwiek problemów należy przejrzeć plik logów /var/log/mail.log) to skorzystamy z dowolnego klienta pocztowego na innej maszynie do przetestowania naszego serwera mailowego. Konfigurujemy na nim konto SMTP oraz POP3 lub IMAP. Do logowania używamy nazwy użytkownika bez domeny (testmail zamiast testmail@dom.pl).

Outlook Express


Thunderbird

Tak skonfigurowany klient powinien odbierać i wysyłać wiadomości przez nasz serwer. Na skrzynkę użytkownika testmail@dom.pl wszystkie wiadomości będą dostarczane bez problemów (zarówno z naszej domeny jaki i "z zewnątrz") a dzięki Dovecot możemy je pobierać na klienta pocztowego (POP3/IMAP).

Uwaga: Należy pamiętać, że na razie jesteśmy ograniczeni do wysyłania wiadomości w obrębie własnej domeny. Jeśli spróbujemy wysłać wiadomość poza naszą domenę otrzymamy błąd "Relay access denied".


Uwierzytelnianie SASL


Aby umożliwić wysyłanie wiadomości poza naszą domenę musimy skonfigurować SASL. Jest on używany do uwierzytelniania użytkowników przed wysłaniem wiadomości. Po udanej autoryzacji użytkownik może przesłać wiadomość. W ten sposób nasz serwer nie będzie otwartym serwerem SMTP dostępnym dla każdego (Open Relay).

Uwierzytelnianie SASL można skonfigurować na dwa sposoby. Pierwszym jest baza użytkowników systemowych (/etc/passwd) a drugim skorzystanie z odrębnej bazy danych (np. MySQL). W tym artykule przedstawię szczegółową konfigurację dla pierwszej metody.

W pliku konfiguracyjnym Dovecot (/etc/dovecot/dovecot.conf) odszukujemy sekcję auth default i w całości hashujemy lub zmieniamy jej nazwę na auth defaul2. Powyżej niej wstawiamy nową sekcję auth default:

auth default {
  mechanisms = plain login

  passdb pam {
  }

  userdb passwd {
  }

  user = root

  socket listen {
    client {
      path = /var/spool/postfix/private/auth
      mode = 0660
      user = postfix
      group = postfix
    }
  }
}

Uwaga: Zmiana nazwy auth default na auth default2 powoduje, że będziemy mieli aktywne dwie sekcje auth. Jeśli autoryzacja nie zostanie dopasowana w pierwszej sekcji sprawdzana będzie następna sekcja auth.


Restartujemy Dovecot:

# /etc/init.d/dovecot restart

Edytujemy plik konfiguracyjny Postfixa /etc/postfix/main.cf. Dodajemy/zmieniamy następujące wpisy (pamiętajmy, że konfigurację Postfixa możemy szybko zmieniać poleceniem postconf -e):

smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $mydomain
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth

smtpd_sasl_auth_enable - załączamy uwierzytelnianie (SMTP AUTH)
smtpd_sasl_local_domain - nazwa obszaru (realm) uwierzytelniania SASL (podajemy naszą domenę)
smtpd_recipient_restrictions - decydujemy kto może wysyłać wiadomości. Ważna jest kolejność wpisów.
Najpierw zezwalamy serwerowi na wysyłanie poczty jeśli użytkownik próbujący wysłać wiadomość znajduje się w sieci zdefiniowanej w mynetworks (permit_mynetworks),
następnie (jeśli pierwszy warunek nie był spełniony) zezwalamy na wysyłanie po uwierzytelnieniu (permit_sasl_authenticated),
kolejny wpis - jeśli serwer nie jest końcowym odbiorcą wiadomości RCPT TO nie znajduje się w mydestination) to nie zezwalamy na przesłanie poczty (reject_unauth_destination).
smtpd_sasl_security_options - nie zezwalamy na uwierzytelnianie anonimowe
smtpd_sasl_type - plugin SASL, którego Postfix powinien użyć do uwierzytelniania (lista typów dostępna jest przez polecenie postconf -a). Skorzystamy z SASL Dovecot.
smtpd_sasl_path - ścieżka do gniazda demona Dovecot odpowiedzialnego za uwierzytelnianie (odpowiada ścieżce w konfiguracji sekcji auth default w pliku /etc/dovecot/dovecot.conf)

Jeśli nasi użytkownicy koniecznie chcą korzystać ze starych programów pocztowych (niezgodnych z RFC 2554, np. Outlook Express 4), to musimy dodać:

broken_sasl_auth_clients = yes

Na zakończenie restartujemy Postfixa:

# /etc/init.d/postfix restart

Test uwierzytelniania


Sprawdzamy czy uwierzytelnianie SMTP AUTH funkcjonuje. Do uwierzytelniania wykorzystujemy mechanizm PLAIN. Hasło przesyłane jest zwykłym niezaszyfrowanym tekstem, jednak same dane uwierzytelniające musimy zakodować w systemie Base64. Aby wygenerować dane uwierzytelniające zakodowane Base64 dla naszego użytkownika "testmail" z hasłem "mypass" wydajemy polecenie:

$ perl -MMIME::Base64 -e 'print encode_base64("testmail\0testmail\0mypass")';

dGVzdG1haWwAdGVzdG1haWwAbXlwYXNz

Uwaga: Kodowanie Base64 to nie szyfrowanie przesyłanych danych uwierzytelniających. Jest to tylko inna interpretacja znaków. W przypadku podsłuchania pakietów z danymi uwierzytelniającymi można je bez problemu rozkodować. Zabezpieczenie danych uwierzytelniających zapewni nam dopiero zastosowanie TLS.


Mając dane uwierzytelniające (dGVzdG1haWwAdGVzdG1haWwAbXlwYXNz) możemy spróbować połączyć się z naszym serwerem SMTP i uwierzytelnić:

$ telnet mail.dom.pl 25
Trying 11.22.33.44...
Connected to mail.dom.pl.
Escape character is '^]'.
220 mail.dom.pl ESMTP Postfix (Debian/GNU)
EHLO dom.pl
250-mail.dom.pl
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
AUTH PLAIN dGVzdG1haWwAdGVzdG1haWwAbXlwYXNz
235 2.7.0 Authentication successful

Uwierzytelnianie przebiegło prawidłowo (235 2.7.0 Authentication successful).

Teraz w programach pocztowych w ustawieniach poczty wychodzącej należy zaznaczyć "Serwer wymaga uwierzytelnienia" (Outlook Express). Dane uwierzytelniające są takie same jak dla poczty przychodzącej:

Outlook Express

"Używaj identyfikatora użytkownika oraz hasła" (Thunderbird):

Thunderbird

Poczta może być już przesyłana na wszystkie adresy e-mail (oczywiście po pomyślnym uwierzytelnieniu).

TLS/SSL


Możemy zapewnić użytkownikom większe bezpieczeństwo szyfrując ich sesje. Usuwamy certyfikaty i klucze powstałe przy instalacji Postfixa i Dovecot:

# rm /etc/ssl/certs/dovecot.pem
# rm /etc/ssl/certs/ssl-cert-snakeoil.pem
# rm /etc/ssl/private/dovecot.pem
# rm /etc/ssl/private/ssl-cert-snakeoil.key

Teraz musimy wygenerować certyfikat dla naszego serwera pocztowego.

Uwaga: Podczas generowania certyfikatu ważne jest aby w polu Common Name (eg, YOUR name) podać FQDN naszego serwera mailowego (mail.dom.pl).


Certyfikat podpisany przez CA (Certificate Authority)

Generujemy certyfikat oczekujący na podpis (CSR) i klucz prywatny dla serwera pocztowego:

# openssl req -new -nodes -out /etc/ssl/certs/mail.csr -keyout /etc/ssl/private/mail.key

Certyfikat CSR (/etc/ssl/certs/mail.csr) wysyłamy do naszego CA, który odeśle nam podpisany certyfikat (CRT).

Mając własną infrastrukturę PKI, certyfikat możemy podpisać sami przez własne CA (zakładam, że certyfikat CA znajduje się w pliku /root/CA/ca.crt a klucz w /root/CA/ca.key):

# openssl x509 -req -in /etc/ssl/certs/mail.csr -out /etc/ssl/certs/mail.crt -md5 -CA /root/CA/ca.crt -CAkey /root/CA/ca.key -CAcreateserial -days 3650


Certyfikat self-signed

Jeśli nie posiadamy własnej jednostki certyfikującej (CA) i nie chcemy podpisywać certyfikatu przez zaufaną jednostkę to możemy wygenerować certyfikat podpisany przez samego siebie (self-signed):

# openssl req -new -x509 -days 3650 -nodes -out /etc/ssl/certs/mail.pem -keyout /etc/ssl/private/mail.key


Mając gotowy certyfikat (podpisany przez CA lub self-signed) możemy kontynuować.

Zabezpieczamy klucz prywatny:

# chmod 400 /etc/ssl/private/mail.key

W konfiguracji Postfixa /etc/postfix/main.cf zmieniamy:

smtpd_tls_security_level = encrypt
smtpd_tls_wrappermode = no
smtpd_tls_auth_only = yes
smtpd_tls_cert_file=/etc/ssl/certs/mail.crt # mail.crt lub mail.pem - w zależności od tego, który certyfikat posiadamy
smtpd_tls_key_file=/etc/ssl/private/mail.key

smtpd_tls_security_level - wymuszamy użycie szyfrowania (parametr ten zastępuje smtpd_use_tls i smtpd_enforce_tls)
smtpd_tls_wrappermode - wyłączamy tryb "wrapper". Jeśli go załączymy smtpd_tls_security_level zostanie zignorowany
smtpd_tls_auth_only - wymuszamy szyfrowane uwierzytelnianie
smtpd_tls_cert_file - certyfikat naszego serwera pocztowego
smtpd_tls_key_file - klucz prywatny naszego serwera pocztowego

Teraz w pliku /etc/dovecot/dovecot.conf zmieniamy POP3/IMAP na ich szyfrowane wersje oraz podajemy ścieżki do certyfikatu i klucza:

protocols = pop3s imaps
ssl_disable = no
ssl_cert_file = /etc/ssl/certs/mail.crt # mail.crt lub mail.pem - w zależności od tego, który certyfikat posiadamy
ssl_key_file = /etc/ssl/private/mail.key

Pozostało nam zrestartować Postfixa i Dovecot:

# /etc/init.d/postfix restart
# /etc/init.d/dovecot restart

Sprawdzamy czy SMTP oferuje TLS i zabrania logowania bez szyfrowania:

$ telnet mail.dom.pl 25
Trying 11.22.33.44...
220 mail.dom.pl ESMTP Postfix (Debian/GNU)
EHLO dom.pl
250-mail.dom.pl
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
AUTH PLAIN dGVzdG1haWwAdGVzdG1haWwAbXlwYXNz
530 5.7.0 Must issue a STARTTLS command first


Gdy klient łączy się z serwerem polecenie AUTH nie jest oferowane przez serwer. Zamiast tego serwer oferuje klientowi polecenie STARTTLS. Próba wydanie polecenia AUTH kończy się błędem - Must issue a STARTTLS command first.
Po wydaniu polecenia STARTTLS klient negocjuje połączenie TLS. Gdy połączenie zostanie wynegocjowane, klient po raz drugi wydaje polecenie EHLO i tym razem serwer oferuje polecenie AUTH (uwierzytelnianie będzie więc szyfrowane).

$ openssl s_client -connect mail.dom.pl:25 -starttls smtp
250 DSN
EHLO dom.pl
250-mail.dom.pl
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
AUTH PLAIN dGVzdG1haWwAdGVzdG1haWwAbXlwYXNz
235 2.7.0 Authentication successful

Sprawdzimy również połączenie szyfrowane IMAP:

$ openssl s_client -connect mail.dom.pl:993
* OK Dovecot ready.

Na klientach pocztowych należy zmienić opcje dotyczące zabezpieczeń, ustawiając dla SMTP (port 25) i POP3 (port 995)/IMAP (port 993) "Ten serwer wymaga bezpiecznego połączenia (SSL)" (Outlook Express):

Outlook Express

Dla Thunderbirda ustawienia SMTP załączamy przez - "Używaj połączenia szyfrowanego: TLS":

Thunderbird

oraz dla IMAP/POP3 - "Używaj bezpiecznego połączenia: SSL":

Thunderbird

Jeśli używamy certyfikatu podpisanego przez własne CA to należy dodać certyfikat CA (nie serwera pocztowego) do zaufanych wystawców certyfikatów.
  • Outlook Express: Narzędzia -> Opcje -> Zabezpieczenia -> Identyfikatory cyfrowe -> Zaufane główne urzędy certyfikacji -> Importuj -> wybieramy certyfikat naszego CA -> Dalej -> Zakończ
  • Thunderbird: Narzędzia -> Opcje -> Zaawansowane -> Certyfikaty -> Wyświetl certyfikaty -> Organy certyfikacji -> Importuj -> wybieramy certyfikat naszego CA -> zaznaczamy "Zaufaj temu CA przy identyfikacji witryn internetowych" -> OK

Jeśli używamy certyfikatu self-signed to podczas pierwszego łączenia klienta pocztowego z serwerem należy zaakceptować na stałe certyfikat naszego serwera pocztowego.

Po dostępie do skrzynki w logach /var/log/mail.log powinniśmy odnaleźć wpis świadczący o wykorzystaniu TLS:

dovecot: imap-login: Login: user=<testmail>, method=PLAIN, rip=11.22.33.55, lip=11.22.33.44, TLS

Aby serwer oferował połączenie szyfrowane lecz zezwalał także na połączenia nieszyfrowane musimy zmienić konfigurację SMTP i POP3/IMAP.

Dla SMTP w pliku /etc/postfix/main.cf zmieniamy:

smtpd_tls_security_level = may
smtpd_tls_auth_only = no

dla POP3/IMAP w pliku /etc/dovecot/dovecot.conf zmieniamy:

protocols = pop3 pop3s imap imaps

Jeśli chcemy dodatkowo zabezpieczyć protokół SMTP i zamienić go na SMTPS (SMTP z SSL) to w pliku /etc/postfix/master.cf usuwamy komentarze z linii:
smtps     inet  n       -       -       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING
oraz w konfiguracji klientów pocztowych zmieniamy połączenie na szyfrowane wybierając SSL/TLS na porcie 465.

Format skrzynek pocztowych


Skrzynki pocztowe mogą przechowywać wiadomości w dwóch formatach: Mbox lub Maildir.

Format Mbox korzysta z jednego pliku (zazwyczaj /var/mail/użytkownik). Przy każdej operacji na skrzynce pocztowej (zapis nowej wiadomości, odczyt, usuwanie, wyszukiwanie) plik ten jest blokowany aż do ukończenia operacji.

Zalety:
  • format uniwersalny,
  • dodawanie nowych wiadomości do skrzynki jest szybkie,
  • wyszukiwanie tekstu wewnątrz skrzynki jest szybkie (przeszukujemy pojedynczy plik).
Wady:
  • problemy związane z blokowaniem całej skrzynki pocztowej przy każdej operacji,
  • problemy w przypadku używania NFS (Network File System),
  • podatny na uszkodzenia całej skrzynki pocztowej (jeden plik).

Format Maildir jest nowym formatem opartym o pojedyncze pliki z wiadomościami. Struktura ta składa sie z katalogu głównego (zazwyczaj /home/użytkownik/Maildir), w którym znajdują się trzy katalogi: new, cur i tmp. Podczas otrzymywania wiadomości tworzony jest plik w katalogu tmp. Trafia do niego zawartość wiadomości. Następnie plik ten przenoszony jest do katalogu new. Przy pobieraniu wiadomości sprawdzany jest katalog new. Plik z pobraną wiadomością przenoszony jest do katalogu cur i odpowiednio oflagowany.

Zalety:
  • pobieranie i usuwanie wiadomości jest szybkie,
  • praktycznie nie wymaga blokowania plików,
  • może być używany w sieciowych systemach plików (NFS),
  • nie podatny na uszkodzenia skrzynki pocztowej (każda wiadomość w osobnym pliku).
Wady:
  • w przypadku dużej ilości wiadomości (plików) może okazać się wolniejszy niż Mbox (na niektórych systemach plików),
  • wyszukiwanie tekstu jest wolniejsze (wymaga otwierania/zamykania wszystkich plików z wiadomościami).

Domyślnie Postfix korzysta z formatu Mbox.

Jeśli chcemy używać formatu Maildir to w pliku konfiguracyjnym /etc/postfix/main.cf ustawiamy (ważny jest "/" na końcu ścieżki!):

home_mailbox = Maildir/

oraz jeśli mamy ustawiony parametr mailbox_command to go wyłączamy (domyślnie powinien być wyłączony):

mailbox_command =


Teraz w zależności od formatu ustawiamy globalną ścieżkę do skrzynek pocztowych w Dovecot (/etc/dovecot/dovecot.conf). Dla Mbox będzie to:

mail_location = mbox:~/mail:INBOX=/var/mail/%u

a dla Maildir:

mail_location = maildir:~/Maildir

restartujemy Postfixa i Dovecot:

# /etc/init.d/postfix restart
# /etc/init.d/dovecot restart

Konta specjalne


Zgodnie z dokumentami RFC (RFC 2142 zawiera nazwy skrzynek dla powszechnych usług, roli i funkcji) na serwerze pocztowym powinny być utrzymywane adresy specjalne, na które można zgłaszać wszelkie uwagi, błędy, informacje, itp. do administratorów. Ważniejszymi adresami są:
  • abuse@dom.pl - skrzynka do zgłaszania wszelkiego rodzaju nadużyć (np. rozsyłanie spamu z naszego serwera).
  • postmaster@dom.pl - skrzynka związana z funkcjonowanie poczty.
  • webmaster@dom.pl i www@dom.pl - skrzynka związana z serwerem webowym.
  • hostmaster@dom.pl - skrzynka administratora DNS.
  • ftp@dom.pl - skrzynka związana z funkcjonowaniem FTP.

Utworzenie osobnych kont pocztowych i sprawdzanie każdej z tych skrzynek z osobna jest bezcelowe. Można do tego celu utworzyć aliasy. Alias jest inną nazwą prowadzącą do konta.

Postfix przechowuje aliasy w pliku bazy /etc/aliases.db. Plik ten aktualizowany jest z pliku tekstowego /etc/aliases poleceniem newaliases lub postalias /etc/aliases.

W konfiguracji Postfixa musimy ustawić konfigurację aliasów:

alias_maps = hash:/etc/aliases


Aby dodać nowy alias edytujemy plik tekstowy /etc/aliases:

abuse: root
mailer-daemon: postmaster
postmaster: root
nobody: root
webmaster: root
www: root
hostmaster: root
ftp: root
noc: root
usenet: root
news: root
security: root
root: nasz_user

Utworzyliśmy w ten sposób aliasy prowadzące do konta root. Ostatni wpis przekieruje z kolei wszystkie maile kierowane do root na skrzynkę nasz_user. Osiągniemy w ten sposób trzy ważne cele:
  • wszystkie adresy specjalne będą kierowane na jedną skrzynkę pocztową
  • nie będziemy korzystać z konta root do odczytu wiadomości, wszystkie e-maile kierowane na skrzynkę root trafią do nasz_user@dom.pl
  • jeśli w przyszłości będziemy chcieli przekierować wszystkie powyższe wpisy na innego użytkownika będziemy musieli zmienić jedynie ostatnią linijkę.

Po edycji powyższego pliku musimy jeszcze tylko wygenerować jego hashowaną wersję (z której korzysta Postfix):

# newaliases

RoundCube Webmail


RoundCube


Zakładam, że serwer webowy (Apache wraz z PHP) i baza danych (MySQL) zostały już zainstalowane i skonfigurowane (Serwer LAMP).

Uwaga: Obecna wersja RoundCube (0.2.2) nie jest kompatybilny z PHP 5.3.0. Należy użyć PHP 5.2.10


Ze strony projektu pobieramy źródła RoundCube:

$ wget http://downloads.sourceforge.net/project/roundcubemail/roundcubemail/0.2.2/roundcubemail-0.2.2.tar.gz?use_mirror=dfn

Po rozpakowaniu przenosimy katalog w docelowe miejsce na serwerze www:

$ tar zxvf roundcubemail-0.2.2.tar.gz
# cp -r roundcubemail-0.2.2 /usr/local/apache2/htdocs/roundcube

RoundCube potrzebuje uprawnień zapisu w katalogach temp i logs:

# chgrp www-data /usr/local/apache2/htdocs/roundcube/temp
# chmod 770 /usr/local/apache2/htdocs/roundcube/temp
# chgrp www-data /usr/local/apache2/htdocs/roundcube/logs
# chmod 770 /usr/local/apache2/htdocs/roundcube/logs

Utworzymy teraz użytkownika MySQL (roundcubemailuser z hasłem mypass) i bazę danych dla RoundCube (roundcubemail):

/usr/local/mysql/bin/mysql -u root -p

CREATE DATABASE roundcubemail;
GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcubemailuser@localhost IDENTIFIED BY 'mypass';
FLUSH PRIVILEGES;
quit

W konfiguracji Apache (/usr/local/apache2/conf/httpd.conf) dodajemy katalog:

Alias /roundcube /usr/local/apache2/htdocs/roundcube
<Directory "/usr/local/apache2/htdocs/roundcube">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

Po zmianach restartujemy Apache:

/usr/local/apache2/bin/apachectl restart

Możemy teraz przejść do konfiguracji RoundCube wchodząc na naszą stronę http://www.dom.pl/roundcube/installer

Rozpoczynamy instalację przyciskiem "START INSTALLATION". Jeśli wszystkie wymagane moduły są dostępne to przechodzimy do instalacji przyciskiem "NEXT".

Uwaga: Jeśli chcemy korzystać z szyfrowania TLS/SSL to musimy mieć PHP skompilowany z parametrem --with-openssl (wówczas na stronie instalacji RoundCube pojawi się OpenSSL: OK)


Na kolejnym etapie instalacji najważniejsze są sekcje:

Database setup
Database server [localhost]
Database name [roundcubemail]
Database user name (needs write permissions) [roundcubemailuser]
Database password [mypass]

IMAP Settings
The IMAP host(s) chosen to perform the log-in [jeśli używamy SSL wpisujemy ssl://dom.pl jeśli nie to dom.pl. Pole to możemy pozostawić puste - wówczas podczas logowania trzeba będzie podawać także w dodatkowym polu nazwę domeny]
default_port [jeśli używamy SSL wpisujemy 993, jeśli nie to 143]

SMTP Settings
smtp_server [wpisujemy mail.dom.pl]
smtp_port [25]
smtp_user/smtp_pass [zaznaczamy "Use the current IMAP username and password for SMTP authentication"]

Po ustawieniu wszystkich opcji naciskamy przycisk "CREATE CONFIG". Otworzy się nowa strona, z której pobieramy dwa pliki main.inc.php oraz db.inc.php. Pliki te umieszczamy od razu w /usr/local/apache2/htdocs/roundcube/config/

Naciskamy przycisk "CONTINUE" (pod treścią plików konfiguracyjnych), przechodząc w ten sposób do inicjacji bazy danych.
Jeśli wszystko jest OK (poza DB Schema) to naciskamy przycisk "Initialize database". Po chwili baza danych powinna zostać zainicjowana:

DB Schema: OK
DB Write: OK
DB Time: OK

Na koniec możemy przetestować poprawność konfiguracji SMTP i POP3/IMAP (dolna część strony).

Po instalacji należy koniecznie usunąć katalog instalacyjny:

# rm -r /usr/local/apache2/htdocs/roundcube/installer


Możemy cieszyć się w pełni funkcjonującym serwerem pocztowym z interfejsem webowym dostępnym pod adresem http://www.dom.pl/roundcube.


   [ Drukuj ] [ Wyślij stronę ]

Komentarze

Dodaj komentarz!

wysłany przez: Rafal (gość) - Środa, 22 Luty 2012 21:27

Naprawdę rzetelnie napisany Turtorial.
Jeden błąd który znalazłem:
W komendzie SQL jest użytkownik roundcubeuser a w konfig webamila jest roundcubemailuser

Wszystko śmigaUśmiech)



wysłany przez: MindShifter - Piątek, 24 Luty 2012 16:55

Słuszne spostrzeżenie - błąd został poprawiony



wysłany przez: Bartek (gość) - Sobota, 28 Kwiecień 2012 02:44

Szkoda ze autor zapomnial wyswietlic zawartos pliku dovecot.conf.
Przy domyslnym pliku w dystrybucji archlinux nie ma w ogole wpisow auth passdb userdb i licho wie czego jeszcze przez co nawet korzystajac z w/w poradnika dovecot i tak nie zadziala.
A szkoda bo gdyby nie to to naprawde byby to ciekawy material.



wysłany przez: Ed (gość) - Środa, 14 Sierpień 2013 12:02

Hi,

Thank you for your nice page, very useful!
Recently I setup a homemade e-mail server and wrote a full detailed tutorial that you can find in

http://cosmolinux.no-ip.org/raconetlinux2/mail.html

using Debian Squeeze, Postfix, Dovecot, SASL, Spamassassin and Squirrel (and a Google account for SMTP relay).

I wish it is helpful to someone.



wysłany przez: impapimunse (gość) - Poniedziałek, 25 Wrzesień 2017 09:55

http://fjdhgksf76w444.com hi everyone



wysłany przez: impapimunse (gość) - Poniedziałek, 02 Październik 2017 11:19

http://fjdhgksf76w444.com hi everyone




Wszystkie obrazy, grafika, tekst oraz wszelkie inne treści reprezentowana na tej stronie (oprócz niektórych z działu Download) są chronione prawami autorskimi i są wyłączną własnością autora tej strony. Wszelkie przypadki użycia i/lub publikacji są zastrzeżone na całym świecie. Wszystkie zdjęcia i inne treści są wyraźnie nie w Domenie Publicznej. Żadne zdjęcia ani inne materiały na tej stronie nie mogą być kopiowana, przechowywana, poddawane manipulacji, publikowane, sprzedawane lub cytowane w całości lub w części w jakiejkolwiek formie bez uprzedniej pisemnej zgody upoważnionego przedstawiciela tej strony.

Jako materiał chroniony prawami autorskimi, wszystkie zdjęcia umieszczone na tej stronie chronione są zgodnie z międzynarodowym prawem autorskim.

All images, graphics, text, and all other content represented on this website (except for some of the Download section) are copyrighted and are the sole property of author of this website. All use and/or publication rights are reserved worldwide. All images and all other content are expressly not in the Public Domain. No images or other content on this website may be copied, stored, manipulated, published, sold or reproduced in whole or in part in any form without the prior written authorization of an authorized representative.

As copyrighted material, all images displayed on this site are protected under international copyright laws.

....:::: © 2004-2009 MindShifter ]:::::[ kontakt: Gadu-Gadu 2644644 ::::....