Część 2. Instalacja, konfiguracja Dovecot.

1) Instalacja Dovecota oraz openssl (jeżeli wcześniej pakiet ten nie został zainstalowany, ponieważ za jego pomocą zaszyfrujemy dane połączeń itd.).

zypper in dovecot21 openssl

2) Stwórz kopię zapasową pliku konfiguracyjnego:

cd /etc/dovecot
cp dovecot.conf dovecot.conf.backup

3) Tworzymy początkowy plik konfiguracyjny wg wzorca:

doveconf -n > dovecot.conf-new
mv dovecot.conf-new dovecot.conf
(nie twórz od razu pliku dovecot.conf: doveconf -n > dovecot.conf, ponieważ wystąpią błędy dot. braku certyfikatów SSL).

4) Edytujemy plik (vi /etc/dovecot/dovecot.conf) i ustawiamy / dopisujemy następujące opcje:

mail_location = maildir:~/Maildir #lokalizacja skrzynek pocztowych
Przy takim ustawieniu mail_location usuwamy lub komentujemy całą sekcję namespace inbox (zaznaczona na czerono, ponieważ w tym przypadku nie będzie nam ona potrzebna):
namespace inbox {
  inbox = yes
  location =
  mailbox Drafts {
    special_use = Drafts
  }
  mailbox Junk {
    special_use = Junk
  }
  mailbox Sent {
    special_use = Sent
  }
  mailbox "Sent Messages" {
    special_use = Sent
  }
  mailbox Trash {
    special_use = Trash
  }
  prefix =
}

login_greeting = Mój serwer POP3 / IMAP #informacja przedstawiana przez dovecot-a po zalogowaniu (ustanowieniu sesji) POP3
listen = * #nasłuch na wszystkich interfejsach sieciowych
protocols = "imap pop3" #obsługiwane protokoły pocztowe
ssl = yes #włącz szyfrowanie ssl
ssl_cert = #ścieżka do certyfikatu – uwaga nie zapomnij na początku wpisu o znaku większości "<" w przeciwnym razie w logach zobaczysz następujące ostrzeżenia: "Can't load ssl_cert: There is no valid PEM certificate. (You probably forgot '<' from ssl_cert=</etc/dovecot/ssl/certyfikat.pem)"
ssl_key#ścieżka do klucza – uwaga nie zapomnij na początku wpisu o znaku większości "<"
disable_plaintext_auth = yes #wyłącz możliwość logowania za pomocą plain text (czysty tekst – nieszyfrowany).

Przykład konfiguracji z obsługą SSL:
konfiguracja_dovecot

5) Zapisz powyższą konfigurację. Teraz utworzymy certyfikat oraz klucz na który wskazuje w/w konfiguracja.
mkdir /etc/dovecot/ssl
cd /etc/dovecot/ssl
openssl req -new -x509 -nodes -out certyfikat.pem -keyout klucz.pem -days 365

Wprowadż dane dotyczące Twojej domeny, w szczególności zwróć uwagę na opcję
Common Name”, która ma wskazywać na nazwę Twojej domeny.

Country Name (2 letter code) [AU]:PL # kraj
State or Province Name (full name) [Some-State]:Malopolskie # województwo
Locality Name (eg, city) []:Krakow # miasto
Organization Name (eg, company) [Internet Widgits Pty Ltd]:PUP # nazwa naszej firmy
Organizational Unit Name (eg, section) []:INFORMATYKA # sekcja / dział firmy
Common Name (e.g. server FQDN or YOUR name) []:moja-domena.pl # nazwa domeny
Email Address []:pkania@moja-domena.pl # e-mail służący do kontaktów w sprawie certyfikatu

6) Sprawdzamy poprawność generacji klucza poleceniem:

openssl rsa -in klucz.pem -check

RSA key ok
writing RSA key

—–BEGIN RSA PRIVATE KEY—–

[…]

—–END RSA PRIVATE KEY—–

Jeżeli widzisz taki komunikat uznajemy, że klucz został wygenerowany poprawnie.

7) Sprawdźmy teraz informacje o certyfikacie:

openssl x509 -noout -text -in certyfikat.pem
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 14936448891954175623 (0xcf48ed216ab49e87)
    Signature Algorithm: sha1WithRSAEncryption
        Issuer: C=PL, ST=MALOPOLSKIE, L=MIECHOW, O=PUP, OU=INFORMATYKA, CN=moja-domena.pl/emailAddress=pkania@moja-domena.pl
        Validity
            Not Before: Aug  3 08:54:17 2015 GMT
            Not After : Aug  2 08:54:17 2019 GMT
        Subject: C=PL, ST=MALOPOLSKIE, L=KRAKOW, O=PUP, OU=INFORMATYKA, CN=moja-domena.pl/emailAddress=pkania@moja-domena.pl
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (1024 bit)
                Modulus:
                    […]
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Subject Key Identifier:
                […]
            X509v3 Authority Key Identifier:
                […]

            X509v3 Basic Constraints:
                CA:TRUE
    Signature Algorithm: sha1WithRSAEncryption
         […]

8) Wygląda, że wszystko jest OK. Uruchamiamy więc Dovecot-a i dodajemy go do autostartu:

service dovecot start
service dovecot status
chkconfig dovecot on

9) Dodatkowo możemy sprawdzić czy połączenia ssh mogą być wywoływane. Służy do tego polecenie: openssl s_client -connect localhost:pop3s (zamiast pop3s możesz również podać nr portu 995)

Jeżeli to polecenie nie wygenerowało błędów (jeżeli widzisz dane certyfikatu oraz napis "+OK Dovecot ready.") wszystko jest OK.

10) Możemy również przetestować możliwość utworzenia sesji nieszyfrowanej (jeżeli dopuszczamy taką możliwość) za pomocą następującego polecenia: telnet localhost 110
Trying ::1…
Connected to localhost.
Escape character is '^]'.
+OK Dovecot ready.
 

11) Teraz już możemy dodać pierwszych użytkowników, którzy będą korzystać z poczty na naszym serwerze:

useradd -m pkania

useradd -m test

ustawiamy im hasła: passwd pkania, passwd test

12) Testujemy możliwość logowania i sprawdzania maili (tekst pogrubiony jest tekstem, który wpisujemy):

openssl s_client -connect localhost:995

[…] +OK Dovecot ready.

user pkania

+OK

pass haslo
+OK Logged in.

stat #status
+OK 0 0
list #polecenie to pokazuje dostępne wiadomości w tym ich identyfikator. W tym momencie nie mam żadnych wiadomości dostarczonych do skrzynki użytkownika dlatego mam wartość 0 messages.

+OK 0 messages:
quit
+OK Logging out.
closed
 

13) Spróbujmy wysłać jakąś wiadomość za pomocą SMTP (wpisz polecenia, które zostały wyróżnione czcionką pogrubioną):

telnet localhost 25
Trying ::1…
Connected to localhost.
Escape character is '^]'.
220 mail.moja-domena.pl ESMTP
ehlo moja-domena.pl
250-mail.moja-domena.pl
250-PIPELINING
250-SIZE
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
mail from: pkania@moja-domena.pl
250 2.1.0 Ok
rcpt to: test@moja-domena.pl
250 2.1.5 Ok
data
354 End data with .
Subject: Test wysylki #enter
Testujemy wysylanie wiadomosci #enter
. #pamiętaj, aby na koncu wiadomości wstawić kropkę #enter
250 2.0.0 Ok: queued as 2E23E1C0F15 #wiadomosc dodana do kolejki dostarczenia z identyfikatorem 2E23E1C0F15
quit
221 2.0.0 Bye
Connection closed by foreign host.

14) Sprawdźmy, jakie wpisy dotyczące powyższej komunikacji zawiera log mail:

vi /var/log/mail

2015-08-03T12:56:43.993540+02:00 mail postfix/smtpd[3173]: connect from localhost[::1]
2015-08-03T12:57:23.189205+02:00 mail postfix/smtpd[3173]: 2E23E1C0F15: client=localhost[::1]
2015-08-03T13:02:41.693650+02:00 mail postfix/cleanup[3177]: 2E23E1C0F15: message-id=<20150803105723.2E23E1C0F15@mail.moja-domena.pl>
2015-08-03T13:02:41.696527+02:00 mail postfix/qmgr[3152]: 2E23E1C0F15: from=, size=377, nrcpt=1 (queue active)
2015-08-03T13:02:41.714802+02:00 mail postfix/local[3198]: 2E23E1C0F15: to=, relay=local, delay=328, delays=328/0.01/0/0.01, dsn=2.0.0, status=sent (delivered to maildir)
2015-08-03T13:02:41.715447+02:00 mail postfix/qmgr[3152]: 2E23E1C0F15: removed
2015-08-03T13:03:18.791574+02:00 mail postfix/smtpd[3173]: disconnect from localhost[::1]

Z powyższego wyciągu z loga wnioskujemy, że cały proces przeszedł poprawnie, wskazuje na to wpis status=sent (delivered to maildir).

15) W takim razie spróbujmy odczytać z poziomu konsoli tego maila:

openssl s_client -connect localhost:995

[…] +OK Dovecot ready.

user test
+OK
pass test
+OK Logged in.
stat
+OK 1 486
list
+OK 1 messages:
1 486
.
retr 1 #pokaż treść wiadomości o ID 1
+OK 486 octets
Return-Path:
X-Original-To: test@moja-domena.pl
Delivered-To: test@moja-domena.pl
Received: from moja-domena.pl (localhost [IPv6:::1])
        by mail.moja-domena.pl (Postfix) with ESMTP id 2E23E1C0F15
        for ; Mon,  3 Aug 2015 12:57:13 +0200 (CEST)
Subject: Test wysylki
Message-Id: <20150803105723.2E23E1C0F15@mail.moja-domena.pl>
Date: Mon,  3 Aug 2015 12:57:13 +0200 (CEST)
From: pkania@moja-domena.pl

Testujemy wysylanie wiadomosci
.
quit
+OK Logging out.
closed
 

 

Przewijanie do góry