Postfix CentOS sistemoje: senasis diegimo vadovas su 2026 m. saugumo pastabomis
Paskelbimo data:
Atnaujinta:
Techniniai straipsniai > Postfix CentOS sistemoje: senasis diegimo vadovas su 2026 m. saugumo pastabomis
2026 m. būsena ir saugus naudojimas
Išvada: gamybinio pašto siuntimas nebaigtas, kai tik prasideda Postfix. Jai reikalinga palaikoma OS ir Postfix versija, teisinga DNS tapatybė, apribota perdavimo politika, autentifikuotas pateikimas, modernus TLS, sertifikato atnaujinimas, piktnaudžiavimo kontrolė, registravimas, eilių stebėjimas ir išbandytas pristatymas.
Ką išmoksite
- Kas buvo sukonfigūruota originalioje CentOS 7 / Postfix 2.10.1 apžvalgoje.
- Kodėl pateikimo autentifikavimas neturi atsitiktinai sukurti atviros perdavimo.
- Kokie TLS, SASL, DNS, ugniasienės ir operacijų sprendimai turi būti perkurti dabartiniam diegimui.
Kam tai skirta: administratoriams, vertinantiems paveldėtą „Postfix runbook“, o ne pradedantiesiems, ieškantiems kopijuoti ir įklijuoti viešojo pašto serverio.
2026 m. kontekstas: „CentOS 7“ ir nurodytos paketo versijos yra pasenusios. Toliau pateikta pasenusi konfigūracija nebuvo patvirtinta kaip saugi dabartinė pašto paslauga ir negali būti įdiegta nepakitusi; visų pirma patikrinkite, ar pateikimo apribojimai baigiasi aiškia atmetimo politika, apsaugokite kredencialus ir naudokite supakuotą sisteminę paslaugą, o ne sugalvokite neperžiūrėtą įrenginį.
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.
Tai pradinė konfigūravimo procedūra, kurios reikia norint įdiegti "Postfix" "CentOS" sistemoje ir ją paleisti. Informacija pagrįsta prielaida, kad naudojama "CentOS7". Norėtume tai nustatyti pateikimo uoste.
Jei taip pat diegiate "Dovecot", taip pat žr.
"Postfix" skirtas laiškams siųsti, o "Dovecot" - laiškams priimti. Jei reikia apdoroti siunčiamus el. laiškus, įdiekite "Postfix", o jei norite gauti el. laiškus, įdiekite "Dovecot".
Versijos yra šios.
| CentOS versija | 7.6 (1810) |
|---|---|
| "Postfix" versija | 2.10.1 |
Turinys
1. įdiegti
Šiame skyriuje aprašoma "Postfix" konfigūracija nuo įdiegimo iki paleidimo.
1-1. "Postfix" diegimas
Atlikite "Postfix" diegimą naudodami komandą yum. Darbą atlikite kaip root naudotojas.
[username@hostname ~]$ su -
[root@hostname ~]# yum -y install postfix
1-2. įkrovos juostos patikrinimas
Norėdami patikrinti, ar ji sėkmingai įdiegta, patikrinkite paleidimo režimą.
[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
Bet kuris procesas, veikiantis kaip postfix naudotojas, kaip aprašyta pirmiau, yra tinkamas. Sustabdyti.
[root@hostname ~]# /usr/sbin/postfix stop
2. Sąrankos informacija
2-1. iniciacija
Pradinė "Postfix" konfigūracija. Iš esmės "Postfix" konfigūracija aprašyta "/etc/postfix/main.cf", todėl pakeisime main.cf.
[root@hostname ~]# vi /etc/postfix/main.cf
Pakeisti taip.
#
#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", "mydomain" ir "myorigin" Tai su domenu susiję nustatymai. Dalis, pakeista į "example.com", turėtų būti nustatyta kaip serverio domeno vardas. "https://example.com/" dalis "example.com" yra domeno vardas.
El. pašto adresas yra username@example.com.
"mynetworks" yra su tinklu susijęs nustatymas. Tai IP adresas, kuriuo galima prisijungti prie postfix. Jei pašto serveris susietas su kitu serveriu, atitinkamai pakeiskite šią reikšmę.
"home_mailbox" yra el. pašto katalogas. Išsaugokite išsiųstą el. laišką.
2-2. OS naudotojas arba atmesti, jei neapibrėžta $alias_maps
Sukonfigūruokite el. laiškų siuntimo su OS naudotoju ir $alias_maps sąraše nurodytais naudotojais nustatymus. OS naudotojas yra naudotojas, pridėtas naudojant useradd.
[root@hostname ~]# vi /etc/postfix/main.cf
Pakeisti taip.
#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 =
Į main.cf pabaigą įtraukite šį įrašą.
### 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' turėtų būti nustatyti pagal aplinką. Nustatykite kelią, kuriame saugomas serverio sertifikatas.
SSL nustatymai reikalingi iš anksto, todėl jei nesate nustatę SSL nustatymų, pirmiausia atlikite SSL nustatymus. Atkreipkite dėmesį į toliau pateiktą informaciją.
Pradinė konfigūracija reikalinga nuo "Apache" įdiegimo "CentOS" sistemoje iki paleidimo.
2-3. "Postfix" pateikimo prievado nustatymai
Sukonfigūruokite el. laiškų siuntimo naudojant pateikimo prievadą nustatymus.
[root@hostname ~]# vi /etc/postfix/master.cf
Pastaba: Atkreipkite dėmesį, kad redaguojamas failas yra "master.cf", o ne "main.cf", todėl failų pavadinimai yra panašūs.
Pakeisti taip.
#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
Įdiekite SASL autentifikavimui reikalingas bibliotekas naudodami 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
Redaguokite saslauthd, kad autentifikavimui būtų naudojamos UNIX paskyros.
[root@hostname ~]# vi /etc/sysconfig/saslauthd
Pakeisti taip.
#MECH=pam
MECH=shadow
2-4. SASL įjungimas
Įjunkite SASL.
[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. įkrovos juostos patikrinimas
Patikrinkite, ar paleidžiamas "Postfix".
[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 procesas veikia kaip postfix naudotojas, kaip aprašyta pirmiau, vadinasi, konfigūracija baigta sėkmingai ir jis veikia. Patvirtinus paleidimo pradžią, laikas sustoti.
[root@hostname ~]# /usr/sbin/postfix stop
2-6. Automatinio paleidimo nustatymas
Galiausiai, nors tai nėra privaloma, sunku paleisti "Postfix" kiekvieną kartą perkraunant serverį, todėl įveskite nustatymą, kad "Postfix" būtų paleidžiamas automatiškai, kai paleidžiamas serveris. Ji taip pat registruojama į komandą systemctl. Atkreipkite dėmesį, kad ši procedūra skirta "CentOS7", todėl jei naudojate kitą nei "CentOS7" operacinę sistemą, turėsite naudoti komandą "Service".
Patikrinkite, ar egzistuoja '/usr/lib/systemd/system/postfix.service'. Jei jo nėra, sukurkite "postfix.service" naudodami šią procedūrą. Paleiskite kaip root naudotojas.
[root@hostname ~]# touch /etc/systemd/system/postfix.service
[root@hostname ~]# vi /etc/systemd/system/postfix.service
Pateikiama ši informacija.
[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
Tada užsiregistruokite naudodami komandą systemctl.
[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
Aprašėme pradinę konfigūraciją, kurios reikia įdiegiant "Postfix".
Jį nustatyti buvo gana sunku, todėl jei kuriate "Postfix", atkreipkite dėmesį į tai.
Dėkojame, kad žiūrėjote iki pabaigos.
Techniniai straipsniai
Peržiūrėkite visus techninius straipsnius.
Profilis
Peržiūrėkite autoriaus profilį.
Kontaktai