Postfix CentOS sistemoje: istorinis diegimo vadovas ir saugos pastabos
Paskelbimo data:
Atnaujinta:
Techniniai straipsniai > Postfix CentOS sistemoje: istorinis diegimo vadovas ir saugos pastabos
2026 m. būsena ir saugus naudojimas
Išvada: vien paleisti „Postfix“ neužtenka saugiai gamybinei pašto paslaugai. Reikia palaikomos OS ir „Postfix“ versijos, teisingų DNS įrašų, griežtos persiuntimo politikos, autentifikuoto submission prievado, šiuolaikinio TLS, sertifikatų atnaujinimo, apsaugos nuo piktnaudžiavimo, žurnalų, eilės stebėjimo ir realiai patikrinto pristatymo.
Ką išmoksite
- Kas buvo sukonfigūruota originalioje CentOS 7 / Postfix 2.10.1 apžvalgoje.
- Kodėl submission autentifikavimo nustatymai negali netyčia sukurti atviro persiuntimo serverio.
- Kokie TLS, SASL, DNS, ugniasienės ir operacijų sprendimai turi būti perkurti dabartiniam diegimui.
Kam tai skirta: administratoriams, vertinantiems paveldėtą „Postfix“ diegimo aprašą. Tai nėra kopijuoti ir tiesiogiai naudoti skirtas viešo pašto serverio receptas.
2026 m. kontekstas: „CentOS 7“ ir nurodyta „Postfix“ versija nebepalaikomos. Toliau pateikta sena konfigūracija nepatvirtinta kaip saugi dabartinei pašto paslaugai ir negali būti diegiama nepakeista. Ypač svarbu, kad submission apribojimai turėtų aiškią atmetimo taisyklę, kredencialai būtų apsaugoti, o paslauga naudotų distribucijos pateiktą 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ė „Postfix“ diegimo ir submission prievado konfigūravimo „CentOS 7“ sistemoje procedūra. Senas pavyzdys turi saugos ir sintaksės trūkumų, todėl greta paaiškinama, ką būtina peržiūrėti.
Jei tame pačiame serveryje diegiate ir „Dovecot“, žr. atskirą IMAP bei POP3 vadovą.
„Postfix“ yra pašto perdavimo agentas: jis priima, nukreipia ir pristato SMTP laiškus. „Dovecot“ teikia naudotojams prieigą prie pašto dėžučių per IMAP ar POP3 ir gali teikti autentifikavimo paslaugą. Vien jų įdiegimas dar nesukuria saugios bei patikimai pristatančios pašto sistemos.
Pradiniame pavyzdyje naudotos šios versijos:
| CentOS versija | 7.6 (1810) |
|---|---|
| "Postfix" versija | 2.10.1 |
Turinys
1. Diegimas
Šiame skyriuje įdiegiamas „Postfix“ paketas ir patikrinama, ar paleidžiami jo procesai.
1-1. "Postfix" diegimas
Įdiekite „Postfix“ naudodami yum. Komandai reikia root teisių.
[username@hostname ~]$ su -
[root@hostname ~]# yum -y install postfix
1-2. Paleidimo patikrinimas
Paleiskite „Postfix“ ir patikrinkite jo procesus.
[root@hostname ~]# /usr/sbin/postfix start
[root@hostname ~]# ps aux | grep postfix
root 1485 0.7 0.2 89744 2128 ? Ss 16:02 0:00 /usr/libexec/postfix/master -w
postfix 1486 0.2 0.4 89848 4080 ? S 16:02 0:00 pickup -l -t unix -u
postfix 1487 0.2 0.4 89916 4104 ? S 16:02 0:00 qmgr -l -t unix -u
root 1489 0.0 0.1 112824 964 pts/0 S+ 16:02 0:00 grep --color=auto postfix
Jei matomi master, pickup ir qmgr procesai, pradinis paleidimas pavyko. Baigę patikrą paslaugą sustabdykite.
[root@hostname ~]# /usr/sbin/postfix stop
2. Sąrankos informacija
2-1. Pagrindinė konfigūracija
Pagrindiniai „Postfix“ nustatymai saugomi /etc/postfix/main.cf. Prieš keisdami išsaugokite failo kopiją ir patikrinkite galutinę konfigūraciją postfix įrankiais.
[root@hostname ~]# vi /etc/postfix/main.cf
Istoriniame pavyzdyje keičiamos šios reikšmės:
#
#myhostname = host.domain.tld
#myhostname = virtual.domain.tld
~sutrumpinimas~
#
#mydomain = domain.tld
~sutrumpinimas~
#myorigin = $myhostname
#myorigin = $mydomain
~sutrumpinimas~
#inet_interfaces = all
#inet_interfaces = $myhostname
#inet_interfaces = $myhostname, localhost
inet_interfaces = localhost
~sutrumpinimas~
mydestination = $myhostname, localhost.$mydomain, localhost
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
# mail.$mydomain, www.$mydomain, ftp.$mydomain
~sutrumpinimas~
#mynetworks = 168.100.189.0/24, 127.0.0.0/8
#mynetworks = $config_directory/mynetworks
#mynetworks = hash:/etc/postfix/network_table
~sutrumpinimas~
#
#home_mailbox = Mailbox
#home_mailbox = Maildir/
#
myhostname = example.com
#myhostname = virtual.domain.tld
~sutrumpinimas~
#
mydomain = example.com
~sutrumpinimas~
#myorigin = $myhostname
myorigin = $mydomain
~sutrumpinimas~
inet_interfaces = all
#inet_interfaces = $myhostname
#inet_interfaces = $myhostname, localhost
#inet_interfaces = localhost
~sutrumpinimas~
#mydestination = $myhostname, localhost.$mydomain, localhost
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
# mail.$mydomain, www.$mydomain, ftp.$mydomain
~sutrumpinimas~
mynetworks = 127.0.0.0/8, 192.168.100.0/24
#mynetworks = $config_directory/mynetworks
#mynetworks = hash:/etc/postfix/network_table
~sutrumpinimas~
#
#home_mailbox = Mailbox
home_mailbox = Maildir/
myhostname nurodo visą pašto serverio vardą, mydomain – organizacijos domeną, o myorigin – domeną, pridedamą prie vietoje siunčiamų laiškų. Pavyzdžio https://example.com/ domene naudojama example.com dalis, tačiau realaus pašto serverio myhostname dažniausiai būtų atskiras pilnas vardas, pavyzdžiui, mail.example.com.
Pavyzdinis adresas yra username@example.com.
mynetworks apibrėžia patikimus klientų tinklus, kuriems leidžiama persiųsti laiškus be SASL autentifikavimo. Nurodykite tik savo valdomus, tikrai patikimus adresus; per platus diapazonas gali sukurti atvirą persiuntimo serverį.
home_mailbox = Maildir/ nurodo vietinio pristatymo formatą ir katalogą naudotojo namų kataloge. Tai susiję su gaunamų vietinių laiškų saugojimu, o ne su išsiųstų laiškų aplanku.
2-2. Vietinių gavėjų ir TLS nustatymai
local_recipient_maps tikrina, ar vietinis gavėjas atitinka sistemos naudotoją arba aliases duomenų bazės įrašą. Tai padeda atmesti laiškus neegzistuojantiems vietiniams gavėjams.
[root@hostname ~]# vi /etc/postfix/main.cf
Istoriniame pavyzdyje įjungiama ši reikšmė:
#local_recipient_maps = unix:passwd.byname $alias_maps
#local_recipient_maps = proxy:unix:passwd.byname $alias_maps
#local_recipient_maps =
local_recipient_maps = unix:passwd.byname $alias_maps
#local_recipient_maps = proxy:unix:passwd.byname $alias_maps
#local_recipient_maps =
Failo pabaigoje taip pat nustatoma laiško dydžio riba ir seni TLS parametrai:
### MAIL SIZE (20 MB.)
message_size_limit = 20971520
### TLS
smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/pki/tls/certs/localhost.crt
smtpd_tls_key_file = /etc/pki/tls/private/localhost.key
smtpd_tls_cert_file ir smtpd_tls_key_file turi rodyti į pašto serverio sertifikatą ir jam priklausantį privatų raktą. Raktą skaityti turi galėti tik būtini procesai, o sertifikato vardas turi atitikti klientų naudojamą pašto serverio vardą.
Prieš įjungdami submission paslaugą paruoškite patikimą TLS sertifikatą. Bendroji sertifikato kūrimo sąvoka aptarta šiame straipsnyje, tačiau pašto serverio protokolams ir politikai vadovaukitės dabartine „Postfix“ dokumentacija:
Apache HTTP serveris CentOS: diegimas ir saugus paleidimas
2-3. „Postfix“ submission prievado nustatymai
Submission prievadas skirtas autentifikuotam naudotojo pašto kliento laiškų pateikimui, o ne serverių tarpusavio SMTP srautui.
[root@hostname ~]# vi /etc/postfix/master.cf
Redaguojamas master.cf, o ne main.cf; šių panašiai pavadintų failų nesupainiokite.
Toliau paliktas istorinis pakeitimas:
#submission inet n - n - - smtpd
~sutrumpinimas~
#-o smtpd_sasl_auth_enable=yes
~sutrumpinimas~
#-o smtpd_client_restrictions=$mua_helo_restrictions
~sutrumpinimas~
#-o smtpd_sender_restrictions=$mua_sender_restrictions
~sutrumpinimas~
#-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
submission inet n - n - - smtpd
~sutrumpinimas~
-o smtpd_sasl_auth_enable=yes
~sutrumpinimas~
-o smtpd_client_restrictions=permit_sasl_authenticated
~sutrumpinimas~
-o smtpd_sender_restriction=permit_sasl_authenticated
~sutrumpinimas~
-o smtpd_recipient_restrictions=permit_sasl_authenticated
Šio pakeisto bloko nekopijuokite į gamybą. Jame smtpd_sender_restriction parašyta vienaskaita, o client ir recipient apribojimuose nėra galutinio reject. Vien permit_sasl_authenticated neužtikrina teisingos submission politikos. Sukurkite konfigūraciją pagal palaikomos „Postfix“ versijos SASL dokumentaciją, reikalaukite TLS ir po autentifikuotų klientų leidimo aiškiai atmeskite kitus.
Istoriniame „CentOS 7“ pavyzdyje SASL autentifikavimui skirtos bibliotekos įdiegiamos per yum.
[root@hostname ~]# yum -y install cyrus-sasl
[root@hostname ~]# yum -y install cyrus-sasl-plain
[root@hostname ~]# yum -y install cyrus-sasl-md5
[root@hostname ~]# yum -y install cyrus-sasl-devel
Tada saslauthd nustatomas autentifikuoti pagal UNIX paskyrų slaptažodžius. Šis shadow mechanizmas išplečia sistemos paskyrų riziką; naujam diegimui rinkitės aiškiai suprojektuotą tapatybių šaltinį ir neleiskite prisijungti nereikalingoms sisteminėms paskyroms.
[root@hostname ~]# vi /etc/sysconfig/saslauthd
Istoriniame faile nurodyta:
#MECH=pam
MECH=shadow
2-4. SASL įjungimas
Įjunkite saslauthd paslaugą. Po konfigūracijos pakeitimų ją taip pat paleiskite ir patikrinkite autentifikavimą atskiroje bandymo aplinkoje.
[root@hostname ~]# systemctl enable saslauthd
[root@hostname ~]# systemctl is-enabled saslauthd
enabled
[root@hostname ~]# systemctl list-unit-files --type=service | grep saslauthd
saslauthd.service enabled
[root@hostname ~]# systemctl daemon-reload
2-5. Paleidimo patikrinimas
Paleiskite „Postfix“ ir patikrinkite jo procesus. Prieš paleidimą taip pat verta vykdyti sintaksės bei konfigūracijos patikrą ir peržiūrėti žurnalus.
[root@hostname ~]# /usr/sbin/postfix start
[root@hostname ~]# ps aux | grep postfix
root 1838 0.0 0.1 89744 2080 ? Ss 18:14 0:00 /usr/libexec/postfix/master -w
postfix 1839 0.0 0.3 89848 3988 ? S 18:14 0:00 pickup -l -t unix -u
postfix 1840 0.0 0.3 89916 4008 ? S 18:14 0:00 qmgr -l -t unix -u
root 1845 0.0 0.0 112824 968 pts/0 S+ 18:15 0:00 grep --color=auto postfix
Jei matomi master, pickup ir qmgr procesai, paslauga veikia, tačiau tai dar nepatvirtina TLS, SASL, persiuntimo politikos ar pristatomumo. Baigę šią pradinę patikrą paslaugą sustabdykite.
[root@hostname ~]# /usr/sbin/postfix stop
2-6. Automatinio paleidimo nustatymas
Kad „Postfix“ 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/postfix.service. Jei vieneto nėra, pirmiausia išsiaiškinkite, kodėl jo nepateikė paketas. Toliau išsaugotas pasirinktinio vieneto pavyzdys, tačiau gamyboje geriau naudoti tiekėjo prižiūrimą vienetą.
[root@hostname ~]# touch /etc/systemd/system/postfix.service
[root@hostname ~]# vi /etc/systemd/system/postfix.service
Istoriniame faile įrašyta ši konfigūracija:
[Unit]
#Aprašymas.
Description=Postfix
#kontrolė prieš vykdymą ir po jo.
#Before=xxx.service
After=syslog.target network.target
[Service]
#Naudotojo 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/postfix start
ExecStop=/usr/sbin/postfix stop
ExecReload=/usr/sbin/postfix 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 postfix
[root@hostname ~]# systemctl is-enabled postfix
enabled
[root@hostname ~]# systemctl list-unit-files --type=service | grep postfix
postfix.service enabled
[root@hostname ~]# systemctl daemon-reload
3. Santrauka
Istoriniame pavyzdyje „Postfix“ įdiegiamas, nustatomi domenai, vietinis pristatymas, TLS, submission prievadas, SASL ir automatinis paleidimas.
Seno master.cf pakeitimo tiesiogiai nenaudokite: peržiūrėkite direktyvos pavadinimą, pridėkite aiškią atmetimo politiką, reikalaukite TLS ir patikrinkite, kad serveris netaptų atviru persiuntimo mazgu. Viešai pašto paslaugai taip pat būtini teisingi DNS bei reputacijos įrašai, stebėjimas, atnaujinimai ir bandymai.
Techniniai straipsniai
Peržiūrėkite visus techninius straipsnius.
Profilis
Peržiūrėkite autoriaus profilį.
Kontaktai