Menu strony |
|
|
|
|
 |
|
Artykuły
| | | | Serwer pocztowy (Postfix + Dovecot + SASL + TLS/SSL + RoundCube Webmail)
Autor: Dariusz Jaskuła (MindShifter) | Niedziela, 09 Sierpień 2009 14:25
Postfix (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

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:
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:
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.
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).


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:

"Używaj identyfikatora użytkownika oraz hasła" (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):

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

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

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.
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!):
oraz jeśli mamy ustawiony parametr mailbox_command to go wyłączamy (domyślnie powinien być wyłączony):
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):
RoundCube Webmail

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ę ] | | | | |
KomentarzeDodaj 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 śmiga )
|
| | 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.
|
|