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ą.
„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 versija | 7.6 (1810) |
|---|---|
| "Postfix" versija | 2.10.1 |
| "Dovecot" versija | 2.2.36 |
Turinys
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:
#protocols = imap pop3 lmtp
~sutrumpinimas~
#listen = *, ::
~sutrumpinimas~
#login_greeting = Dovecot ready.
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:
service imap-login {
inet_listener imap {
#port = 143
}
~sutrumpinimas~
service pop3-login {
inet_listener pop3 {
#port = 110
}
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:
#disable_plaintext_auth = yes
~sutrumpinimas~
auth_mechanisms = plain
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:
#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 =
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:
ssl = required
~sutrumpinimas~
ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
ssl_key = </etc/pki/dovecot/private/dovecot.pem
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:
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 =
#}
#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ą.
Techniniai straipsniai
Peržiūrėkite visus techninius straipsnius.
Profilis
Peržiūrėkite autoriaus profilį.
Kontaktai