Dovecot CentOS sistemoje: istorinis IMAP ir POP3 vadovas bei saugos pastabos


Paskelbimo data:

Atnaujinta:


Techniniai straipsniai > Dovecot CentOS sistemoje: istorinis IMAP ir POP3 vadovas bei saugos pastabos

2026 m. būsena ir saugus naudojimas

Išvada: šiuolaikinė „Dovecot“ paslauga turi naudoti palaikomą paketą, galiojančius ir automatiškai atnaujinamus sertifikatus, privalomai šifruotą autentifikavimą, mažiausių teisių pašto saugyklą, tiksliai apribotą integraciją su „Postfix“ ir stebimus žurnalus. Įjunkite tik tuos protokolus, kurių iš tiesų reikia naudotojams.

Ką išmoksite

  • Ką bandė pateikti originali Dovecot 2.2/CentOS 7 konfigūracija.
  • Kaip susiję IMAP/POP3 klausytojai, TLS, autentifikavimo mechanizmai, pašto vietos ir Postfix SASL integravimas.
  • Kodėl autentifikavimo grynuoju tekstu nustatymai yra pavojingi, nebent šifravimas yra griežtai vykdomas prieš priimant kredencialus.

Kam tai skirta: pašto administratoriams, peržiūrintiems seną „Postfix“ ir „Dovecot“ diegimą. Tai nėra internetui paruoštų numatytųjų nustatymų receptas.

2026 m. kontekstas: toliau pateiktos senos versijos ir komandos paliktos kaip istorinis pavyzdys ir nepatvirtintos kaip saugi dabartinė konfigūracija. Nekopijuokite disable_plaintext_auth=no į gamybą, jei negalite užtikrinti TLS prieš priimant kredencialus. Jei nereikia senojo POP3 darbo modelio, teikite pirmenybę IMAP, bet abu protokolus visada apsaugokite TLS. Naudokite distribucijos pateiktą, peržiūrėtą systemd vienetą.

Saugos pastaba: pradiniame straipsnyje pateiktos komandos ir konfigūracijos pavyzdžiai nebuvo pakartotinai vykdomi dabartinėje gamybos aplinkoje. Prieš taikydami, patikrinkite palaikomas versijas, atsargines kopijas, prieigos valdiklius ir atšaukimo veiksmus atskiroje bandymo aplinkoje.

Pagrindiniai oficialūs šaltiniai

Apžvalga

Šiame straipsnyje išsaugota istorinė „Dovecot“ diegimo ir paleidimo „CentOS 7“ sistemoje procedūra. Pavyzdyje įjungiami IMAP bei POP3 klausytojai 143 ir 110 prievaduose ir nustatoma ssl = required. Tai nėra tas pats, kas aiškiai parodyti atskirus IMAPS 993 ir POP3S 995 prievadus: klientas įprastame prievade turi pereiti prie TLS prieš autentifikavimą.

Jei tame pačiame serveryje diegiate ir „Postfix“, pirmiausia peržiūrėkite jo atskirą konfigūravimo vadovą.

„Dovecot“ suteikia naudotojams prieigą prie jau pristatytų pašto dėžučių per IMAP ar POP3 ir gali teikti autentifikavimo paslaugą kitiems pašto komponentams. SMTP laiškų priėmimą bei perdavimą atlieka „Postfix“ ar kitas MTA.

Pradiniame pavyzdyje naudotos šios versijos:

CentOS versija7.6 (1810)
"Postfix" versija2.10.1
"Dovecot" versija2.2.36

Turinys

  1. Diegimas
  2. Sąrankos informacija
  3. Santrauka

1. Diegimas

Šiame skyriuje įdiegiamas „Dovecot“ paketas ir patikrinamas pradinis paleidimas.

1-1. "Dovecot" diegimas

Įdiekite „Dovecot“ naudodami yum. Komandai reikia root teisių.

[username@hostname ~]$ su -
[root@hostname ~]# yum -y install dovecot

1-2. Paleidimo patikrinimas

Paleiskite „Dovecot“ ir patikrinkite jo procesus. Ši istorinė dovecot komanda argumento start nereikalauja.

[root@hostname ~]# /usr/sbin/dovecot
[root@hostname ~]# ps aux | grep dovecot
root      1470  0.0  0.1  16092  1156 ?        Ss   18:38   0:00 /usr/sbin/dovecot
dovecot   1471  0.0  0.1   9752  1120 ?        S    18:38   0:00 dovecot/anvil
root      1472  0.0  0.1   9884  1320 ?        S    18:38   0:00 dovecot/log
root      1474  0.0  0.2  12916  2384 ?        S    18:38   0:00 dovecot/config
root      1476  0.0  0.0 112824   968 pts/0    R+   18:38   0:00 grep --color=auto dovecot

Jei matomi pagrindinis dovecot ir jo antriniai procesai, pradinis paleidimas pavyko. Baigę patikrą paslaugą sustabdykite.

[root@hostname ~]# /usr/sbin/dovecot stop

2. Sąrankos informacija

2-1. Pagrindinė konfigūracija

Pagrindiniame dovecot.conf faile parenkami protokolai, klausymosi adresai ir pasveikinimo tekstas.

[root@hostname ~]# vi /etc/dovecot/dovecot.conf

Istoriniame pavyzdyje keičiamos šios reikšmės:

dovecot.conf【Prieš pakeitimą】


#protocols = imap pop3 lmtp
~sutrumpinimas~
#listen =  *, ::
~sutrumpinimas~
#login_greeting = Dovecot ready.

dovecot.conf【po pakeitimo】


protocols = imap pop3
~sutrumpinimas~
listen = *
~sutrumpinimas~
login_greeting = pop3 and imap ready.

protocols nurodo, kurias prieigos paslaugas teikia „Dovecot“. Jei POP3 nereikalingas, jo neįjunkite.

listen apibrėžia vietinius adresus, kuriuose paslauga priima ryšius. Reikšmė * reiškia visas IPv4 sąsajas, o :: – IPv6. Apribokite klausymąsi iki tikrai reikalingų sąsajų ir papildomai naudokite ugniasienę. IPv6 neišjunkite vien dėl įpročio; arba saugiai sukonfigūruokite, arba sąmoningai išjunkite visoje architektūroje.

login_greeting yra tekstas, kurį klientas gauna užmezgęs ryšį. Produkto vardo slėpimas nėra esminė apsauga, todėl svarbiau atnaujinimai, TLS ir prieigos kontrolė.

2-2. POP3 ir IMAP nustatymai

Čia įjungiami standartiniai IMAP 143 ir POP3 110 prievadai. Tai nėra implicitinio TLS IMAPS 993 ir POP3S 995 klausytojai. Kad kredencialai nebūtų siunčiami atviru tekstu, ssl = required turi priversti klientą sėkmingai pradėti TLS dar prieš autentifikavimą.

[root@hostname ~]# vi /etc/dovecot/conf.d/10-master.conf

Istoriniame pavyzdyje prievadai įjungiami taip:

10-master.conf【Prieš pakeitimą】


service imap-login {
  inet_listener imap {
    #port = 143
  }
~sutrumpinimas~
service pop3-login {
  inet_listener pop3 {
    #port = 110
  }

10-master.conf【po pakeitimo】


service imap-login {
  inet_listener imap {
    port = 143
  }
~sutrumpinimas~
service pop3-login {
  inet_listener pop3 {
    port = 110
  }

2-3. Autentifikavimo mechanizmų nustatymai

10-auth.conf faile parenkami leidžiami autentifikavimo mechanizmai ir tai, ar priimamas paprastas slaptažodžio perdavimas be užtikrinto šifravimo.

[root@hostname ~]# vi /etc/dovecot/conf.d/10-auth.conf

Istoriniame pavyzdyje nustatyta:

10-auth.conf【Prieš pakeitimą】


#disable_plaintext_auth = yes
~sutrumpinimas~
auth_mechanisms = plain

10-auth.conf【po pakeitimo】


disable_plaintext_auth = no
~sutrumpinimas~
auth_mechanisms = login plain

Šio pakeitimo aklai nekopijuokite. PLAIN ir LOGIN mechanizmai nėra slaptažodžio šifravimas; jie saugūs tik tada, kai visas autentifikavimas vyksta patikimai patikrintu TLS ryšiu. disable_plaintext_auth = no panaikina papildomą apsaugą, todėl gamyboje palikite paprastą autentifikavimą uždraustą be TLS ir patikrinkite faktinį kliento ryšį.

2-4. Pašto saugyklos keitimas į Maildir formatą

Nustatykite Maildir saugyklą kiekvieno naudotojo namų kataloge, pavyzdžiui, /home/xxx/Maildir. Failų savininkas ir teisės turi neleisti vienam naudotojui pasiekti kito pašto.

[root@hostname ~]# vi /etc/dovecot/conf.d/10-mail.conf

Istoriniame pavyzdyje keičiama taip:

10-mail.conf【Prieš pakeitimą】


#mail_location =
~sutrumpinimas~
namespace inbox {
  # Namespace type: private, shared or public
  #type = private

  # Hierarchy separator to use. You should use the same separator for all
  # namespaces or some clients get confused. '/' is usually a good one.
  # The default however depends on the underlying mail storage format.
  #separator =

  # Prefix required to access this namespace. This needs to be different for
  # all namespaces. For example "Public/".
  #prefix =

  # Physical location of the mailbox. This is in same format as
  # mail_location, which is also the default for it.
  #location =

10-mail.conf【po pakeitimo】


mail_location = maildir:~/Maildir
~sutrumpinimas~
namespace inbox {
  # Namespace type: private, shared or public
  #type = private

  # Hierarchy separator to use. You should use the same separator for all
  # namespaces or some clients get confused. '/' is usually a good one.
  # The default however depends on the underlying mail storage format.
  #separator =

  # Prefix required to access this namespace. This needs to be different for
  # all namespaces. For example "Public/".
  #prefix =

  # Physical location of the mailbox. This is in same format as
  # mail_location, which is also the default for it.
  location = maildir:~/Maildir

2-5. TLS ir slaptažodžių tikrinimo nustatymai

10-ssl.conf faile reikalaukite TLS ir nurodykite sertifikato bei privataus rakto failus.

[root@hostname ~]# vi /etc/dovecot/conf.d/10-ssl.conf

Istoriniame pavyzdyje keičiami sertifikato keliai:

10-ssl.conf【Prieš pakeitimą】


ssl = required
~sutrumpinimas~
ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
ssl_key = </etc/pki/dovecot/private/dovecot.pem

10-ssl.conf【po pakeitimo】


ssl = required
~sutrumpinimas~
ssl_cert = </etc/pki/tls/certs/localhost.crt
ssl_key = </etc/pki/tls/private/localhost.key

ssl_cert ir ssl_key turi rodyti į pašto serverio sertifikatą ir jam priklausantį privatų raktą. Sertifikato vardas turi atitikti klientų naudojamą pašto serverio vardą, o raktas turi būti apsaugotas griežtomis failo teisėmis.

Prieš priimdami autentifikavimą paruoškite galiojantį TLS sertifikatą. Bendroji sertifikato sąvoka aptarta šiame straipsnyje, tačiau pašto protokolams vadovaukitės dabartine „Dovecot“ dokumentacija:

Apache HTTP serveris CentOS: diegimas ir saugus paleidimas


Tada auth-system.conf.ext faile pasirenkamas slaptažodžių tikrinimo šaltinis.

[root@hostname ~]# vi /etc/dovecot/conf.d/auth-system.conf.ext

Istoriniame pavyzdyje PAM pakeičiamas tiesioginiu shadow failo tikrinimu:

auth-system.conf.ext【Prieš pakeitimą】


passdb {
  driver = pam
  # [session=yes] [setcred=yes] [failure_show_msg=yes] [max_requests=<n>]
  # [cache_key=<key>] [<service name>]
  #args = dovecot
}
~sutrumpinimas~
#passdb {
  #driver = shadow
  # [blocking=no]
  #args =
#}

auth-system.conf.ext【po pakeitimo】


#passdb {
#driver = pam
  # [session=yes] [setcred=yes] [failure_show_msg=yes] [max_requests=<n>]
  # [cache_key=<key>] [<service name>]
  #args = dovecot
#}
~sutrumpinimas~
passdb {
  driver = shadow
  # [blocking=no]
  #args =
}

Tiesioginis shadow naudojimas susieja pašto prisijungimus su sistemos paskyromis ir reikalauja kruopščios teisių bei paskyrų politikos. Naujam diegimui rinkitės aiškiai suprojektuotą passdb šaltinį ir neleiskite pašto prieigos nereikalingoms sisteminėms paskyroms.

2-6. Paleidimo patikrinimas

Baigę konfigūruoti patikrinkite jos sintaksę, tada paleiskite „Dovecot“ ir peržiūrėkite procesus bei žurnalus. Šiai istorinei komandai argumento start nereikia.

[root@hostname ~]# /usr/sbin/dovecot
[root@hostname ~]# ps aux | grep dovecot
root      1716  0.0  0.1  16092  1184 ?        Ss   22:09   0:00 /usr/sbin/dovecot
dovecot   1717  0.0  0.1   9752  1120 ?        S    22:09   0:00 dovecot/anvil
root      1718  0.0  0.1   9884  1312 ?        S    22:09   0:00 dovecot/log
root      1720  0.5  0.2  12916  2396 ?        S    22:09   0:00 dovecot/config
root      1722  0.0  0.0 112824   972 pts/0    S+   22:09   0:00 grep --color=auto dovecot

Jei matomi pagrindinis procesas ir antriniai procesai, paslauga paleista, tačiau tai dar nepatvirtina TLS, autentifikavimo ar pašto dėžučių teisių. Išbandykite tikrą IMAP ar POP3 TLS ryšį ir tik tada laikykite konfigūraciją patikrinta. Baigę pradinę patikrą paslaugą sustabdykite.

[root@hostname ~]# /usr/sbin/dovecot stop

2-7. Automatinio paleidimo nustatymas

Kad „Dovecot“ būtų paleistas kartu su sistema, įjunkite distribucijos pateiktą systemd paslaugą. Toliau pateikta procedūra skirta „CentOS 7“.

Patikrinkite, ar yra /usr/lib/systemd/system/dovecot.service. Jei paketas vieneto nepateikė, pirmiausia išsiaiškinkite priežastį. Toliau išsaugotas pasirinktinio vieneto pavyzdys, tačiau gamyboje geriau naudoti tiekėjo prižiūrimą vienetą.

[root@hostname ~]# touch /etc/systemd/system/dovecot.service
[root@hostname ~]# vi /etc/systemd/system/dovecot.service

Istoriniame faile įrašyta ši konfigūracija:

[Unit]
#Aprašymas.
Description=Dovecot
#kontrolė prieš vykdymą ir po jo.
#Before=xxx.service
After = network.target

[Service]
#Vartotojo ir grupės paskyrimas
User=root
Group=root
#Suaktyvinus būseną, nustatykite būseną Aktyvuota.
Type=oneshot
RemainAfterExit=yes
#Paleiskite, sustabdykite ir perkraukite.
ExecStart=/usr/sbin/dovecot
ExecStop=/usr/sbin/dovecot stop
ExecReload=/usr/sbin/dovecot reload

[Install]
#3 lygmens lygiaverčiai nustatymai.
WantedBy=multi-user.target

Išsaugoję vienetą, įjunkite jį per systemctl. Jei failas ką tik sukurtas ar pakeistas, daemon-reload paprastai vykdomas prieš enable arba start.

[root@hostname ~]# systemctl enable dovecot
[root@hostname ~]# systemctl is-enabled dovecot
enabled
[root@hostname ~]# systemctl list-unit-files --type=service | grep dovecot
dovecot.service                                enabled
[root@hostname ~]# systemctl daemon-reload

3. Santrauka

Istoriniame pavyzdyje „Dovecot“ įdiegiamas, įjungiami IMAP ir POP3, nustatomas Maildir, TLS, sisteminių slaptažodžių tikrinimas ir automatinis paleidimas.

Naujam diegimui įjunkite tik būtiną protokolą, visus kredencialus priimkite tik per patikrintą TLS ryšį, nenaudokite disable_plaintext_auth = no kaip bendro sprendimo, apribokite pašto failų teises ir realiu klientu išbandykite sertifikatą bei autentifikavimą.