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:

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